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

2019-07-15 14:01发布

本帖最后由 wcm014 于 2016-5-11 13:41 编辑

如题,楼主的这个是用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没中断做不了红外遥控的解码,







友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
3w工程师
1楼-- · 2019-07-15 19:14
GP3的电平检测应该是有错误,你这只做一件事情,单片机执行速度多快,你电平变化多块 最佳答案
1242108829
2楼-- · 2019-07-16 00:41
 精彩回答 2  元偷偷看……
3w工程师
3楼-- · 2019-07-16 02:53
你这一直检测,能稳定检测吗!
wcm014
4楼-- · 2019-07-16 03:47
本帖最后由 wcm014 于 2016-5-11 15:41 编辑
3w工程师 发表于 2016-5-11 13:10
GP3的电平检测应该是有错误,你这只做一件事情,单片机执行速度多快,你电平变化多块

神人啊,,我按你的说法,,在while(1)里面加了一条延时语句,就OK了,,,
但为什么呢?单片机不是一直在运行啊,,难道连续检测电平变化就不行了吗?
3w工程师
5楼-- · 2019-07-16 06:13
谢谢你哦哦


谢谢
谢谢
谢谢
谢谢
3w工程师
6楼-- · 2019-07-16 11:12
wcm014 发表于 2016-5-11 13:53
神人啊,,我按你的说法,,在while(1)里面加了一条延时语句,就OK了,,,
但为什么呢?单片机不是一直在运行啊,,难道连续检测电平变化就不行了吗?

最好在中断里面去操作;

一周热门 更多>