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

📄 main.lst

📁 keil c51开发的8279和51单片机通用键盘控制和Led显示及uart通信程序。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 219   1                      FeedWD = 0;             //喂狗引脚
 220   1                      LED1 = 0;               //指示UART是否正在发送数据
 221   1                      LED2 = 0;               //单片机指示灯,由TIMER0定时控制
 222   1                      LED3 = 0;               //暂无定义 
 223   1              }
 224          
 225           
 226          void Timer0_Int(void) interrupt 1       using 1 //TIMER0中断函数
 227                  {
 228   1               uchar i;
 229   1               EA =0; 
 230   1               TF0 = 0;
 231   1               TH0  = 0X04;           //初始化定时器0高8位
 232   1               TL0  = 0X06;           //初始化定时器0低8位
 233   1           if(time_u>0) time_u--;
 234   1               i++;
 235   1               if(i ==3)
 236   1            {
 237   2                i =0;
 238   2                 Timer_Int_ID = 1;
 239   2                 LED2 = !LED2;                //指示单片机的状态
 240   2                }
 241   1                      
C51 COMPILER V7.10   MAIN                                                                  08/04/2006 15:38:10 PAGE 5   

 242   1       
 243   1               TR0 = 1;
 244   1               EA =1;
 245   1              }
 246          
 247          
 248          void main ()
 249                  {
 250   1                      uchar i;
 251   1              uchar k;
 252   1                      Timer0_Init();
 253   1                      CPU_IO_Int();
 254   1                      Uart_Init();
 255   1                      Interrupt_Init();
 256   1              len=0; 
 257   1                      Delay();
 258   1              COM = 0XD1;
 259   1                      do
 260   1                              {
 261   2                                      ACC=COM;
 262   2                              }while(clflag ==1);     
 263   1                      COM = 0X04;
 264   1                      COM = 0X2C;
 265   1                      state=0;
 266   1      
 267   1                      while(1)
 268   1                              {
 269   2      
 270   2      //------------ad---转换-----------------------------------------
 271   2                                if(Timer_Int_ID == 1)
 272   2                                              {
 273   3                                              
 274   3                                                      if((P3&0x20)==1) {      Table[5] = Table[5]&0xFD; }
 275   3                               else   {       Table[5] |=0x02; }               
 276   3                                  if((P3&0x40)==1) {  Table[5] = Table[5]&0xFE; }
 277   3                               else   {       Table[5] |=0x01; }   
 278   3                                              
 279   3                                              }
 280   2      
 281   2      //---------------------------// 
 282   2              if(KeyBoard_Int_ID==1)
 283   2                       {
 284   3                                      uchar i;
 285   3                                      KeyBoard_Int_ID = 0;
 286   3                                      for(i=0;i<4;i++)//接收按键值
 287   3                                              {
 288   4                                                      COM = 0X40 +i;
 289   4                                      ab[i] = DAT;                            
 290   4                              }
 291   3                              for(i=0;i<7;i++){ Tbak[i]=Table[i];} //bak 
 292   3                                  
 293   3                       
 294   3                       if((state&0x80)==0x80)         // .7=1有暗盒状态 
 295   3                         {
 296   4                           if( All_p ==1)     //全片
 297   4                            { ;  }
 298   4                             else             {   ;     }     
 299   4                           if( Out_p ==1)     //出片
 300   4                              {       ;         }
 301   4                             else             {       ;  }    
 302   4                           if( H_2 ==1)   {   ;         }                 //横向2分隔
 303   4                             else             {         }     
C51 COMPILER V7.10   MAIN                                                                  08/04/2006 15:38:10 PAGE 6   

 304   4                           if( V_2 ==1)  {    ;         }                     //纵向2分隔
 305   4                             else             {         ;}    
 306   4                           if( Cp_3  ==1)  {  ;         }                     //3分隔
 307   4                             else             {         }     
 308   4                           if( Cp_4 ==1)  {   ;         }                 //4分隔
 309   4                             else             {        ; }    
 310   4                           if( Cp_S ==1)  {   ;         }                     //分隔选定
 311   4                             else             {        ; }    
 312   4                         }
 313   3                   else                                        //无暗盒
 314   3                        {
 315   4                           Table[4]|=0x80;
 316   4                               Table[5]|=0x3f;
 317   4                        }
 318   3            for(i=2;i<7;i++)  
 319   3             {
 320   4                  if(Table[i]!=Tbak[i])  Table[6]=1;
 321   4                 }
 322   3      
 323   3                                                       // Check=0;
 324   3                                                       // for(i = 0;i<4;i++)
 325   3                                                      //              {
 326   3                                                      //                      ComOutChar(ab[i]);
 327   3                                                      //              }
 328   3                              //  for(k = 0; k<6; k++)
 329   3                                                       // {
 330   3                                                       //   Check+=Table[k];
 331   3                                                      //      ComOutChar(Table[k]);
 332   3                                                       // }//将数据发给中控板
 333   3                                                   // ComOutChar(' ');
 334   3               
 335   3            }
 336   2      
 337   2      //--------------------led 控制----------------------------------------
 338   2                      for(i =0;i<3;i++)//对应位置灯点亮
 339   2                                      {
 340   3                              COM = 0X80+i;
 341   3                              DAT =Led[i];
 342   3                              }       
 343   2      
 344   2      //-----通信-------------------------------------------------------
 345   2                                if((len>0)&&(time_u==0))
 346   2                                  {
 347   3                                      len=0;
 348   3                                  TIflag=0;
 349   3                      inTxBuf=TxBuf,outTxBuf=TxBuf;
 350   3                      head_pt=START_PT;
 351   3                      tail_pt=START_PT;
 352   3                                      }
 353   2                                 if(tail_pt!=head_pt)
 354   2                             {
 355   3                              time_u=0x30;
 356   3                                      i=ComGetChar();   //接受串口0消息  
 357   3                                      switch(len)
 358   3                                       {
 359   4                                        case 0:
 360   4                                           if(i==3) {len=1;}
 361   4                                        break;
 362   4                                        case 1:
 363   4                                           if(i==2)
 364   4                                           { 
 365   5                                                  len=0;
C51 COMPILER V7.10   MAIN                                                                  08/04/2006 15:38:10 PAGE 7   

 366   5                                                      if(Table[6]>0)
 367   5                                                      {
 368   6                                                        Table[6]=0;
 369   6                                                        ComOutChar(0x03);
 370   6                                                    ComOutChar(0xe0);
 371   6                                                        Check=0;
 372   6                                                        for(k = 0; k<6; k++)
 373   6                                                        {
 374   7                                                          Check+=Table[k];
 375   7                                                              ComOutChar(Table[k]);
 376   7                                                        }//将数据发给中控板
 377   6                                                    ComOutChar(Check);
 378   6                                                      }
 379   5                                                  else
 380   5                                                      {
 381   6                                                       ComOutChar(0x03);
 382   6                                                   ComOutChar(0xe1);
 383   6                                                      }
 384   5                                                }
 385   4                                        else if(i==1) { len=2;Check=0;} 
 386   4                                            break;
 387   4                                        case 2: 
 388   4                                       default:
 389   4                                            Rx_data[len]=i;
 390   4                                                Check+=i;
 391   4                                                len++;
 392   4                                                if(len>4)
 393   4                                                  {
 394   5                                                   len=0;
 395   5                                                       if(Check==0)
 396   5                                                    {
 397   6                                                      Led_Display();
 398   6                                                              if(Table[6]>0)
 399   6                                                       {
 400   7                                                              Table[6]=0;
 401   7                                                              ComOutChar(0x03);
 402   7                                                              ComOutChar(0xe0);
 403   7                                                              Check=0;
 404   7                                                              for(k = 0; k<6; k++) { Check+=Table[k];ComOutChar(Table[k]);  }//将数据发给中控板
 405   7                                                              ComOutChar(Check);
 406   7                                                          }
 407   6                                                      else
 408   6                                                           {
 409   7                                                              ComOutChar(0x03);
 410   7                                                              ComOutChar(0xe1);
 411   7                                                            }
 412   6                                                        }
 413   5                                               else
 414   5                                                        {
 415   6                                                              ComOutChar(0x03);
 416   6                                                      ComOutChar(0xee);
 417   6                                                        }
 418   5                                                  }
 419   4                                                break;
 420   4                                       
 421   4                                       }
 422   3                      
 423   3                                      }       
 424   2                              
 425   2                        }
 426   1      
 427   1          }
C51 COMPILER V7.10   MAIN                                                                  08/04/2006 15:38:10 PAGE 8   

 428          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    775    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27       4
   IDATA SIZE       =      7    ----
   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 + -