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

📄 computer2.lst

📁 AT89S52串口多字节接收,可以接收任意字节.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 245   3                                                 if (Rs_buf[2] == 0xB8)    //写日
 246   3                                    {
 247   4                                                      MCU_LED = 0;
 248   4                                     delay(10);
 249   4                                     MCU_LED = 1;
 250   4                                                 Open_write_bit();
 251   4                                                 Write_ds1302(3,Rs_buf[1]);       
 252   4                                                 Close_write_bit();
 253   4                                                 }
 254   3                                                  if (Rs_buf[2] == 0xB9)   //写月
 255   3                                    {
 256   4                                                     MCU_LED = 0;
 257   4                                     delay(10);
 258   4                                     MCU_LED = 1;
 259   4                                                 Open_write_bit();
 260   4                                                 Write_ds1302(4,Rs_buf[1]);       
 261   4                                                 Close_write_bit();
 262   4                                                 }
 263   3                                                  if (Rs_buf[2] == 0xBA)   //写年
 264   3                                    {
 265   4                                                     MCU_LED = 0;
 266   4                                     delay(10);
 267   4                                     MCU_LED = 1;
 268   4                                                 Open_write_bit();
 269   4                                                 Write_ds1302(6,Rs_buf[1]);       
 270   4                                                 Close_write_bit();
 271   4                                                 }
 272   3                                                 if (Rs_buf[2]== 0xBB)  //开视频切换
 273   3                                                 {
 274   4                                                      Video = False;
 275   4                                                              MCU_LED = 0;
 276   4                                      delay(10);
 277   4                                      MCU_LED = 1;
 278   4                                                      }
 279   3                                                      if (Rs_buf[2]== 0xBC)  //关视频切换
 280   3                                                 {
 281   4                                                      Video = True;
 282   4                                                              MCU_LED = 0;
 283   4                                      delay(10);
 284   4                                      MCU_LED = 1;
 285   4                                                      }
 286   3                                                      if (Rs_buf[2] == 0xBE)
 287   3                                                      {
 288   4                                                         MCU_LED = 0;
 289   4                                      delay(10);
 290   4                                      MCU_LED = 1;
 291   4                                                         TXD_pc(Rs_buf[0]);
 292   4                                                 TXD_pc(Rs_buf[1]);
 293   4                                                 TXD_pc(Rs_buf[2]);
 294   4                                                 TXD_pc(Rs_buf[3]);
 295   4                                                 TXD_pc(Rs_buf[4]);
 296   4                                                 TXD_pc(Rs_buf[5]);
 297   4                                                         Rs_buf[2] = 0;
 298   4                                                      }
 299   3                                                
 300   3                                       }
 301   2               
 302   2       }
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 6   

 303   1      }
 304          
 305          
 306          
 307           uchar count; 
 308          /******************/
 309          /*产生输液量的定时*/
 310          /******************/
 311          
 312          void Time_0(void) interrupt 1
 313          { 
 314   1             
 315   1      
 316   1             TR0 = 0;
 317   1             EA = 0;
 318   1             TH0 = TH0_T;
 319   1             TL0 = TL0_T;
 320   1                 
 321   1             if (count>=25)  
 322   1             {    
 323   2                        count = 0;
 324   2                                if (!Ack) 
 325   2                                        {
 326   3                                                       RS485   = True; 
 327   3                                                       MCU_LED = True;
 328   3                                                       Work    = False;
 329   3                                                }
 330   2                                Ack = False;
 331   2                                
 332   2                 }
 333   1                   else count++;
 334   1             EA  = 1;
 335   1             TR0 = 1;
 336   1      }
 337          /*******************************/
 338          /***********串口接收************/
 339          /*******************************/
 340          /*********接收不固定长度********/
 341          /*void RS232(void) interrupt 4 using 1
 342          {     
 343             unsigned char Rece_data = SBUF;
 344             uchar i;
 345             uchar verify = 0;
 346                    
 347                     EA         = False;
 348                     ES         = False;  
 349                     MCU_LED2  = False;
 350                 count      = 0;
 351                        RI = 0;
 352                                    if (Start_Rxd) 
 353                                    {
 354                                               g_cReceNum ++;
 355                                                           Rs_buf[g_cReceNum] = Rece_data;
 356                                               if (Rs_buf[1] == g_cReceNum+1) 
 357                                                           {
 358                                                                             for (i=0;i<Rs_buf[1]-1;i++)
 359                                                                             {
 360                                                                                         verify^=Rs_buf[i];
 361                                                                             }
 362                                                                                     if (verify == Rs_buf[g_cReceNum])
 363                                                                             {
 364                                                                             Rs232_Flag = True;
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 7   

 365                                                                             g_cReceNum = 0;
 366                                                                             }
 367                                                                            else 
 368                                                                             {
 369                                                                                          Rs232_Rece_Error = True;
 370                                                                                                  g_cReceNum = 0;
 371                                                                             }
 372                                                                             Start_Rxd = False;
 373                                                           }
 374                                                             else 
 375                                                           {
 376                                          if ((Rs_buf[1]>Rs232_Input_LEN)||(g_cReceNum>Rs232_Input_LEN-1)) 
 377                                                                          {
 378                                                                               g_cReceNum = 0;
 379                                                                                   Rs232_Rece_Error = True;
 380                                                                                   Start_Rxd = False;
 381                                                                          }                                                         
 382                                                                            
 383                                                           }
 384          
 385                                    } 
 386                                           else
 387                        {        
 388                                         if (Rece_data == Rx_start_data)
 389                             {    
 390                                           Start_Rxd = True;
 391                                   g_cReceNum = 0;
 392                                   Rs_buf[0]  = Rece_data;
 393                             }          
 394          
 395                          }
 396                     MCU_LED2  = True;
 397                 ES = True;
 398                     EA = True;
 399                    
 400          }
 401          /*************接收固定长度****************/
 402          /*void RS232(void) interrupt 4
 403          {     
 404             unsigned char Rece_data = SBUF;
 405             uchar i;
 406             uchar verify = 0;
 407                    
 408                     EA         = False;
 409                     ES         = False;  
 410                     MCU_LED2  = False;
 411                 count      = 0;
 412                        RI = 0;
 413                                    if (Start_Rxd) 
 414                                    {
 415                                               g_cReceNum ++;
 416                                               if ((g_cReceNum<Rs232_Input_LEN) && (g_cReceNum>1)) {
 417                                                                   Rs_buf[g_cReceNum-1] = Rece_data;
 418                                                                           
 419                                                           }
 420                                                             else 
 421                                                           {
 422                                                                    if (g_cReceNum == Rs232_Input_LEN) 
 423                                                                            {
 424                                                                                     Rs_buf[g_cReceNum-1]= Rece_data;
 425                                                                                             for (i=0;i<Rs232_Input_LEN-1;i++)
 426                                                                                             {
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 8   

 427                                                                                                 verify^=Rs_buf[i];
 428                                                                                             }
 429                                                                                             if (verify == Rs_buf[g_cReceNum-1])
 430                                                                                             {
 431                                                                                             Rs232_Flag = True;
 432                                                                                             g_cReceNum = 0;
 433                                                                                             }
 434                                                                                                    else 
 435                                                                                             {
 436                                                                                                          Rs232_Rece_Error = True;
 437                                                                                                                  g_cReceNum = 0;
 438                                                                                             }
 439                                                                            }
 440                                                                               else   g_cReceNum = 0;
 441                                                                            Start_Rxd = False;
 442                                                           }
 443          
 444                                    } 
 445                                           else
 446                        {        
 447                                         if (Rece_data == Rx_start_data)
 448                             {    
 449                                           Start_Rxd = True;
 450                                   g_cReceNum = 1;
 451                                   Rs_buf[0]  = Rece_data;
 452                             }          
 453          
 454                          }
 455          
 456          
 457          
 458                
 459              
 460                     MCU_LED2  = True;
 461                 ES = True;
 462                     EA = True;
 463                    
 464          }
 465          /********************************************/
 466          /****接收以一定的数据为结束标志的不定接收****/
 467          /********************************************/
 468          void RS232(void) interrupt 4
 469          {     
 470   1         unsigned char Rece_data = SBUF;
 471   1         
 472   1         uchar verify = 0;
 473   1                
 474   1                 EA         = False;
 475   1                 ES         = False;  
 476   1                 MCU_LED2  = False;
 477   1             count      = 0;
 478   1                    RI = 0;
 479   1                                if (Start_Rxd) 
 480   1                                {
 481   2                                           g_cReceNum ++;
 482   2                                                       if ((g_cReceNum < Rs232_Input_LEN) && (Rece_data == 0xff)) {
 483   3                                                                   Rs_buf[g_cReceNum-1] = Rece_data;
 484   3                                                                               Start_Rxd = False;
 485   3                                                                               Rs232_Flag = True;
 486   3                                                                           g_cReceNum = 0;
 487   3                                                                               goto Rs232_end ;
 488   3      
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 9   

 489   3                                                       }
 490   2                                           if (g_cReceNum<Rs232_Input_LEN) {
 491   3                                                               Rs_buf[g_cReceNum-1] = Rece_data;
 492   3                                                                       
 493   3                                                       }
 494   2                                                         else 
 495   2                                                       {
 496   3                                                               
 497   3                                                                        g_cReceNum = 0;
 498   3                                                                        Rs232_Rece_Error = True;

⌨️ 快捷键说明

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