导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→中断服务程序执行后回不去了,不知道到哪里了?[dalenliu]

 *第19060篇: 中断服务程序执行后回不去了,不知道到哪里了?

  
楼 主:dalenliu 2004年2月9日16:34
 中断服务程序执行后回不去了,不知道到哪里了?
今天是遇到鬼了,at89c51执行外部中断0的服务程序后不知道到哪里去了,没法测试。有大师帮忙解决吗?
main(){
    init_serial();
    while(1){
             if(dyqq){
                  sendbyte(0x87);   //向上位机发送0x87
                  dyqq=0;    //bit 变量
             }
             p11=!p11;//p1^1脚
    }
}
void comm() interrupt 4 using 3{
          if(ti){ti=0;return;}
          sendbyte(sbuf);
         return;
}
void ext0() interrupt 0 using 2{
      tr0 =0;
      th0 =0;
      tl0 =0;
      count =0;   //计数器
     tr0 =1;      //开启定时器0
      return;
}
void timer0() interrupt 1 using 1{
     count++;
    if(count==0x05){
            tr0 =0;
             dyqq =1;
             sendbyte(0x03);//向上位机发送0x03
    }
}
init_serial(){
     tmod =0x21;
 th1  =0xfa;   //22mhz晶振
 tl1  =0xfa;
 th0  =0;
 tl0  =0;
 scon =0xf0;
 tr1  =1;  //启动定时器
 es  =1;  //串口中断允许
 et0  =1;  //定时器0中断允许
 it0  =1;  //下降沿触发。
 ex0  =1;  //外部中断0允许
 ea  =1;  //中断允许
}
现象是:每按一下外部中断都有0x03返回到上位机,说明外部中断和定时器中断都能进入执行,但是用示波器测试p1^1脚,开始有波形,按多次外部中断后就没有波形了,说明程序没有返回到while循环里来。请高手指点。

>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:哪位告诉我:哪里有ccs for 2000 下载

[下一篇主题]:[求助]