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

📄 test.lst

📁 使用2051单片机对2272进行解码的完全代码,可直接拿来修改成很强的遥控器.
💻 LST
📖 第 1 页 / 共 2 页
字号:
                      if(log_pos>=MAX_LOGS)
                              log_pos=0;
              
                      read12887(date);
                      log.index=log_index;
                      log.year=date[6];
                      log.month=date[5];
                      log.day=date[4];
                      log.hou=date[2];
                      log.min=date[1];
                      log.sec=date[0];
                      ee_write(log_pos>>5, (log_pos<<3)&0xff, sizeof(log_t), (unsigned char*)&log);
                      log_pos++;
                      log_index++;
              }
              
              void clear_log(){
                      log_t log;
              
                      memset((void *)&log, 0xff, sizeof(log_t));
                      for(log_pos=0; log_pos<MAX_LOGS; log_pos++){
                              ee_write(log_pos>>5, log_pos<<3, sizeof(log_t), (unsigned char*)&log);
                              sleep(100);
                      }
              }
              
              typedef struct arg_s{
                      unsigned int ir_addr;
                      unsigned char ir_data;
                      unsigned int delay1;
                      unsigned int delay2;
                      unsigned int delay3;
              }arg_t;
              
              arg_t arg;
              
              #define arg_addr 0x300
              void get_arg(){
C51 COMPILER V7.20   TEST                                                                  11/01/2004 17:44:53 PAGE 5   

                      ee_read(arg_addr>>8, arg_addr&0xff, sizeof(arg_t), (unsigned char*)&arg);
              }
              
              void save_arg(){
                      arg.ir_addr=(ir_buf[0]<<8)|ir_buf[1];
                      arg.ir_data=ir_buf[2];
                      arg.delay1=10000;
                      arg.delay2=10000;
                      arg.delay3=10000;
              //      ee_write(arg_addr>>8, arg_addr&0xff, sizeof(arg_t), (unsigned char*)&arg);
              }
              
              #endif
 254          
 255          void sys_init(){
 256   1              clock_init();
 257   1              init_serialcomm();
 258   1      //      start12887();
 259   1      //      find_log_pos();
 260   1      //      get_arg();
 261   1      //      save_arg();
 262   1      }
 263          
 264          unsigned char fs1_circle;
 265          unsigned char fs2_circle;
 266          bit fs1_open=0;
 267          bit fs2_open=0;
 268          
 269          #define OPEN_CIRCLE 0
 270          void fs_drive(){
 271   1              if(fs1_open){
 272   2                      fs1_circle--;
 273   2                      if(fs1_circle>OPEN_CIRCLE)
 274   2                              FS1 = 0;
 275   2                      else
 276   2                              FS1 = 1;
 277   2                      if(fs1_circle == 0)
 278   2                              fs1_circle=OPEN_CIRCLE+2;
 279   2              }else
 280   1                      FS1 = 1;
 281   1              if(fs2_open){
 282   2                      fs2_circle--;
 283   2                      if(fs2_circle>OPEN_CIRCLE)
 284   2                              FS2 = 0;
 285   2                      else
 286   2                              FS2 = 1;
 287   2                      if(fs2_circle == 0)
 288   2                              fs2_circle=OPEN_CIRCLE+2;
 289   2              }else
 290   1                      FS2 = 1;
 291   1      }
 292          
 293          unsigned int key_disable_timer=0;
 294          void main(){
 295   1      
 296   1              sys_init();
 297   1      
 298   1              while(1){
 299   2                      ir_test();
 300   2                      fs_drive();
 301   2                      if(key_disable_timer)
 302   2                              key_disable_timer--;
C51 COMPILER V7.20   TEST                                                                  11/01/2004 17:44:53 PAGE 6   

 303   2                      if(ir_step == 50){
 304   3                              int t=key_disable_timer-jiffies;
 305   3                              if(1){//ir_addr == arg.ir_addr){
 306   4                                      if(key_disable_timer==0){
 307   5                                              if(ir_data == 0xFC){
 308   6                                                      fs1_open=!fs1_open;
 309   6                                                      if(fs1_open){
 310   7                                                              fs1_circle=255;
 311   7                                                              LED1=0;
 312   7                                                      }else
 313   6                                                              LED1=1;
 314   6                                              }else
 315   5                                              if(ir_data == 0xF3){
 316   6                                                      fs2_open=!fs2_open;
 317   6                                                      if(fs2_open){
 318   7                                                              fs2_circle=255;
 319   7                                                              LED2=0;
 320   7                                                      }else
 321   6                                                              LED2=1;
 322   6                                              }
 323   5                                      }
 324   4                                      ir_step=0;
 325   4                                      key_disable_timer=10000;
 326   4              //                      serial_out(ir_buf[0]);
 327   4              //                      serial_out(ir_buf[1]);
 328   4              //                      serial_out(ir_buf[2]);
 329   4              //                      write_log();
 330   4                              }
 331   3                      }
 332   2                      if (RI){
 333   3                              unsigned char ch = SBUF;
 334   3                              RI=0;
 335   3      #if 0
                                      if(ch=='w'){
                                              unsigned char sbuf[3];//r addr_h addr_l len
                                              if(wait_serial(sbuf, 3, 0)==0){
                                                      unsigned char dbuf[32];
                                                      if(wait_serial(dbuf, sbuf[2], 200)==0){
                                                              ee_write(sbuf[0], sbuf[1], sbuf[2], dbuf);
                                                      }else
                                                              serial_out(0x56);
                                              }else
                                                      serial_out(0x57);
                                      }
                                      else
                                      if(ch=='r'){
                                              unsigned char i;
                                              unsigned char sbuf[3];//r addr_h addr_l len
                                              unsigned char dbuf[32];
                                              if(wait_serial(sbuf, 3, 200)==0){
                                                      ee_read(sbuf[0], sbuf[1], sbuf[2], dbuf);
                                                      for(i=0; i<sbuf[2]; i++)
                                                              serial_out(dbuf[i]);
                                              }else{
              #if 0                           //测试用0.
                                                      serial_out(0x55);
              #else
                                                      unsigned char seg;
                                                      for(seg=0; seg<32; seg++){
                                                              ee_read(seg>>3, seg<<5, 32, dbuf);
                                                              for(i=0; i<32; i++)
                                                                      serial_out(dbuf[i]);
C51 COMPILER V7.20   TEST                                                                  11/01/2004 17:44:53 PAGE 7   

                                                      }
              #endif
                                              }
                                      }
                                      else
                                      if(ch=='d'){
                                              unsigned char i;
                                              if(wait_serial(date, 7, 200)==0){
                                                      setup12887(date);
                                              }else{
                                                      read12887(date);
                                                      for(i=0; i<7; i++)
                                                              serial_out(date[i]);
                                              }
                                      }
                                      else
                                      if(ch=='s'){
                                              save_arg();
                                      }
                                      else
                                      if(ch=='c'){
                                              clear_log();
                                      }
                                      else
              #endif
 390   3                              if(ch=='i'){
 391   4                                      serial_out(ir_buf[0]);
 392   4                                      serial_out(ir_buf[1]);
 393   4                                      serial_out(ir_buf[2]);
 394   4                              }
 395   3                      }
 396   2              }
 397   1      }
 398          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    553    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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