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

📄 zhenggeshi.lst

📁 数据包(帧格式)的PC机和单片机串口通信 C51程序+proteus仿真
💻 LST
📖 第 1 页 / 共 2 页
字号:
 231   3              }
 232   2              
 233   2              if(Send_Flag)                                    
 234   2              {                                                                 
 235   3                TR0=1;                                      
 236   3              }                                                       
 237   2                                                                               
 238   2      
 239   2              if(Send_Overtime_Flag)                   
 240   2              {
 241   3      
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 5   

 242   3                HEX_Send_Buf[0]=0x01;                  
 243   3                HEX_Send_Buf[1]=0x45;                  
 244   3                Send_Hex_To_ASCII();                  
 245   3      
 246   3                Send_Array();                 
 247   3                Send_Overtime_Flag=0;                  
 248   3              }
 249   2              
 250   2              if(Receive_OK_Flag)                             
 251   2              {
 252   3                if(CheckSum())                                  
 253   3                {
 254   4                  if(ASCII_Receive_Buf[1]<0x30) 
 255   4                      {
 256   5                        if(ASCII_Receive_Buf[1]==F_Receive_OK)        
 257   5                        {  
 258   6                              Send_Flag=0;                            
 259   6                          Send_Overtime_Flag=0;                
 260   6                          TR0=0;                                       
 261   6                        }
 262   5                      }
 263   4                      else
 264   4                      {
 265   5                    i=ASCII_To_Hex(ASCII_Receive_Buf[1])<<4;
 266   5                    i+=ASCII_To_Hex(ASCII_Receive_Buf[2]);
 267   5                    Dis_LedNum(i);
 268   5                        Send_Response(F_Receive_OK);                 
 269   5                      }
 270   4                }
 271   3                else
 272   3                {
 273   4                      Receive_Error_Flag=1;                      
 274   4                }
 275   3                Receive_OK_Flag=0;
 276   3              }
 277   2      
 278   2              if(Receive_Error_Flag)                                   
 279   2              {
 280   3                Send_Response(F_Receive_Error);       
 281   3                Receive_Error_Flag=0;
 282   3              }
 283   2      
 284   2              if(Receive_Overtime_Flag)
 285   2              {
 286   3                Send_Response(F_Overtime);            
 287   3                Receive_Overtime_Flag=0;
 288   3              }
 289   2      
 290   2        }
 291   1      
 292   1      }
 293          
 294          
 295          void Timer_init(void)
 296          {
 297   1        TMOD=0x1;                             
 298   1        TH0=0x15;                             
 299   1        TL0=0xa0;
 300   1        PT0=1;                   
 301   1        ET0=1;                  
 302   1      }
 303          
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 6   

 304          
 305          
 306          void UART_init()
 307          {                         
 308   1        SCON = 0x50;           
 309   1        TMOD|= 0x20;          
 310   1        TH1 = 0xFB;           
 311   1        TL1 = 0XFB;            
 312   1        TR1 = 1;             
 313   1        ET1 = 0;                              
 314   1        //AUXR=64;            
 315   1        ES = 1;                
 316   1        //PS = 1;                
 317   1        EA = 1;                 
 318   1      }
 319          
 320          
 321          
 322          bit CheckSum(void)                          
 323          {
 324   1        uchar ASCII_Len=0;                                 
 325   1        uchar Checksum_Temp=0;                             
 326   1        ASCII_Len=ASCII_Receive_Buf[0]-1;
 327   1        
 328   1        for(;ASCII_Len!=0;ASCII_Len--)                
 329   1        {
 330   2              Checksum_Temp+=ASCII_Receive_Buf[ASCII_Len];
 331   2        }
 332   1      
 333   1        ASCII_Len=ASCII_Receive_Buf[0];
 334   1                                                                                              
 335   1        if(Checksum_Temp==ASCII_Receive_Buf[ASCII_Len]) 
 336   1          return 1;
 337   1        else
 338   1          return 0;
 339   1      
 340   1      }
 341          
 342          
 343          void Get_CheckSum(void)                         
 344          {
 345   1        uchar ASCII_Len=0;                                   
 346   1        uchar CheckSum_Temp=0;                               
 347   1        ASCII_Len=ASCII_Send_Buf[0]-1;
 348   1        
 349   1        for(;ASCII_Len!=0;ASCII_Len--)                                
 350   1        {
 351   2              CheckSum_Temp+=ASCII_Send_Buf[ASCII_Len];
 352   2        }
 353   1      
 354   1        ASCII_Len=ASCII_Send_Buf[0];
 355   1        ASCII_Send_Buf[ASCII_Len]=CheckSum_Temp;
 356   1                                                                                                 
 357   1      }
 358          
 359          
 360          
 361          void Send_Response(uchar Frame)
 362          {
 363   1        uchar ASCII_Len=1;
 364   1      
 365   1        ASCII_Send_Buf[ASCII_Len++]=Frame;
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 7   

 366   1        ASCII_Send_Buf[0]=ASCII_Len;                   
 367   1      
 368   1        ASCII_Send_Buf[ASCII_Len]=Frame;       
 369   1        Send_Array();                                                 
 370   1      
 371   1      }
 372          
 373          
 374          
 375          void Send_Hex_To_ASCII(void)      
 376          {
 377   1        uchar i;
 378   1        uchar Hex_Len=0;                                
 379   1        uchar ASCII_Len=1;                      
 380   1        Hex_Len=HEX_Send_Buf[0];                
 381   1      
 382   1        for(i=1;i<=Hex_Len;i++)                
 383   1        {
 384   2          ASCII_Send_Buf[ASCII_Len++]=Hex_To_ASCII(HEX_Send_Buf[i]>>4);
 385   2          ASCII_Send_Buf[ASCII_Len++]=Hex_To_ASCII(HEX_Send_Buf[i]&0x0f);
 386   2        }                                                               
 387   1        ASCII_Send_Buf[0]=ASCII_Len;    
 388   1        Get_CheckSum();
 389   1      }
 390          
 391          
 392          void Send_Array(void)                   
 393          {
 394   1        uchar i;
 395   1        uchar ASCII_Len=1;
 396   1        ASCII_Len=ASCII_Send_Buf[0];
 397   1      
 398   1        UART_Send(F_ST);                                              
 399   1        Delay_1ms(2);                                                  
 400   1        UART_Send(F_ADDR);                                     
 401   1        Delay_1ms(2);
 402   1        for(i=0;i<=ASCII_Len;i++)                              
 403   1        {
 404   2          UART_Send(ASCII_Send_Buf[i]);
 405   2          Delay_1ms(2);
 406   2        }
 407   1        UART_Send(F_END);                                             
 408   1        Delay_1ms(2);
 409   1      
 410   1      }
 411          
 412          
 413          
 414          
 415          uchar ASCII_To_Hex(uchar bChar)
 416          {
 417   1        if((bChar>=0x30)&&(bChar<=0x39))
 418   1          bChar -= 0x30;
 419   1        else if((bChar>=0x41)&&(bChar<=0x46))
 420   1          bChar -= 0x37;
 421   1        else if((bChar>=0x61)&&(bChar<=0x66))
 422   1          bChar -= 0x57;
 423   1        else bChar = 0xff;
 424   1        
 425   1        return bChar;
 426   1      }
 427          
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 8   

 428          uchar Hex_To_ASCII(uchar bHex)
 429          {
 430   1        if((bHex>=0)&&(bHex<=9))
 431   1          bHex += 0x30;
 432   1        else if((bHex>=10)&&(bHex<=15))
 433   1          bHex += 0x37;
 434   1        else bHex = 0xff;
 435   1        return bHex;
 436   1      }
 437          
 438          
 439          void Delay_1ms(uint Nms)
 440          {
 441   1        uchar Temp;
 442   1        for(;Nms!=0;Nms--)
 443   1            {
 444   2             for(Temp=0;Temp<255;Temp++)
 445   2                   {
 446   3                 _nop_();
 447   3                 _nop_();
 448   3                 _nop_();
 449   3                       }
 450   2            } 
 451   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    875    ----
   CONSTANT SIZE    =     96    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      9    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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