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

📄 hongwai.lst

📁 大家好
💻 LST
字号:
C51 COMPILER V7.50   HONGWAI                                                               06/02/2007 20:24:15 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //此程序用来显示红外遥控的键码值 包括8位系统识别码及其反码 8位数据码及其反码
   2          #include <reg51.h>
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          
   6          uchar   TH0_BUF=0;     //定义定时器时间缓冲
   7          uchar   TL0_BUF=0;
   8          uchar   INT0_TIMES=0;  //定义中断次数
   9          uchar   RCV_NUM=0;     //接收的数据是第几位
  10          uint    RH_CODE=0;         //定义接收码高位
  11          uint    RL_CODE=0;         //定义接收码低位
  12          bit   START_FLAG=0;    //定义接收数据开始标志位
  13          bit   RCV_BIT_FLAG=0;  //定义位接收标志位 1 表示接收成功
  14          bit   RCV_SUS_FLAG=0;  //定义字接收标志位 1 表示接收成功
  15          
  16          char code disp[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0x30,0x25,0x67,0x23,0x64,0x74};
  17          //                  0    1    2    3    4    5    6    7    8    9    a    b   c    d    e    f    
  18          
  19          //char code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x8e,0xff,0x00};
  20          //                  0    1    2    3    4    5    6    7    8    9   -    f    空   显
  21          
  22          char i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0; //显示缓冲 其中i0为虚拟位 
  23          
  24          
  25          delay(uint t)
  26          { char a;
  27   1        while(t--)
  28   1        for(a=100;a>0;a--);  }
  29          
  30          
  31          void initial(void)
  32          {   TMOD=0x01;
  33   1              IT0=1;         //外部中断0采用高到低的跳变有效
  34   1              IE=0x81;       //开外部中断0 
  35   1              TH0=0;
  36   1              TL0=0;
  37   1              TR0=0;
  38   1              START_FLAG=0;
  39   1              TH0_BUF=0;     //定义定时器时间缓冲
  40   1              TL0_BUF=0;
  41   1          INT0_TIMES=0;  //定义中断次数
  42   1          RCV_NUM=0;     //接收的数据是第几位
  43   1              RH_CODE=0;         //定义接收码高位
  44   1              RL_CODE=0;         //定义接收码低位
  45   1          START_FLAG=0;    //定义接收数据开始标志位
  46   1          RCV_BIT_FLAG=0;  //定义位接收标志位 1 表示接收成功
  47   1          RCV_SUS_FLAG=0;  //定义字接收标志位 1 表示接收成功
  48   1      
  49   1              }
  50          
  51          display(t)
  52          {while(t--)
  53   1       {P0=disp[i8];
  54   2        P2=0x7f;
  55   2       delay(1); 
C51 COMPILER V7.50   HONGWAI                                                               06/02/2007 20:24:15 PAGE 2   

  56   2       P2=0xff;
  57   2        P0=disp[i7];
  58   2        P2=0xbf;
  59   2        delay(1);
  60   2        P2=0xff;
  61   2        P0=disp[i6];
  62   2        P2=0xdf;
  63   2        delay(1);
  64   2        P2=0xff;
  65   2        P0=disp[i5];
  66   2        P2=0xef;
  67   2        delay(1);
  68   2        P2=0xff;
  69   2        P0=disp[i4];
  70   2        P2=0xf7;
  71   2        delay(1);
  72   2        P2=0xff;
  73   2        P0=disp[i3];
  74   2        P2=0xfb;
  75   2        delay(1);
  76   2        P2=0xff;
  77   2        P0=disp[i2];
  78   2        P2=0xfd;
  79   2        delay(1);
  80   2        P2=0xff;
  81   2        P0=disp[i1];
  82   2        P2=0xfe;
  83   2        delay(1);
  84   2        P2=0xff;}     }
  85          
  86          
  87          void RCV_SUS(void)
  88          { 
  89   1          i8=RH_CODE/4096%16;i7=RH_CODE/256%16;i6=RH_CODE/16%16;i5=RH_CODE%16;
  90   1              i4=RL_CODE/4096%16;i3=RL_CODE/256%16;i2=RL_CODE/16%16;i1=RL_CODE%16;
  91   1              initial();
  92   1                                                                              }
  93          void RCV_BIT(void)
  94          {       uint time0=TH0_BUF*256+TL0_BUF;
  95   1              uint KEY_BIT;                         //当前的键值 为0或1
  96   1              if(START_FLAG==0)
  97   1                      {   if( time0>12000 && time0<15000 )
  98   2                              { START_FLAG=1;  }         //开始 
  99   2                                                                                                      }
 100   1              else if(START_FLAG==1)
 101   1                      {       
 102   2                              if( time0> 2000 && time0<2400 )  KEY_BIT=0x8000;
 103   2                              else if( time0> 900 && time0<1300 )  KEY_BIT=0;
 104   2                              else KEY_BIT=0;
 105   2                                                              
 106   2                              if(RCV_NUM<16) 
 107   2                              {       RH_CODE=RH_CODE>>1; 
 108   3                                      RH_CODE^=KEY_BIT;               }
 109   2                              else  
 110   2                              {       RL_CODE=RL_CODE>>1;
 111   3                                      RL_CODE^=KEY_BIT;               }
 112   2                              
 113   2                              RCV_NUM++;
 114   2                              if(RCV_NUM==32) 
 115   2                                      {       RCV_NUM=0;       RCV_SUS();     }               
 116   2                                                                                                                      }
 117   1              RCV_BIT_FLAG=0;                                                                                         }
C51 COMPILER V7.50   HONGWAI                                                               06/02/2007 20:24:15 PAGE 3   

 118          
 119          
 120          main()
 121          { display(60);
 122   1        delay(400);
 123   1        initial();
 124   1        while(1)
 125   1        { 
 126   2          display(1);  }
 127   1                             }
 128          
 129          void ex_input(void) interrupt 0   //外部中断 
 130          { 
 131   1              INT0_TIMES++;
 132   1              if(TR0==0) TR0=1;                
 133   1              else if(TR0==1) 
 134   1              {       TH0_BUF=TH0;
 135   2                      TL0_BUF=TL0;
 136   2                      TH0=0;
 137   2                      TL0=0;
 138   2                  //RCV_BIT_FLAG=1;        //置标志位
 139   2              TR0=1;               //开始下一个脉冲的检测
 140   2              RCV_BIT();
 141   2                                                      }
 142   1                                                              }
 143          
 144          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    641    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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