新闻  |   论坛  |   博客  |   在线研讨会
中断不响应
mayer | 2009-05-22 18:39:54    阅读:1663   发布文章

中断不响应

 

单片机中断函数中最好不要做数据或是发送等的处理,本人做的键盘中断函数原为:

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));                    //发送本次键码

}

 }

}

 

此时可很好的实现各种功能.

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客