⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ircom.lst

📁 遥控解码通过电脑串口显示 /* 晶振:11.0569MHz */ #include <REGX52.h> #define uchar unsigned char uchar d
💻 LST
字号:
C51 COMPILER V8.15   IRCOM                                                                 07/08/2008 11:08:22 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE IRCOM
OBJECT MODULE PLACED IN ircom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ircom.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          /*    晶振:11.0569MHz              */
   4          #include <REGX52.h>
   5          #define uchar unsigned char
   6          uchar data    IRcode[4];   //定义一个4字节的数组用来存储代码
   7          uchar     CodeTemp;   //编码字节缓存变量
   8          uchar     i,j,k;    //延时用的循环变量
   9          sbit     IRsignal=P3^2;   //HS0038接收头OUT端直接连P3.2(INT0)
  10          /**************************延时0.9ms子程序**********************/
  11          void Delay0_9ms(void)
  12          {uchar j,k;
  13   1           for(j=18;j>0;j--)
  14   1             for(k=20;k>0;k--) ;
  15   1      }
  16          /***************************延时1ms子程序**********************/
  17          void Delay1ms(void)
  18          {uchar i,j;
  19   1         for(i=2;i>0;i--)
  20   1            for(j=230;j>0;j--) ;
  21   1      }
  22          /***************************延时4.5ms子程序**********************/
  23          void Delay4_5ms(void)
  24          {uchar i,j;
  25   1           for(i=10;i>0;i--)
  26   1            for(j=225;j>0;j--) ;
  27   1      }
  28          /**************************** 延时子程序 ************************/
  29          void Delay(void)
  30          {uchar i,j,k;
  31   1      for(i=200;i>0;i--)  
  32   1         for(j=200;j>0;j--)
  33   1            for(k=3;k>0;k--) ;
  34   1      }
  35          /************************中断0解码服务子程序**********************/
  36          void int0(void) interrupt 0 using 2       
  37          {
  38   1      EA=0;
  39   1      for(k=0;k<10;k++)
  40   1         {Delay0_9ms();
  41   2          if (IRsignal==1)         //如果0.9ms后IRsignal=1,说明不是引导码
  42   2         {k=10;break;}
  43   2          else if(k==9)           //如果持续了10×0.9ms=9ms的低电平,说明是引导码
  44   2            {while(IRsignal==0);
  45   3               Delay4_5ms();        //跳过持续4.5ms的高电平
  46   3      
  47   3            for(i=0;i<4;i++)       //分别读取4个字节
  48   3               {for(j=1;j<=8;j++)      //每个字节8个bit的判断
  49   4                      { while(IRsignal==0);       //等待上升沿
  50   5                        Delay0_9ms();      //从上升沿那一时刻开始延时0.9ms,再判断IRsignal
  51   5                        if(IRsignal==1)     //如果IRsignal是"1",则向右移入一位"1"
  52   5                          {Delay1ms();
  53   6                         CodeTemp=CodeTemp|0x80;
  54   6                         if(j<8) CodeTemp=CodeTemp>>1;
  55   6                        }
C51 COMPILER V8.15   IRCOM                                                                 07/08/2008 11:08:22 PAGE 2   

  56   5                        else
  57   5            if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
  58   5                       }
  59   4                    IRcode[i]=CodeTemp;
  60   4                    CodeTemp=0;
  61   4               }
  62   3          for(i=0;i<4;i++)        //通过串口将代码发出
  63   3                   { 
  64   4           SBUF=IRcode[i];
  65   4           while(!TI);       //等待一个字节发送完毕
  66   4           TI=0;
  67   4                   }
  68   3         Delay();
  69   3             }
  70   2         }
  71   1      EA=1;
  72   1      }
  73          /***********************串口初始化程序*********************/
  74          void initUart(void)
  75          {  
  76   1      TMOD|=0x20;
  77   1      SCON=0x50;
  78   1      PCON|=0x80;
  79   1      TH1=0xff;     //57600bps @ 11.0592MHz
  80   1      TL1=0xff;
  81   1      TR1=1;
  82   1      }
  83          /**************************主程序*************************/
  84          void main()
  85          { initUart();
  86   1      IT0=1;    //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
  87   1      EX0=1;    //外部中断INT0开, (1:开,      0:关    )
  88   1      EA=1;    //开所有中断
  89   1      CodeTemp=0;    //初始化红外编码字节缓存变量
  90   1      Delay();
  91   1      while(1);
  92   1      }
  93           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    226    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -