love小飞象

    1. 家用遥控器的解码过程? 1/3106 51单片机 2012-04-10
      /******************************************/ /*红外遥控解码程序                                                  */ /******************************************/ #include /******************************************/ /*端口定义                                                                  */ /******************************************/ sbit p32=P3 ^ 2; /******************************************/ /*定时器1初始化                                                          */ /******************************************/ void T1_INIT() {         TMOD |= 0X10; } /******************************************/ /*稍小于9ms延时                                                          */ /******************************************/ void delay9ms() {         TH1 = (65535 - 8700) >> 8;         TL1 = (65535 - 8700) & 0XFF;         TF1 = 0;         TR1 = 1;         while(!TF1);        //等待延时完毕 } /******************************************/ /*稍大于4.5ms延时,与9ms相加稍大于13.5ms  */ /******************************************/ void delay5ms() {         TH1 = (65535 - 5000) >> 8;         TL1 = (65535 - 5000) & 0XFF;         TF1 = 0;         TR1 = 1;         while(!TF1);        //等待延时完毕 } /******************************************/ /*1ms延时                                                              */ /******************************************/ void delay1ms() {         TH1 = (65535 - 1000) >> 8;         TL1 = (65535 - 1000) & 0XFF;         TF1 = 0;         TR1 = 1;         while(!TF1);        //等待延时完毕 } /******************************************/ /*外部中断0初始化                                                  */ /******************************************/ void IT0_INIT() {         IT0 = 1;           //外中断0,下降沿触发         EX0 = 1;           //允许外中断0,外部中断0接收数据 }                /******************************************/ /*外部中断0处理程序                                                  */ /******************************************/ void IT0_ISR() interrupt 0 using 2 {         unsigned char a,b;         unsigned char table[4] = {0,0,0,0};         EX0 = 0;      //关外中断0,开始解码         delay9ms();         if(p32)       //9ms内出现高电平,干扰信号                 goto end;         if(!p32)      //9ms内一直为低电平,执行解码         {                 delay5ms();         //再延时5ms与9ms相加,跳过引导码,下一步解用户码及数据码                 for(a=0;a= 1;                //写1                                         table[a] |= 0x80;                                         delay1ms();                        //延时1ms,等待高电平结束                                 }                             else              //为0                                 {                                         table[a] >>= 1;           //写0                                         table[a] |= 0x00;                                 }                         }                 }                 IR_DATA = table[3];          //提取最后一字节作为按键区分标志         }         end: EX0 = 1;                          //解码结束,开外中断0 }
    2. 我用的GCC,我查到了,谢了!!!
    3. ARM开发全集 346/229924 ARM技术 2011-08-03
      顶,准备学习学习
    4. / Linux开发 2011-08-03
      楼主给力,收下了!

最近访客

< 1/1 >

统计信息

已有56人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言