打印

求助:使用PORTB口作输入读到全是0的问题

[复制链接]
4786|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecd|  楼主 | 2010-5-31 22:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我使用16f887 的PORTB中的RB0/ RB1/ RB2 (IC的8/9/10)用作按键检测,端口开启内部上拉,也外挂外部上拉,用示波器看到引脚电压=电源电压,然而,读到的RB0的值是0,不是1.请教高手门,这是为什么?

当初怀疑是ICD的影响,使用软件仿真故障依旧,配置了关于PORTB口的相关寄存器,如下:

寄存器配置为:

RBPU=0;         
WPUB=0Xff;
ANSELH=0x00;
TRISB=0X07;

软件仿真后,系统特殊寄存器的值为



我使用的编译器是
PICC std 9.6
IDE 8.15.

读按键语句为:
if (RB0==0)
{
      key_c|=0x0001;   
}

请教高手:出现这个现象的原因是什么?是与PORTB端口相关的寄存器没有配置好吗?芯片更换过已经排除芯片损坏的问题.

不胜感激!!!
沙发
isbit| | 2010-6-1 10:57 | 只看该作者
不知你的程序配置为 数字输入口没有;

使用特权

评论回复
板凳
kfawj| | 2010-6-1 13:25 | 只看该作者
ANSELH
你配置一下这个寄存器试一下

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
elecd + 1
地板
elecd|  楼主 | 2010-6-2 08:38 | 只看该作者
问题找到了,感谢楼上两位.

因为在用硬件作输入的时候,忘记将ANSELH配置了.当用软件仿真的时候,虽然将内部上拉打开,PORTB寄存器显示的值并非引脚输入电压值,因PIC的IO是 读修改写的模式,所以PORTB寄存器显示为0,并不代表实际引脚为0.
后来配置ANSELH后.用硬件测试后,一切正常.

再次感谢楼上两位

使用特权

评论回复
5
y18370990546| | 2018-3-15 10:38 | 只看该作者
elecd 发表于 2010-6-2 08:38
问题找到了,感谢楼上两位.

因为在用硬件作输入的时候,忘记将ANSELH配置了.当用软件仿真的时候,虽然将内部 ...

ANSELH是什么,怎么配置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

40

帖子

1

粉丝