微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 到底是什么原因导致单片机端口的电平检测错误呢

到底是什么原因导致单片机端口的电平检测错误呢

时间:10-02 整理:3721RD 点击:

如题,小编的这个是用PIC12F675的单片机,,GP3端口检测电平高低,如果电平发生变化,则GP4H和GP5的输出互相复制,程序如下,,#define uchar unsigned char
#define uint unsigned int
uint TIME=0;
uint DATA=0;
uint  A=0;
uint  B=0;            
uint OGP3=0;
///中间有一段遥控接收的中断处理程序,,没问题就省略了//////
void main(void)
{
while(1)
{
   if (OGP3!=GPIO3)                 //如果我屏蔽了这个if语句,其他程序就OK了,             {
         A=GPIO5;
         B=GPIO4;
         GPIO4=A;
         GPIO5=B;        OGP3=GPIO3;
       }
}
}
问题是,这段程序会发生错乱,感觉就像是GP3的电平检测错误,,if语句不断循环执行,,我确定的用示波器观察过端口GP3的电平是很稳定的4.2V,,,
怎么会这样呢,我已经仔细对着数据手册,检查了每一个寄存器了,,同样的语句,我换到12F508就没问题,,但508没中断做不了红外遥控的解码,



GP3的电平检测应该是有错误,你这只做一件事情,单片机执行速度多快,你电平变化多块

while(1)放在最后可以么

你这一直检测,能稳定检测吗!

神人啊,,我按你的说法,,在while(1)里面加了一条延时语句,就OK了,,,
但为什么呢?单片机不是一直在运行啊,,难道连续检测电平变化就不行了吗?

谢谢你哦哦

谢谢
谢谢
谢谢
谢谢

最好在中断里面去操作;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top