STM8S读IDR老出错

[复制链接]
2572|5
 楼主| motor666 发表于 2013-8-12 14:13 | 显示全部楼层 |阅读模式
STM8S105F的PE7接一个安键对地。配置成上拉输入,用万用表侧PE7,当按键不按下,始终是5V,在程序头上定义:_Bool  KEY_IN    @ PE_IDR:7; 定时器中断中判断:if(KEY_IN==0){},结果读出的始终是0,观察寄存器窗口发现 PE_IDR的第7位却是1,认为上述布尔定义不管用,改用读整个IDR:
unsigned char  Read_PE ;
Read_PE = PE_IDR;
if((Read_PE&0x80)==0)
{}
这样处理后,大部分时候是正确的,但偶尔会出现错误,谁给个解释?




feilusia 发表于 2013-8-12 14:54 | 显示全部楼层
赋值来赋值去的干嘛?为什么不直接if((PE_IDR&0x80)==0)??
chuangpu 发表于 2013-8-12 19:24 | 显示全部楼层
在不断的重复赋值的问题上出了问题   我是这样理解的  楼主  
chuangpu 发表于 2013-8-12 19:25 | 显示全部楼层
尽量将需要的数值   一步到位   我感觉这样会比较靠谱  
 楼主| motor666 发表于 2013-8-15 10:19 | 显示全部楼层
感谢各位的回复,像这样if((PE_IDR&0x80)==0)直接判断依然没能解决问题,是否因为这个脚是模拟输入脚,用作数字输入是否要把模拟功能关闭,但是我不知道怎么关闭,如果知道可以试一下。
feilusia 发表于 2013-8-15 10:28 | 显示全部楼层
motor666 发表于 2013-8-15 10:19
感谢各位的回复,像这样if((PE_IDR&0x80)==0)直接判断依然没能解决问题,是否因为这个脚是模拟输入脚,用 ...

你电平可能没有拉高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

426

帖子

1

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