亿加合和智能车制作

标题: 按键问题,纠结好几天了 [打印本页]

作者: SPY。    时间: 2015-3-10 22:03
标题: 按键问题,纠结好几天了
按键一端接单片机,一端接地。
总共有4个按键,用了下面的程序,程序的现象是LED灯在闪,当有按键按下的时候,LED会亮,松手继续闪。

S1可以实现控制。但是!!!!S2,S3,S4却不可以,当把程序里的S1改成S2或者S3,S4的时候,LED闪了一下就一直亮着!!!!按键按下也是一直亮着。
一样的程序,为什么会出现不一样的现象
硬件没有问题,用万用表测过了,都是可以的。

PA口接的是LED..


#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define S1 PORTE_PE4            //按键
#define S2 PORTE_PE5
#define S3 PORTE_PE6
#define S4 PORTE_PE7
#define S1_dir DDRE_DDRE4
#define S2_dir DDRE_DDRE5
#define S3_dir DDRE_DDRE6
#define S4_dir DDRE_DDRE7   


void delay(uint z)
{

作者: 也许,太在意    时间: 2015-3-10 22:03
我遇到过类似的问题,按键有三个能用,另一个不能,而且初始化方式完全相同,用法也相同,但就是用不了。后来我发现:仅仅给单片机上电,程序还是原来的,发现不能使用的端口与其他三个的输出电压不同。至于原因我也不太确定,所以我就换了几个初始化后输出电压相同的IO口来使用。

作者: SPY。    时间: 2015-3-10 22:04
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define S1 PORTE_PE4
#define S2 PORTE_PE5
#define S3 PORTE_PE6
#define S4 PORTE_PE7
#define S1_dir DDRE_DDRE4
#define S2_dir DDRE_DDRE5
#define S3_dir DDRE_DDRE6
#define S4_dir DDRE_DDRE7   


void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)         
                for(y=110;y>0;y--);
}

void key()

{
S1=1;  
S2=1;
S3=1;
S4=1;
    S1_dir=0;
    S2_dir=0;
    S3_dir=0;
    S4_dir=0;
}


void main(void)
{
  DisableInterrupts;
  DDRA=0Xff;
  key()  ;
  EnableInterrupts;

  for(;;)
  {      
   PORTA=0Xff;
   delay(5000);
   PORTA=0X00;
   delay(5000);  
   
     if(S1==0)
     {
           delay(30);
           if(S1==0)
           {                     
             while(!S1)
             PORTA=0Xff;

           }      
     }   
   
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

作者: SPY。    时间: 2015-3-10 22:26
不要不鸟我啊:'(:'(我搞了好久的,真的不知道是什么原因了:'(:'(:'(
作者: 一叶飘零    时间: 2015-3-10 22:35
我也不懂
作者: 申继鹏    时间: 2015-3-11 10:23
你看下应该是引脚的问题,PE5,6,7可能与其他引脚有冲突,5,6,7好像是定时器,SPI的接口吧?如果是k60.还有,你按键的话最好要接上拉电阻
作者: SPY。    时间: 2015-3-11 17:08
也许,太在意 发表于 2015-3-11 10:17
我遇到过类似的问题,按键有三个能用,另一个不能,而且初始化方式完全相同,用法也相同,但就是用不了。后 ...

那要怎么确定每个端口输出的电压是多少??

作者: SPY。    时间: 2015-3-11 17:10
申继鹏 发表于 2015-3-11 10:23
你看下应该是引脚的问题,PE5,6,7可能与其他引脚有冲突,5,6,7好像是定时器,SPI的接口吧?如果是k60.还 ...

我试过用PB口还是不行,我是128的,应该不需要接上拉电阻吧?

作者: ︶▔丶沉醉    时间: 2015-3-11 17:12
,很客观结果
作者: 小小草    时间: 2015-3-11 22:19
你设置过那个控制引脚功能的寄存器了吗?

作者: SPY。    时间: 2015-3-12 23:12
小小草 发表于 2015-3-11 22:19
你设置过那个控制引脚功能的寄存器了吗?

程序就是我贴出来的那样。有个按键可以用,其他的不可以
作者: 小小草    时间: 2015-3-16 23:03
你设置过那个寄存器吗?有个寄存器控制输入输出口功能的,可能是那儿吧






欢迎光临 亿加合和智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2