找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1604|回复: 3
打印 上一主题 下一主题
收起左侧

用单片机+keil4仿真红外遥控中断问题

[复制链接]
跳转到指定楼层
楼主
ID:386216 发表于 2020-4-13 23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      我用STC89C52写一个红外接收程序,仿真软件是用keil4。程序编译通过了,下载到学习板发现可以进入外部中断(外部中断下降沿触发,中断程序是红外起始码是否正确的判断程序),用遥控测试,发现会触发外部中断,但起始码判断出问题跳出中断了。我对仿真调试不会。
问题如下:
用keil4怎么才能仿真外部红外中断,是点按钮start Debug后在调试过程可以跟学习板同步调试吗?
或者大佬们有视频的话请给我个链接
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:386216 发表于 2020-4-14 08:30 | 只看该作者
void Timer0IrqHandler(void) interrupt 1   //定时器0,采用11.0592M晶振。采用定时器方式2,TL0=246重复给到TH0
{
    time++;            
}

void IR_INT0()interrupt 0  //外部中断,也是红外接收头
{
        EX0=0;   //关闭外部中断

        text=5;
         if(IRIN==0)//外部中断脚,也是红外接收口
         {
           TL0=246;
                 time=0;
                 TR0=1;                     //打开T0定时器开始计算低电平时间
                 while(!IRIN&&(time<1100));//9毫秒低电平
                 TR0=0;                   //关闭T0
                 if(time<700||(time>1000))  //判断低电平时间跟9毫秒误差是否太大,太大则不往后执行
                 {
                         return;          //现在开发板测试到这里,程序就执行到return,怎么确定当前time值是多少
                 }
         }
         
         if(IRIN==1)
         {
            TL0=246;
                 time=0;
                 TR0=1;
           while(IRIN&&(time<550));
                 TR0=0;
                 if(time<300||(time>550))
                 {
                   return;
                 }                 
         }
         irok=1;//全局变量标志位,为1是红外起始码正确
       
  EX0=1;      //打开外部中断
}
回复

使用道具 举报

板凳
ID:277550 发表于 2020-4-14 09:28 | 只看该作者
中断的触发,只要没终止,就会在下一次中断时继续触发。。。。。。。。
回复

使用道具 举报

地板
ID:386216 发表于 2020-4-14 11:34 | 只看该作者
devcang 发表于 2020-4-14 09:28
中断的触发,只要没终止,就会在下一次中断时继续触发。。。。。。。。

进入中断程序后我有关中断了,中断程序要结束时候再打开外部中断的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表