本帖最后由 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没中断做不了红外遥控的解码,
神人啊,,我按你的说法,,在while(1)里面加了一条延时语句,就OK了,,,
但为什么呢?单片机不是一直在运行啊,,难道连续检测电平变化就不行了吗?
谢谢
谢谢
谢谢
谢谢
最好在中断里面去操作;
一周热门 更多>