请教PIC端口输入

[复制链接]
 楼主| shuidi_wangdan 发表于 2013-1-21 09:01 | 显示全部楼层 |阅读模式
#define KEY1     PORTBbits.RB0
#define KEY2     PORTBbits.RB1
#define KEY3     PORTBbits.RB2
#define KEY4     PORTBbits.RB3
#define KEY5     PORTBbits.RB4

TRISBbits.TRISB0=1;
TRISBbits.TRISB1=1;
TRISBbits.TRISB2=1;
TRISBbits.TRISB3=1;
TRISBbits.TRISB4=1;
TRISBbits.TRISB5=1;

if(((0==KEY1)||(0==KEY2)||(0==KEY3)||(0==KEY4)||(0==KEY5)))
   {
       delay_ms(10);
      if(((0==KEY1)||(0==KEY2)||(0==KEY3)||(0==KEY4)||(0==KEY5)))                  
             key_state_标志寄存器=1;       
   }

为什么按键没有按下,key_state_标志寄存器就等于1了,感到很奇怪,我的配置没有错,而且每个管脚我都加了上拉电阻,请高手指点
ayb_ice 发表于 2013-1-21 09:04 | 显示全部楼层
把语句展开,调试,看具体是哪个引脚引起的
 楼主| shuidi_wangdan 发表于 2013-1-21 09:35 | 显示全部楼层
什么意思,我是新手,能详细点吗、谢谢
 楼主| shuidi_wangdan 发表于 2013-1-21 09:39 | 显示全部楼层
我刚才每个管脚都试了一下,都能使key_state_flag=1:我把WPUB|=0X1F;设置成了弱上拉,还是不管用
 楼主| shuidi_wangdan 发表于 2013-1-21 09:41 | 显示全部楼层
ayb_ice 发表于 2013-1-21 09:04
把语句展开,调试,看具体是哪个引脚引起的

我刚才每个管脚都试了一下,其他管脚此时屏蔽掉了,但每个管脚还是可以使key_state_flag=1:我把WPUB|=0X1F;设置成了弱上拉,还是不管用
ayb_ice 发表于 2013-1-21 10:06 | 显示全部楼层
那就是基本IO设置都有问题
 楼主| shuidi_wangdan 发表于 2013-1-21 10:29 | 显示全部楼层
ayb_ice 发表于 2013-1-21 10:06
那就是基本IO设置都有问题

我的设置是按照例程设置的,看来PIC还真不简单啊
 楼主| shuidi_wangdan 发表于 2013-1-21 10:34 | 显示全部楼层
ayb_ice 发表于 2013-1-21 10:06
那就是基本IO设置都有问题

老师,你能否给介绍一下配置输入端口需要注意的问题,和需要配置的地方,谢谢
ayb_ice 发表于 2013-1-21 10:35 | 显示全部楼层
我都怀疑你IO不按键的时候是否是高电平
 楼主| shuidi_wangdan 发表于 2013-1-21 10:51 | 显示全部楼层
ayb_ice 发表于 2013-1-21 10:35
我都怀疑你IO不按键的时候是否是高电平

我测量过管脚的电压是5V,芯片资料我也看了好几遍,没找到问题在哪里,然后修改了一下语句(1==KEY1)||(1==KEY2)||(1==KEY3)||(1==KEY4)||(1==KEY5)现象还是一样,
ayb_ice 发表于 2013-1-21 11:10 | 显示全部楼层
我好久没有用PIC的MCU了,

你是不是口搞错了,仔细检查一下
 楼主| shuidi_wangdan 发表于 2013-1-21 11:14 | 显示全部楼层
ayb_ice 发表于 2013-1-21 11:10
我好久没有用PIC的MCU了,

你是不是口搞错了,仔细检查一下

好的,谢谢你
 楼主| shuidi_wangdan 发表于 2013-1-21 11:54 | 显示全部楼层
哪位老师能给指点一下,学生感激不尽!
XIEYUANBIN 发表于 2013-1-21 12:44 | 显示全部楼层
0== KEY1?? 第一次看到这样写,不知道对不对。你把那个if 语句拆开写看看。
 楼主| shuidi_wangdan 发表于 2013-1-21 13:20 | 显示全部楼层
dwh000 发表于 2013-1-21 12:36
你那个标志初始赋值了吗?

初始化了,
 楼主| shuidi_wangdan 发表于 2013-1-21 13:20 | 显示全部楼层
XIEYUANBIN 发表于 2013-1-21 12:44
0== KEY1?? 第一次看到这样写,不知道对不对。你把那个if 语句拆开写看看。

拆开写过,现象是一样的,
 楼主| shuidi_wangdan 发表于 2013-1-21 13:23 | 显示全部楼层
我用的是PIC18F46K80的片子,
 楼主| shuidi_wangdan 发表于 2013-1-21 13:35 | 显示全部楼层
我把上拉电阻去掉以后,输出的电平为1.7V左右,这个电压正常吗?我考虑着与这个电压无关,因为是输入。
弓长月月鸟 发表于 2013-1-21 13:53 | 显示全部楼层
if(((0==KEY1)||(0==KEY2)||(0==KEY3)||(0==KEY4)||(0==KEY5)))
这句话是不是该写成
if((0==KEY1)||(0==KEY2)||(0==KEY3)||(0==KEY4)||(0==KEY5))
楼主试试看啊。小弟没有用过18的芯片
 楼主| shuidi_wangdan 发表于 2013-1-21 14:15 | 显示全部楼层
弓长月月鸟 发表于 2013-1-21 13:53
if(((0==KEY1)||(0==KEY2)||(0==KEY3)||(0==KEY4)||(0==KEY5)))
这句话是不是该写成
if((0==KEY1)||(0==KEY ...

我那里改过来了,还是不行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奇葩满天下,不分你我他! 奋斗!https://bbs.21ic.com/static/image/smiley/chubby/17.gif[/url]

65

主题

549

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部