"); //-->
单片机中断函数中最好不要做数据或是发送等的处理,本人做的键盘中断函数原为:
void INT2_SVC2() interrupt 2
{
EA = 0;
if(INT3 == 0x00)
{
INT3 = 0x01;
ZLG7290_ReadReg2(ZLG7290_Key,&KeyValue); //读取键值
DispValue2(0,(KeyValue+28)); //向数码管写数据
sendKeynum(2,(KeyValue+28)); //RS485发送本次键码
Delay(30);
}
EA = 1;
}
程序调通后,仿真器和片子上都运行过,后来按键不能识别.仿真器重新调试,设置断点,发现可以执行到中断内部程序行,只是硬件没有任何反应.改成:
void INT2_SVC2() interrupt 2
{
EA = 0;
if(INT3 == 0x00)
{
FlagINT3 == 1=1;
}
EA = 1;
}
在主程序中实现功能:
Void main()
{
While(1)
{
i if(FlagINT3 == 1)
{
FlagINT3 = 0;
ZLG7290_ReadReg2(ZLG7290_Key,&KeyValue); //读取键值
DispValue2(0,(KeyValue+28)); //向数码管写数据
sendKeynum(2,(KeyValue+28)); //发送本次键码
}
}
}
此时可很好的实现各种功能.
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。