打印

请教PIC端口输入

[复制链接]
8426|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;设置成了弱上拉,还是不管用

使用特权

评论回复
5
shuidi_wangdan|  楼主 | 2013-1-21 09:41 | 只看该作者
ayb_ice 发表于 2013-1-21 09:04
把语句展开,调试,看具体是哪个引脚引起的

我刚才每个管脚都试了一下,其他管脚此时屏蔽掉了,但每个管脚还是可以使key_state_flag=1:我把WPUB|=0X1F;设置成了弱上拉,还是不管用

使用特权

评论回复
6
ayb_ice| | 2013-1-21 10:06 | 只看该作者
那就是基本IO设置都有问题

使用特权

评论回复
7
shuidi_wangdan|  楼主 | 2013-1-21 10:29 | 只看该作者
ayb_ice 发表于 2013-1-21 10:06
那就是基本IO设置都有问题

我的设置是按照例程设置的,看来PIC还真不简单啊

使用特权

评论回复
8
shuidi_wangdan|  楼主 | 2013-1-21 10:34 | 只看该作者
ayb_ice 发表于 2013-1-21 10:06
那就是基本IO设置都有问题

老师,你能否给介绍一下配置输入端口需要注意的问题,和需要配置的地方,谢谢

使用特权

评论回复
9
ayb_ice| | 2013-1-21 10:35 | 只看该作者
我都怀疑你IO不按键的时候是否是高电平

使用特权

评论回复
10
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)现象还是一样,

使用特权

评论回复
11
ayb_ice| | 2013-1-21 11:10 | 只看该作者
我好久没有用PIC的MCU了,

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

使用特权

评论回复
12
shuidi_wangdan|  楼主 | 2013-1-21 11:14 | 只看该作者
ayb_ice 发表于 2013-1-21 11:10
我好久没有用PIC的MCU了,

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

好的,谢谢你

使用特权

评论回复
13
shuidi_wangdan|  楼主 | 2013-1-21 11:54 | 只看该作者
哪位老师能给指点一下,学生感激不尽!

使用特权

评论回复
14
XIEYUANBIN| | 2013-1-21 12:44 | 只看该作者
0== KEY1?? 第一次看到这样写,不知道对不对。你把那个if 语句拆开写看看。

使用特权

评论回复
15
shuidi_wangdan|  楼主 | 2013-1-21 13:20 | 只看该作者
dwh000 发表于 2013-1-21 12:36
你那个标志初始赋值了吗?

初始化了,

使用特权

评论回复
16
shuidi_wangdan|  楼主 | 2013-1-21 13:20 | 只看该作者
XIEYUANBIN 发表于 2013-1-21 12:44
0== KEY1?? 第一次看到这样写,不知道对不对。你把那个if 语句拆开写看看。

拆开写过,现象是一样的,

使用特权

评论回复
17
shuidi_wangdan|  楼主 | 2013-1-21 13:23 | 只看该作者
我用的是PIC18F46K80的片子,

使用特权

评论回复
18
shuidi_wangdan|  楼主 | 2013-1-21 13:35 | 只看该作者
我把上拉电阻去掉以后,输出的电平为1.7V左右,这个电压正常吗?我考虑着与这个电压无关,因为是输入。

使用特权

评论回复
19
弓长月月鸟| | 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的芯片

使用特权

评论回复
20
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

粉丝