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

📄 main.lst

📁 用51单片机实现IR解码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 211   1              
 212   1      }
 213          
 214          
 215          
 216          void Process_Delay_Event(void)
 217          {
 218   1      
 219   1           Update_LCD_Display();
 220   1                   
 221   1      
 222   1              if(System_Flag_Being_Scrolling)
 223   1                      {
 224   2                        if(Timer_for_Sytem_Display>SCROLL_TEXT_TIME_INTERVEL_X3mS)
 225   2                          {
 226   3                         Timer_for_Sytem_Display=0;
 227   3                          Scrolling_Chars();
 228   3                              
 229   3                                      
 230   3                          }
 231   2      
 232   2                      }
 233   1              if(System_Flag_RTC_Update==TRUE)
 234   1                      {
 235   2                      U8 RTC_String[8];
 236   2                              System_RTC_Second++;
 237   2                              
 238   2                              if(System_RTC_Second==60)
 239   2                              {
 240   3                                    System_RTC_Second=0;
 241   3                                      System_RTC_Minute++;
C51 COMPILER V8.02   MAIN                                                                  10/16/2006 17:42:28 PAGE 5   

 242   3                                      if(System_RTC_Minute==60)
 243   3                                      {
 244   4                                              System_RTC_Minute=0;
 245   4                                               System_RTC_Hour++;
 246   4                                              if(System_RTC_Hour==24)
 247   4                                                      System_RTC_Hour=0;
 248   4      
 249   4                                      }
 250   3      
 251   3                              }
 252   2                              System_Flag_RTC_Update=FALSE;
 253   2      
 254   2                                  if(System_Flag_Temp_DisplaY==0
 255   2                                      &&System_Flag_Being_Scrolling==0)
 256   2                                      {
 257   3                                                      LCD_Display_String(0,"        ");
 258   3                                                      RTC_String[0]=System_RTC_Hour/10+'0';
 259   3                                                      RTC_String[1]=System_RTC_Hour%10+'0';
 260   3                                                      RTC_String[2]=System_RTC_Minute/10+'0';
 261   3                                                      RTC_String[3]=System_RTC_Minute%10+'0';
 262   3                                                      LCD_Icon_Display_Control(SEG_P5,ON);
 263   3                                                      LCD_Icon_Display_Control(SEG_P8,ON);
 264   3                                                      LCD_Icon_Display_Control(SEG_P3,ON);
 265   3                                                      RTC_String[4]=System_RTC_Second/10+'0';
 266   3                                                      RTC_String[5]=System_RTC_Second%10+'0';
 267   3                                                      RTC_String[6]='\0';
 268   3                                                      LCD_Display_String(1,RTC_String);
 269   3                                      }
 270   2                      }
 271   1      
 272   1          if(Timer_for_Refresh_LCD_Display>=50)//250)
 273   1              {
 274   2                      System_Flag_RTC_Update=TRUE;
 275   2                      
 276   2                  Timer_for_Refresh_LCD_Display=0;
 277   2                  System_Confirm_Refresh_LCD_Counter++;
 278   2                  System_Confirm_Refresh_LCD_Counter%=3;
 279   2      
 280   2                 switch(System_Confirm_Refresh_LCD_Counter)
 281   2                      {
 282   3                
 283   3                         case 0:
 284   3                                      for(LCD_Refresh_Poniter=0;LCD_Refresh_Poniter<5;LCD_Refresh_Poniter++)
 285   3                                           {      
 286   4                                                      
 287   4                                                       Refresh_LCD_One_Byte(LCD_Refresh_Poniter);
 288   4      
 289   4                                              }
 290   3      
 291   3                                     break;
 292   3                
 293   3                       case 1:
 294   3                              
 295   3                                      for(LCD_Refresh_Poniter=5;LCD_Refresh_Poniter<10;LCD_Refresh_Poniter++)
 296   3                                   {      
 297   4                                              
 298   4                                               Refresh_LCD_One_Byte(LCD_Refresh_Poniter);
 299   4      
 300   4                                      }
 301   3                                      
 302   3                                      break;
 303   3      
C51 COMPILER V8.02   MAIN                                                                  10/16/2006 17:42:28 PAGE 6   

 304   3                      case 2:
 305   3                                    for(LCD_Refresh_Poniter=10;LCD_Refresh_Poniter<16;LCD_Refresh_Poniter++)
 306   3                                   {      
 307   4                                              
 308   4                                               Refresh_LCD_One_Byte(LCD_Refresh_Poniter);
 309   4      
 310   4                                      }
 311   3                                        
 312   3                                      break;
 313   3                      
 314   3                }
 315   2      
 316   2      
 317   2              }
 318   1                              
 319   1      
 320   1              if(System_Flag_DispEvent)
 321   1              {
 322   2                      
 323   2                                      Display_Number(Monitor);
 324   2                              System_Flag_DispEvent=0;
 325   2      
 326   2                      }
 327   1              
 328   1            
 329   1               if(System_Flag_Temp_DisplaY)
 330   1                      {
 331   2      
 332   2                              
 333   2                        if(Timer_for_Sytem_Display>250)//TEMP_TEXT_DISPLAY_STILL_TIME_X3mS)
 334   2                          {
 335   3                               Timer_for_Sytem_Display=0;
 336   3                                      Normal_Dispaly();
 337   3                                      System_Flag_Temp_DisplaY=0;
 338   3                              }
 339   2      
 340   2                      }
 341   1      
 342   1      
 343   1      
 344   1       }
 345          
 346          
 347          
 348          
 349          void Init_51MCU(void)
 350          {
 351   1       
 352   1           IE=0;
 353   1       //IE = 0x30;   //  00110000  EA EC ET2 ES ET1 EX1 ET0 EX0
 354   1      
 355   1       /***PORT DATA ****/
 356   1      
 357   1      
 358   1      /***extern interrupt 0,1 setting****/
 359   1               IT1=1;  //     0/1  LOW LEVEL/FALLING  edge triggle the external  interrupt  1 (for RDS)
 360   1               IE1=0;  //clear the interrupt flag
 361   1               IT0=1;  //     0/1  LOW LEVEL/FALLING  edge triggle the external interrupt  0 (for CLOCK)
 362   1               IE0=0;  //clear the interrupt flag
 363   1      
 364   1              
 365   1      /*** Serial communucation port set ***/
C51 COMPILER V8.02   MAIN                                                                  10/16/2006 17:42:28 PAGE 7   

 366   1              SM0   = 0;            // 8 bit UART variable baud
 367   1              SM1   = 1;
 368   1              SM2   = 0;            // disable multi-processor communication
 369   1              REN   = 1;            // receive enable
 370   1              TB8             = 0;            // clear transmit parity bit
 371   1              RB8             = 0;            // clear receive parity bit
 372   1              TI              = 0;            // clear transmit interrupt flag
 373   1              RI              = 0;            // clear receive interrupt flag
 374   1      
 375   1      /***timers function set***/
 376   1      /*** Timer0 for 16 timer***/    
 377   1              TMOD=0x21;             //timer0(Timer MOD1 ): 0001        use as 16 timer for the 20ms interrupt 
 378   1                                                  // timer1(Timer   MOD2) : 0010      use as  for baud rate and auto reload mode
 379   1              
 380   1      #if ( SYSTEM_CRYSTAL    ==USE_CRYSTAL_40M)
                      TH0=0x00;                        /*reload value 19.6ms for X=40M*/
                      TL0=0x00;                       /*reload value 19.6ms for X=40M*/
              #elif(SYSTEM_CRYSTAL    ==USE_CRYSTAL_27M)
 384   1              //TH0=0xDC;                      /*reload value 4ms for X=27M*/
 385   1              //TL0=0xCF;                     /*reload value 4ms for X=27M*/
 386   1                 TH0=0x50;                     /*re load value 20ms for X=27M*/
 387   1              TL0=0x37;                       /*reload value 20ms for X=27M*/
 388   1      #elif(SYSTEM_CRYSTAL    ==USE_CRYSTAL_27MX2)
                         TH0=0x50;                    
                        TL0=0x37;             
              #elif( SYSTEM_CRYSTAL== USE_CRYSTAL_24M598_X2)
                      
                         TH0=0xCC;               /*reload value 3ms for 25.598*2**/
                       TL0=0xD5;
              #elif( SYSTEM_CRYSTAL== USE_CRYSTAL_40M039_X2)
                   
              
                          TH0=0x97;               /*reload value 4ms for 40.039*2**/
                     TL0=0xBC;
              #elif( SYSTEM_CRYSTAL== USE_CRYSTAL_12M_X2)
                              TH0=0xE0;               /*reload value 4ms for 12M*2**/
                              TL0=0xB8;
              
              #else
              
                      TH0=0xff;                        /*reload value 25ms for X=22.118M*/ 
                      TL0=0x4b;                       /*reload value 25ms for X=22.118M*/ 
              #endif
 409   1      
 410   1      /*** Timer1 for baud rate***/      
 411   1              PCON |= 0x80;
 412   1              TL1 = 0;                                // clear timer 1 counter low
 413   1      
 414   1              //TH1=0xFF-fs/B/32/12 +1     SMOD=0
 415   1              //TH1=0xFF-fs/B/16/12 +1     SMOD=1
 416   1      /*      TH1 =0xff-0x0C+1;                                       //2400bps for 11.0592   SMOD=0
 417   1              TH1 =0xff-0x06+1;                                       //4800bps for 11.0592   SMOD=0
 418   1              TH1 =0xff-0x03+1;                                       //9600bps for 11.0592   SMOD=0
 419   1              TH1 =0xff-0x03+1;       PCON|=0x80;             //19200bps for 11.0592   SMOD=1
 420   1              
 421   1              TH1 =0xff-0x18+1;                                       //2400bps for 22.1184   SMOD=0
 422   1              TH1 =0xff-0x0C+1;                                       //4800bps for 22.1184   SMOD=0  
 423   1              TH1 =0xff-0x06+1;                                       //9600bps for 22.1184   SMOD=0 
 424   1              TH1 =0xff-0x03+1;                                       //19200bps for 22.1184  SMOD=0  
 425   1              TH1 =0xff-0x01+1;                                       //38400bps for 22.1184  SMOD=0  */
 426   1              
 427   1      
C51 COMPILER V8.02   MAIN                                                                  10/16/2006 17:42:28 PAGE 8   

⌨️ 快捷键说明

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