外部中断(红外通信)

以前用来红外通信控制小车的程序

typedef unsigned char UCHAR8;
/* 
    初始化 指定下降沿触发 
    1 产生外部中断
    2 IRTime 对下降沿计数 将脉冲时序信号转为长度
      接收完成(irok==1)后,进行红外处理 Ircordpro() 将脉冲的长度转为编码值 >7 0 <7 1.一共32位四字节。
    3 码值处理
      红外处理好(irpro_ok==1)后,把遥控器按下的编码转换为对应的数字  如 fd03(fd前03后互补fd+03=256) 代表遥控器的暂停播放
    4 键值处理
 */
sbit IR=P3^2;  //红外接口标志 外部中断
bit irpro_ok,irok;
UCHAR8 IRcord[4];
UCHAR8 irdata[33];
while(1)//主循环
{
    if(irok)             //如果接收好了进行红外处理
    {   
        Ircordpro();
        irok=0;
    }
 
    if(irpro_ok)         //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等 如 fd03(fd前03后互补fd+03=256) 代表遥控器的暂停播放
    {
        Ir_work();
    }
}
/*-----外部中断0初始化----------*/
void EX0init(void)
{
    IT0 = 1;   //指定外部中断0下降沿触发,INT0 (P3.2)
    EX0 = 1;   //使能外部中断
    EA = 1;    //开总中断
}
void tim0_isr (void) interrupt 1 using 1
{
    irtime++;  //用于计数2个下降沿之间的时间
}
/*------外部中断0中断处理----------*/
 
void EX0_
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值