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

📄 main.lst

📁 RM-D红外遥控解码C语言程序
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  04/14/2007 08:25:46 PAGE 1   


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

line level    source

   1          #include "STC89C51RC.H"
   2          
   3          sbit DQ = P4^3;
   4          sbit SPK = P1^0;
   5          
   6          
   7          #include <absacc.h>
   8          
   9          #define seg1 XBYTE[0xffec]
  10          #define seg2 XBYTE[0xffed]
  11          #define seg3 XBYTE[0xffee]
  12          #define seg4 XBYTE[0xffef]
  13          unsigned char IRMcode[4];
  14          
  15          unsigned char code ledmap[]=    //共阴LED数码管译码表
  16          {       
  17                  0x3f,0x06,0x5b,0x4f,0x66,       //0,1,2,3,4,
  18                  0x6d,0x7d,0x07,0x7f,0x6f,       //5,6,7,8,9,            
  19                  0x77,0x7C,0x39,0x5E,0x79,       //A,b,C,d,E,
  20                  0x71,                                           //F,
  21          };
  22          
  23          void delay(unsigned int);
  24          
  25          void main()
  26          {
  27   1              EA = 1;
  28   1              EX2 = 1;                
  29   1              while(1)
  30   1              {
  31   2              
  32   2                      if (IRMcode[2]==~IRMcode[3]){           
  33   3                              seg1 = ~ledmap[IRMcode[2]/100];
  34   3                              seg2 = ~ledmap[IRMcode[2]/10%10];
  35   3                              seg3 = ~ledmap[IRMcode[2]%10];
  36   3                              seg4 = 0xff;//熄灭
  37   3                      }       
  38   2              }
  39   1      }
  40          
  41          void Sound(void)
  42          {
  43   1              SPK = 0;
  44   1              delay(10000);
  45   1              SPK = 1;
  46   1      }
  47          
  48          void IRMint(void) interrupt 6  using 2
  49          {
  50   1              unsigned char count;
  51   1              unsigned int count1;
  52   1              unsigned char i,j;      
  53   1              EA = 0; 
  54   1              count = 9;
  55   1              while(--count)
C51 COMPILER V8.02   MAIN                                                                  04/14/2007 08:25:46 PAGE 2   

  56   1              {
  57   2                      delay(100);//440us
  58   2                      if(DQ){EA = 1;return;}
  59   2              }
  60   1              while(DQ==0);//通过引导码余下的低电平
  61   1              //以上完成引导码4.5ms的低电平检测
  62   1              
  63   1              count = 9;
  64   1              count1 = 0;
  65   1              while(--count)
  66   1              {
  67   2                      delay(100);//440us
  68   2                      if(DQ==0){EA = 1;return;}
  69   2              }
  70   1              while(DQ==1)//通过引导码余下的高电平
  71   1              { 
  72   2                      if(count1++>1000) {
  73   3                              P1=0x55;EA = 1;return;}
  74   2              }
  75   1              //以上完成引导码4.5ms的高电平检测
  76   1              
  77   1              count1 = 0;
  78   1              for(j=0;j<4;j++)//有效字节数设定
  79   1              {
  80   2                      for(i=0;i<8;i++)//字节bit数
  81   2                      {
  82   3                              while(DQ==0);//通过编码低电平
  83   3                              delay(200);//延时判断编码高电平维持长度
  84   3                              IRMcode[j]<<=1;
  85   3                              if(DQ)IRMcode[j]|=0x01;
  86   3                              while(DQ==1){//通过编码余下的高电平
  87   4                                      if(count1++>2000){EA = 1;return;}       
  88   4                              }
  89   3                      }
  90   2              }
  91   1                      
  92   1              Sound();                
  93   1              EA = 1;
  94   1      }       
  95          
  96          //通用延时函数
  97          //22.1184,10 = 48.4 us (5us+43.4)
  98          //22.1184,100 = 439 us (43.4*10+5)
  99          //22.1184,1000 = 4345 us(43.4*100+5)
 100          //22.1184,10000 = 43450 us(43.45*1000+5)
 101          void delay(unsigned int t)
 102          {                          
 103   1              while(--t);     
 104   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    299    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       5
   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 + -