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

📄 mds-100-77e58.lst

📁 W77E58串口实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
 422   1       
 423   1              for(i=0;i<9;i++)   /**发送数组的前9位数据**/
 424   1                 {
 425   2                      SBUF1=Send_Buf[i];
 426   2                      SendSum+=Send_Buf[i];
 427   2                      while(TI1==0);TI1=0;
C51 COMPILER V7.06   MDS_100_77E58                                                         03/22/2006 19:49:08 PAGE 8   

 428   2                      }
 429   1              
 430   1                      SBUF1=SendSum;       /**发送此帧数据校验和**/
 431   1                      while(TI1==0);TI1=0;     /**等待数据发送出去**/
 432   1      
 433   1           ES1=1;      /**串口1中断允许**/
 434   1      
 435   1        FC_Tran=1;
 436   1      
 437   1      }
 438          
 439          /***********************************************************************/
 440          /** 函数名称: SP0_ISR()                                               **/
 441          /** 功能描述: 串口0中断接收子程序,接受来自蓝牙模块的数据             **/
 442          /** 输   入:                                                         **/
 443          /** 输   出:                                                         **/
 444          
 445          /** 作   者: Hunter                                                  **/
 446          /** 日   期: 2006年03月                                              **/
 447          
 448          /***********************************************************************/
 449          /** 修 改 人:                                                         **/
 450          /** 日   期:                                                         **/
 451          /***********************************************************************/
 452          void SP0_ISR() interrupt 4  using 2
 453          {
 454   1      unsigned char ReceSum,Recv_Buf,i;
 455   1        ReceSum=0;
 456   1        Recv_Buf=0;
 457   1        BT_Rece=0;
 458   1      
 459   1        if(SBUF==0xFF) /**判断缓冲区数区是否为起始位**/
 460   1           {
 461   2           for(i=0;i<9;i++)        /**如果接收的为起始位,则连续接收后面的8位数据**/
 462   2             {
 463   3              while(RI==0);RI=0;
 464   3              Rece_Data_BT[i]= SBUF;   /**将接收缓冲区数据存入接收数据存储数组**/
 465   3              ReceSum+=Rece_Data_BT[i]; /**计算接收数据校验和**/
 466   3              }
 467   2              while(RI==0);RI=0;
 468   2              Recv_Buf = SBUF;
 469   2                 
 470   2      /**判断如果接收数据为帧测信号则发送应答信息**/
 471   2           if(ReceSum == Recv_Buf)
 472   2              { RBT_Flag = 0xFA; }
 473   2            else
 474   2              { RBT_Flag = 0xFB; }
 475   2      
 476   2               }
 477   1      
 478   1               else{RBT_Flag = 0;}
 479   1                   
 480   1        BT_Rece=1;
 481   1      
 482   1              }         
 483          
 484          /***********************************************************************/
 485          /** 函数名称: Intrup_Serial_Com1()                                    **/
 486          /** 功能描述: 串口1中断接收子程序,接收来自桩考监控机数据             **/
 487          /** 输   入:                                                         **/
 488          /** 输   出:                                                         **/
 489          
C51 COMPILER V7.06   MDS_100_77E58                                                         03/22/2006 19:49:08 PAGE 9   

 490          /** 作   者: Hunter                                                  **/
 491          /** 日   期: 2006年03月                                              **/
 492          
 493          /***********************************************************************/
 494          /** 修 改 人:                                                         **/
 495          /** 日   期:                                                         **/
 496          /***********************************************************************/
 497          void SP1_ISR()interrupt 7  using 3
 498          {
 499   1        unsigned char ReceSum,Recv_Buf,Answ_Flag,i;  
 500   1      
 501   1        FC_Rece=0;
 502   1      
 503   1        ReceSum=0;
 504   1        Recv_Buf=0;
 505   1      
 506   1        if(SBUF1 == 0xFF) /**判断缓冲区数区是否为起始位**/
 507   1           {
 508   2            for(i=0;i<9;i++)        /**如果接收的为起始位,则连续接收后面的8位数据**/
 509   2              {
 510   3              while(RI1==0);RI1=0;
 511   3              Rece_Data_FC[i]= SBUF1;   /**将接收缓冲区数据存入接收数据存储数组**/
 512   3              ReceSum+=Rece_Data_FC[i]; /**计算接收数据校验和**/
 513   3               }
 514   2              while(RI1==0);RI1=0;
 515   2              Recv_Buf=SBUF1;
 516   2      
 517   2                      Answ_Flag=Rece_Data_FC[3];
 518   2      
 519   2      /**判断如果接收数据为帧测信号则发送应答信息**/
 520   2             if (ReceSum==Recv_Buf)
 521   2                       {
 522   3                       if(Answ_Flag==0xFA)
 523   3                 {RFC_Flag=0xFA;}
 524   3                       else if(Answ_Flag==0xFB)
 525   3                         {RFC_Flag=0xFB;}
 526   3                  }
 527   2                  else{RFC_Flag=0x00;}        
 528   2            }
 529   1              else{RFC_Flag=0x00;} 
 530   1        FC_Rece=1;
 531   1      
 532   1      }       
 533          
 534          /***********************************************************************/
 535          /** 函数名称: TR0_ISR                                                 **/
 536          /** 功能描述: 定时器0中断子程序。                                     **/
 537          /** 输   入:                                                         **/
 538          /** 输   出:                                                         **/
 539          
 540          /** 作   者: Hunter                                                  **/
 541          /** 日   期: 2006年03月                                              **/
 542          
 543          /***********************************************************************/
 544          /** 修 改 人:                                                         **/
 545          /** 日   期:                                                         **/
 546          /***********************************************************************/
 547          void TR0_ISR() interrupt 1 using 1
 548          {
 549   1      
 550   1       TH0=0x4C;
 551   1       TL0=0xF7;   /**定时器初值**/
C51 COMPILER V7.06   MDS_100_77E58                                                         03/22/2006 19:49:08 PAGE 10  

 552   1      
 553   1      if(N==50)
 554   1              {
 555   2              N=1;
 556   2       /**判断右脚端口状态是否有变化**/
 557   2       if(R_State==0&&Right_Sig==1)
 558   2         {RG_Flag=1;}
 559   2       else
 560   2        {RG_Flag=0;}
 561   2       
 562   2       /**判断左脚端口状态是否有变化**/
 563   2       if(L_State==0&&Left_Sig==1)
 564   2         {LF_Flag=1;}
 565   2       else
 566   2         {LF_Flag=0;}
 567   2      /**判断熄火端口状态是否有变化**/ 
 568   2       if(S_State==0&&Shart_Sig==1)
 569   2         {SH_Flag=1;}
 570   2       else
 571   2        {SH_Flag=0;}
 572   2      
 573   2       /**保存本次的端口状态**/
 574   2       R_State=Right_Sig;
 575   2       L_State=Left_Sig;
 576   2       S_State=Shart_Sig;
 577   2        }
 578   1      else 
 579   1              N=N+1;  
 580   1       }
 581          
 582          /***********************************************************************/
 583          /** 函数名称:                                                         **/
 584          /** 功能描述: 看门狗设置与喂狗子程序                                  **/
 585          /** 输   入:                                                         **/
 586          /** 输   出:                                                         **/
 587           
 588          /** 作   者: Hunter                                                  **/
 589          /** 日   期: 2006年03月                                              **/
 590          
 591          /***********************************************************************/
 592          /** 修 改 人:                                                         **/
 593          /** 日   期:                                                         **/
 594          /***********************************************************************/
 595          
 596          /*看门狗设置子程序*/
 597          void WDT_Init()
 598          {
 599   1         CKCON |= 0xc0;                     
 600   1         TA = 0xaa;                
 601   1         TA = 0x55;
 602   1         WDCON |= 3;                 
 603   1       
 604   1      }
 605          
 606          /*喂狗子程序*/
 607          void WDT_Clr()
 608          {
 609   1       
 610   1           TA = 0xaa;
 611   1           TA = 0x55;
 612   1           WDCON &= 0xfe; 
 613   1       
C51 COMPILER V7.06   MDS_100_77E58                                                         03/22/2006 19:49:08 PAGE 11  

 614   1           TA = 0xaa;
 615   1           TA = 0x55;
 616   1           WDCON |= 1;
 617   1        
 618   1      }
 619          


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