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

📄 system.lst

📁 该程序是基于c8051f的红外线发射率的测量程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 462   2                while(AD0INT==0);
 463   2            voltage_AD=(ADC0H & 0x0F)*256+ADC0L;
 464   2               }
 465   1              if(time==12)
 466   1              {
 467   2                AMX0SL=0; //电流通道
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 9   

 468   2                delay4us();
 469   2            AD0INT=0;
 470   2                AD0BUSY=1;//启动转换
 471   2                while(AD0INT==0);
 472   2                AD0INT=0;
 473   2            current_AD=(ADC0H & 0x0F)*256+ADC0L;
 474   2                //AMX0SL=2; //为发射率通道作准备
 475   2                time=0;
 476   2              }
 477   1              time++;
 478   1              //=======================================================================================================
             -================================
 479   1              //AI超时检测
 480   1              //=======================================================================================================
             -=================================
 481   1          if(ES0)
 482   1              {
 483   2                      AITIME++;       
 484   2                      if(AITIME==40)
 485   2                      {
 486   3                              REN0=0;
 487   3                              ES0=0;
 488   3                              AIOVERFLG=1;
 489   3                              TIMEFLG=1;
 490   3                      }
 491   2              }
 492   1      
 493   1      }
 494          //========================================================================================================
             -======================================
 495          //接收来自AI表的数据,此处有问题
 496          //========================================================================================================
             -=======================================
 497          void UART0_INT() interrupt 4//串口0中断函数,主要是用来接收AI808P的数据的中断
 498          {
 499   1              RI0=0;  
 500   1              AIBUF[AIDATNUM]=SBUF0;
 501   1              AIDATNUM++;
 502   1              if(AIDATNUM==10)
 503   1              {
 504   2                  AIDATNUM=0;
 505   2                      REN0=0;
 506   2                      ES0=0;
 507   2                      AIOVERFLG=1;
 508   2              }
 509   1      }
 510          //========================================================================================================
             -=======================================
 511          //
 512          //========================================================================================================
             -=======================================
 513          void AIWR(unsigned char dat)//向串口0写数据函数
 514          {
 515   1              SBUF0=dat;
 516   1              while(!TI0){}
 517   1              TI0=0;
 518   1      }
 519          
 520          //========================================================================================================
             -=======================================
 521          //
 522          //========================================================================================================
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 10  

             -=======================================
 523          unsigned int write_AI(unsigned char addr,unsigned int dat)//AI8080P写数据函数
 524          {
 525   1              unsigned int CRC;       
 526   1              ERRORNUM=0;
 527   1      again:
 528   1              CRC=AIADDR+0x43+addr*256+dat;
 529   1              AIOVERFLG=0;
 530   1              AITIME=0;
 531   1              delay100us();
 532   1              TR=1;
 533   1              delay100us();
 534   1              REN0=0;//暂时不能接收数据
 535   1              RI0=0;
 536   1              TI0=0;
 537   1              ES0=0;
 538   1              AIDATNUM=0;
 539   1              TIMEFLG=0;              
 540   1              AIWR(AIADDR+0x80);
 541   1              AIWR(AIADDR+0x80);//传2遍地址
 542   1              AIWR(0x43);
 543   1              AIWR(addr);
 544   1              AIWR(dat%256);
 545   1              AIWR(dat/256);//传数据
 546   1              AIWR(CRC%256);
 547   1              AIWR(CRC/256);//传CRC码
 548   1              delay100us();
 549   1              ES0=1;//开串口0的中断,准备接收数据
 550   1              REN0=1;//允许接收数据   
 551   1              TR=0;
 552   1              while(!AIOVERFLG){}
 553   1              TR=1;
 554   1              if(TIMEFLG)
 555   1              {
 556   2                      ERRORNUM++;
 557   2                      if(ERRORNUM == 10)
 558   2                      {
 559   3                        //显示通信故障
 560   3                        statusbar.text=(unsigned char*)"通信错误";
 561   3                set_statusbar_window(&statusbar);
 562   3                        languge_mode(English,no);
 563   3                        set_window_str(","); 
 564   3                languge_mode(Chinese,no);
 565   3                        set_window_str("请检查通讯电路是否正常"); 
 566   3                        languge_mode(English,no);
 567   3                        set_window_str("!"); 
 568   3                      }
 569   2                      goto again;     
 570   2              }
 571   1              else
 572   1              {
 573   2                      CRC=AIBUF[0]+AIBUF[1]*256+AIBUF[2]+AIBUF[3]*256+AIBUF[4]+AIBUF[5]*256+AIBUF[6]+AIBUF[7]*256+AIADDR;
 574   2                      if(CRC != (AIBUF[8]+AIBUF[9]*256))//如果校验错误则表有问题
 575   2                      {
 576   3                              ERRORNUM++;
 577   3                              if(ERRORNUM == 10)
 578   3                              {
 579   4                                //显示通信故障
 580   4                            statusbar.text=(unsigned char*)"通信错误";
 581   4                    set_statusbar_window(&statusbar);
 582   4                            languge_mode(English,no);
 583   4                            set_window_str(","); 
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 11  

 584   4                    languge_mode(Chinese,no);
 585   4                            set_window_str("请检查通讯电路是否正常"); 
 586   4                            languge_mode(English,no);
 587   4                            set_window_str("!"); 
 588   4                              }
 589   3                              goto again;             
 590   3                      }
 591   2                      else
 592   2                      {
 593   3                          
 594   3                              return(AIBUF[0]+AIBUF[1]*256);
 595   3                      }
 596   2              }
 597   1      }
 598          
 599          //========================================================================================================
             -========================================
 600          //
 601          //========================================================================================================
             -========================================
 602          unsigned int read_AI(unsigned char addr)//AI808P读数据函数
 603          {
 604   1              unsigned int  CRC;
 605   1              ERRORNUM=0;
 606   1      again:  
 607   1              CRC=AIADDR+0x52+addr*256;
 608   1              AIOVERFLG=0;
 609   1              AITIME=0;
 610   1              delay100us();
 611   1              TR=1;
 612   1              delay100us();
 613   1              REN0=0;//暂时不能接收数据
 614   1              RI0=0;
 615   1              TI0=0;
 616   1              ES0=0;
 617   1              AIDATNUM=0; 
 618   1              TIMEFLG=0;              
 619   1              AIWR(AIADDR+0x80);
 620   1              AIWR(AIADDR+0x80);//传2遍地址
 621   1              AIWR(0x52);
 622   1              AIWR(addr);
 623   1              AIWR(0);
 624   1              AIWR(0);//传数据
 625   1              AIWR(CRC%256);
 626   1              AIWR(CRC/256);//传CRC码
 627   1              delay100us();
 628   1              ES0=1;//开串口0的中断,准备接收数据
 629   1              REN0=1;//允许接收数据   
 630   1              TR=0;
 631   1              while(!AIOVERFLG){}
 632   1              TR=1;
 633   1              if(TIMEFLG)
 634   1              {
 635   2                      ERRORNUM++;
 636   2                      if(ERRORNUM == 10)
 637   2                      {
 638   3                        //显示通信故障
 639   3                        statusbar.text=(unsigned char*)"通信错误";
 640   3                set_statusbar_window(&statusbar);
 641   3                        languge_mode(English,no);
 642   3                        set_window_str(","); 
 643   3                languge_mode(Chinese,no);
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 12  

 644   3                        set_window_str("请检查通讯电路是否正常"); 
 645   3                        languge_mode(English,no);
 646   3                        set_window_str("!"); 
 647   3      
 648   3                      }
 649   2                      goto again;     
 650   2              }
 651   1              else
 652   1              {
 653   2                      CRC=AIBUF[0]+AIBUF[1]*256+AIBUF[2]+AIBUF[3]*256+AIBUF[4]+AIBUF[5]*256+AIBUF[6]+AIBUF[7]*256+AIADDR;
 654   2                      if(CRC != (AIBUF[8]+AIBUF[9]*256))//如果校验错误则表有问题
 655   2                      {
 656   3                              ERRORNUM++;
 657   3                              if(ERRORNUM == 10)
 658   3                              {
 659   4                                 //显示通信故障
 660   4                                 statusbar.text=(unsigned char*)"通信错误";
 661   4                     set_statusbar_window(&statusbar);
 662   4                             languge_mode(English,no);
 663   4                             set_window_str(","); 
 664   4                     languge_mode(Chinese,no);
 665   4                             set_window_str("请检查通讯电路是否正常"); 
 666   4                             languge_mode(English,no);
 667   4                             set_window_str("!"); 
 668   4                              }
 669   3                              goto again;     
 670   3                      }
 671   2                      else
 672   2                      {
 673   3                              return(AIBUF[6]+AIBUF[7]*256);
 674   3                      }
 675   2              }
 676   1      }
 677          
 678          
 679          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1699    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =     13    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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