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

📄 cont.lst

📁 自己写的51接收遥控器解码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE CONT
OBJECT MODULE PLACED IN cont.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE cont.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg51.h" 
   2          typedef unsigned char  u8;
   3          typedef unsigned short u16;
   4          typedef unsigned long  u32;
   5          typedef char           s8;
   6          typedef long           s32;
   7          typedef short          s16;
   8          //p0 = R2,R1,R0,C4,C3,C2,C1,C0
   9          
  10          #define X_RF            0xAF    //R1,C4 
  11          #define X_STOP          0XB7    //C3
  12          #define X_PAUSE         0XBB    //C2    
  13          #define X_FF            0XBD    //C1
  14          #define X_PLAY          0XBE    //C0
  15          #define X_MENU          0X6F    //R2,C4
  16          #define X_UP            0X77    //C3
  17          #define X_DOWN          0X7B    //C2
  18          #define X_SELECT        0X7D    //C1
  19          #define X_REC           0X7E    //C0    
  20          
  21          
  22          sbit P1_0 = 0x90;
  23          sbit P1_1 = 0x91;
  24          sbit P1_2 = 0x92;
  25          /*------------------------------------------------
  26          P2 Bit Registers
  27          ------------------------------------------------*/
  28          sbit P2_0 = 0xA0;
  29          sbit P2_1 = 0xA1;
  30          sbit P2_2 = 0xA2;
  31          sbit P2_3 = 0xA3;
  32          sbit P2_4 = 0xA4;
  33          sbit P2_5 = 0xA5;
  34          sbit P2_6 = 0xA6;
  35          sbit P2_7 = 0xA7;
  36          /*------------------------------------------------
  37          P3 Bit Registers (Mnemonics & Ports)
  38          ------------------------------------------------*/
  39          sbit P3_0 = 0xB0;
  40          sbit P3_1 = 0xB1;
  41          sbit P3_2 = 0xB2;
  42          sbit P3_3 = 0xB3;
  43          sbit P3_4 = 0xB4;
  44          sbit P3_5 = 0xB5;
  45          sbit P3_6 = 0xB6;
  46          sbit P3_7 = 0xB7;
  47          
  48          
  49          void SCI_INI(void);      //sci_a init
  50          u8 key(void);                   //check key
  51          void delay(int);
  52          void sendkey(u8);
  53          void Time_intt(void);           //0.2ms 定时中断
  54          void Com_sucess(void);
  55          
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 2   

  56          u8 key_flag_a;
  57          u8 key_flag_b;
  58          u8 key_flag_c;
  59          u8 last_flag;
  60          
  61          u8 ch_flag;
  62          u8 funt_flag;
  63          
  64          u8      ch=1;
  65          u16     com_times=0;
  66          u32     Buffer;
  67          u8      com_bits=0;
  68          u8      bit_cnt=0;
  69          u8      send_tmp=0;
  70          u8      out_flag=0;
  71          bit last_state;
  72          bit     bit_state;
  73          bit     bit_statex;
  74          
  75          
  76          void main(void)
  77          {
  78   1              u8 k;
  79   1              u8      flag=0;         //funtion / control flag,1: control, 0:funtion 
  80   1      
  81   1              u8      key_flag2;              //pressing key  flag,1:pressing ,0:no key
  82   1              
  83   1      
  84   1      
  85   1              SCI_INI();      
  86   1      
  87   1              while(1)        //测试接收的号码
  88   1              {
  89   2                      if(out_flag)
  90   2                      {
  91   3                      //for test-----------------------
  92   3                              SBUF=0x55;
  93   3                              while(!TI);
  94   3                              TI=0;
  95   3                              
  96   3                              SBUF=0xaa;
  97   3                              while(!TI);
  98   3                              TI=0;
  99   3      
 100   3                              out_flag = 0;
 101   3                              
 102   3                              SBUF=Buffer >> 24;
 103   3                              while(!TI);
 104   3                              TI=0;
 105   3                              
 106   3                              SBUF=Buffer >> 16;
 107   3                              while(!TI);
 108   3                              TI=0;
 109   3                                      
 110   3                              SBUF=Buffer >> 8;
 111   3                              while(!TI);
 112   3                              TI=0;
 113   3      
 114   3                              SBUF=Buffer;
 115   3                              while(!TI);
 116   3                              TI=0;
 117   3                      //---------------------------------
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 3   

 118   3              
 119   3                      }
 120   2              //      SBUF=0x55;
 121   2              //      while(!TI);
 122   2                      TI=0;
 123   2              }
 124   1      
 125   1              while(1)
 126   1              {
 127   2                      if (!(P2 & 0x01))   //test funtion key
 128   2                      {                               //press the funtion key
 129   3                              delay(6);
 130   3                              if (!(P2 & 0x01)  ) 
 131   3                              {
 132   4                                      if (funt_flag==0)
 133   4                                      {
 134   5                                              if(flag==0x55) 
 135   5                                              {
 136   6                                                      flag=0;         //control
 137   6                                                      
 138   6                                              }
 139   5                                              else 
 140   5                                              {
 141   6                                                      flag=0x55;
 142   6                                              
 143   6                                              }
 144   5                                              funt_flag=0x55;
 145   5                                      }
 146   4                              }
 147   3                      }
 148   2                       else 
 149   2                              {
 150   3                              delay(6);
 151   3                              if (P2 & 0x01) funt_flag=0;   //release funtion key
 152   3                              }       
 153   2      ///8********************************
 154   2                      if(flag==0x55)   //funtion or control display
 155   2                              {                       //control
 156   3                              //*****************************************8
 157   3                               if (!(P2 & 0x02))   //test ch key
 158   3                                      {
 159   4                                      delay(6);
 160   4                                      if (!(P1 & 0x20) ) 
 161   4                                              {
 162   5                                              if (ch_flag==0)
 163   5                                                      {
 164   6                                                      ch++;
 165   6                                                      if (ch==5) ch=1;
 166   6                                                      ch_flag=0x55;
 167   6                                                      }
 168   5                                              
 169   5                                              }
 170   4                      
 171   4                                      }
 172   3                                      else 
 173   3                                      {
 174   4                                      delay(6);
 175   4                                      if (P2 & 0x02) ch_flag=0;   //release channel key
 176   4                                      }
 177   3                              P2_2=0;
 178   3                              P2_3=1;
 179   3      
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 4   

 180   3                              P3=0xff;                //245 not select
 181   3                              
 182   3      
 183   3                              P1=0x1f;
 184   3                              }
 185   2                      else 
 186   2                              {                       //funtion
 187   3                              P2_2=1;
 188   3                              P2_3=0;
 189   3      
 190   3                              P3=0x0f;
 191   3                              
 192   3      
 193   3                              P1=0xff;
 194   3                              P2_4=1;      //off channel led
 195   3                              P2_5=1;
 196   3                              P2_6=1;
 197   3                              P2_7=1;
 198   3                              }
 199   2      
 200   2      
 201   2                      if (flag)
 202   2                              {
 203   3                                              switch (ch)                     //display the channel led
 204   3                                                      {
 205   4                                                      case 1:
 206   4                                                              P2=(P2 & 0xf) | 0x70;
 207   4                                                              break;
 208   4                                                      case 2:
 209   4                                                              P2=(P2 & 0xf) | 0xb0;
 210   4                                                              break;
 211   4                                                      case 3:
 212   4                                                              P2=(P2 & 0xf) | 0xd0;
 213   4                                                              break;
 214   4                                                      case 4:
 215   4                                                              P2=(P2 & 0xf) | 0xe0;
 216   4                                                              break;
 217   4                                                      default:
 218   4                                                              break;
 219   4                                                      }
 220   3                                              P2_0=1;
 221   3                                              P2_1=1;
 222   3                              k=key();
 223   3                              if(k) 
 224   3                                      {
 225   4                                      
 226   4                                      if (!key_flag2) 
 227   4                                              {
 228   5                                              key_flag2=0x55;
 229   5                                              switch (k)
 230   5                                              {
 231   6                                                      case 30:
 232   6      
 233   6                                                              if (key_flag_a) key_flag_a=0;   //a new key
 234   6                                                              else key_flag_a=0x55;
 235   6                                                              break;
 236   6                                                  case 50:
 237   6                                                              if (key_flag_b) key_flag_b=0;   //a new key
 238   6                                                              else key_flag_b=0x55;
 239   6                                                              break;
 240   6                                                      case 90:
 241   6                                                              if (key_flag_c) key_flag_c=0;   //a new key
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 5   

 242   6                                                              else key_flag_c=0x55;
 243   6                                                              break;
 244   6                                                      default:
 245   6                                                              break;
 246   6                                              }
 247   5                                              sendkey(k);
 248   5                                              }
 249   4                                      
 250   4                                      }
 251   3                              else 
 252   3                                      {
 253   4                                      k=key();
 254   4                                      if (key_flag2)          //stop key
 255   4                                              {
 256   5                                              key_flag2=0;
 257   5                                              sendkey(0xff);
 258   5                                                      
 259   5                                              }
 260   4                                      }
 261   3      
 262   3                              }
 263   2              }
 264   1      }
 265          
 266          void SCI_INI(void)
 267          {       
 268   1              P0=0XFF;
 269   1              P1=0XfF;
 270   1              P2=0XFF;
 271   1              P3=0X0f;
 272   1      
 273   1              TMOD=0x22; //timer1  use as sci bord ,timer0 use as 16bit counter
 274   1      
 275   1              TL1=0XFd;
 276   1              TH1=0xfd; //sci bord speed=9600 when 11.052Mhz./12.000
 277   1      
 278   1              TL0=91;
 279   1              TH0=91; //0.178ms中断
 280   1      
 281   1              TR1=1;     //timer1 enable
 282   1              TR0=1;
 283   1      
 284   1      

⌨️ 快捷键说明

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