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

📄 hardware.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 449   1              uchBypassStatusBak[1] = uchBypassStatusBak[0];
 450   1              uchBypassStatusBak[0] = HWBypassStatus();
 451   1      
 452   1              if(uchBypassStatus != uchBypassStatusBak[2])
 453   1              {
 454   2                      if (uchBypassStatusBak[0] == uchBypassStatusBak[1] && uchBypassStatusBak[0] == uchBypassStatusBak[2])
 455   2                      {
 456   3                              uchBypassStatus = uchBypassStatusBak[0];
 457   3                      }
 458   2              }
 459   1              SetHWBypassStatusMain(uchBypassStatus);
 460   1      
 461   1              uchTripleStatusBak[2] = uchTripleStatusBak[1];
 462   1              uchTripleStatusBak[1] = uchTripleStatusBak[0];
 463   1              uchTripleStatusBak[0] = HWTripleStatus();
 464   1      
 465   1              if(uchTripleStatus != uchTripleStatusBak[2])
 466   1              {
 467   2                      if (uchTripleStatusBak[0] == uchTripleStatusBak[1] && uchTripleStatusBak[0] == uchTripleStatusBak[2])   
 468   2                      {                                                                                                            
 469   3                              uchTripleStatus = uchTripleStatusBak[0];
 470   3                      }
 471   2              }
 472   1              SetHWTripleStatusMain(uchTripleStatus);
 473   1      
 474   1              uiHeartbeatValue++;
 475   1              
 476   1      }
 477          
 478          //--------------------------------------------------------------------------
 479          //函数名称:void InitDA(void)
 480          //功    能:DA初始化       
 481          //输入参数:无
 482          //返    回:无
 483          //完成日期:4/12/2007
 484          //--------------------------------------------------------------------------
 485          void InitDA(void)
 486          {
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 9   

 487   1              DAC0CN = 0x80;          //使能,写高字节更新
 488   1          DAC1CN = 0x80; 
 489   1      }
 490          
 491          //--------------------------------------------------------------------------
 492          //函数名称:void DirectCurrentOutput(unsigned char uchChannel, unsigned int uiDAValue)
 493          //功    能:根据通道的选择决定输出的电流      
 494          //输入参数:当前要输出的DAC值和通道号,通道号:1表示第一通道;2表示第二通道
 495          //返    回:无
 496          //完成日期:4/12/2007
 497          //--------------------------------------------------------------------------
 498          void DirectCurrentOutput(unsigned char uchChannel, unsigned int uiDAValue)
 499          {
 500   1              if (uchChannel == 1)
 501   1          {
 502   2                      DAC0L = uiDAValue;
 503   2                  DAC0H = uiDAValue >> 8;
 504   2          }
 505   1          if (uchChannel == 2)
 506   1          {
 507   2                  DAC1L = uiDAValue;
 508   2                  DAC1H = uiDAValue >> 8;
 509   2          }
 510   1      }
 511          
 512          //--------------------------------------
 513          //函数名称:void DisableDog(void)
 514          //功    能:禁止看门狗     
 515          //输入参数:无
 516          //返    回:无
 517          //完成日期:4/13/2007
 518          //--------------------------------------
 519          void DisableDog(void)                   
 520          {
 521   1              EA =0;
 522   1      
 523   1          WDTCN = 0xde;
 524   1          WDTCN = 0xad;
 525   1      
 526   1          EA = 1;
 527   1      }
 528          
 529          //--------------------------------------
 530          //函数名称:void EnableDog(void)
 531          //功    能:使能看门狗     
 532          //输入参数:无
 533          //返    回:无
 534          //完成日期:4/13/2007
 535          //--------------------------------------
 536          void EnableDog(void)               
 537          {
 538   1              WDTCN = 0xa5;   
 539   1      }
 540          
 541          //--------------------------------------
 542          //函数名称:void FeedDog(void)
 543          //功    能:喂看门狗     
 544          //输入参数:无
 545          //返    回:无
 546          //完成日期:4/13/2007
 547          //--------------------------------------
 548          void FeedDog(void)                         
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 10  

 549          {
 550   1              WDTCN = 0xa5;   
 551   1      } 
 552          
 553          //--------------------------------------------------------
 554          //函数名称:void InitADC1(void) 
 555          //功    能:ADC1转换器初始化
 556          //输入参数:无
 557          //返    回:无
 558          //完成日期:4/13/2007
 559          //----------------------------------------------------------
 560          void InitADC1(void)
 561          {
 562   1              ADC1CF = 0xf9;    //0.8MHZ
 563   1          ADC1CN = 0x90;      
 564   1      
 565   1          EIE2 &= 0xf7;       //关ADC1中断    
 566   1      }
 567          
 568          //--------------------------------------------------------
 569          //函数名称:void InitRef(void)
 570          //功    能:参考电压初始化
 571          //输入参数:无
 572          //返    回:无
 573          //完成日期:4/13/2007
 574          //----------------------------------------------------------
 575          void InitRef(void)
 576          {   
 577   1              REF0CN |= 0x02;              
 578   1          REF0CN &= 0xe6;                  
 579   1      }
 580          
 581          //----------------------------------------------------------------------
 582          //函数名称:unsigned char HWTestSystemVoltage(unsigned char uchChannel)
 583          //功    能:应用ADC1测量系统的电压
 584          //输入参数:通道号
 585          //返    回:所测量的通道的电压值
 586          //完成日期:4/13/2007
 587          //----------------------------------------------------------------------
 588          unsigned char HWTestSystemVoltage(unsigned char uchChannel)
 589          {
 590   1              xdata unsigned char uchNumberTest; 
 591   1          xdata unsigned int  uiVoltageTest_data[5];
 592   1      
 593   1          AMX1SL = uchChannel;
 594   1      
 595   1          for (uchNumberTest=0; uchNumberTest<5; uchNumberTest++)
 596   1          {                       
 597   2                      ADC1CN = ADC1CN & 0xdf;         //   AD1INT=0; 
 598   2                  ADC1CN = ADC1CN | 0x10;         //  AD1BUSY=1;
 599   2      
 600   2                  while( (ADC1CN & 0x20) == 0)    //wait AD1INT=1   
 601   2                  {;}
 602   2                                  
 603   2                  uiVoltageTest_data[uchNumberTest] = ADC1; 
 604   2              } 
 605   1              return (uiVoltageTest_data[0] + uiVoltageTest_data[1] + uiVoltageTest_data[2] 
 606   1                         + uiVoltageTest_data[3] + uiVoltageTest_data[4]) / 5;
 607   1      }
 608          
 609          //-----------------------------------------------------------------
 610          //函数名称:void SetExternalRAM(void)
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 11  

 611          //功    能:外部存储器初始化,包括地址线、数据线、 ALE的工作方式        
 612          //输入参数:无
 613          //返    回:无
 614          //完成日期:4/12/2007
 615          //-----------------------------------------------------------------
 616          void SetExternalRAM(void)
 617          {         
 618   1              EMI0CF = 0x25;           //27
 619   1          EMI0TC = 0x8d;              //20080322      ff                                                                                      
 620   1      }
 621          
 622          //--------------------------------------------------------------------------------------------------
 623          //函数名称:void WriteExternFlash(unsigned char xdata *destination, unsigned char xdata *Source, unsigned 
             -int uchLength)
 624          //功    能:将源地址的内容根据长度写入到外部28C64存储器的目的地址中      
 625          //输入参数:目的地址、源地址、数据长度(不包括校验和位)但是程序已经把校验和存入到内存当中了(存入一个字)
 626          //返    回:无
 627          //完成日期:4/13/2007                     注意:写一页要有最少7到8毫秒的延时
 628          //-------------------------------------------------------------------------------------------------
 629          void WriteExternFlash(unsigned char xdata *destination, unsigned char xdata *Source, unsigned int uiLength
             -)
 630          {
 631   1              unsigned int xdata uiL;
 632   1              unsigned int xdata uiTempVariable;
 633   1      
 634   1              uiTempVariable = CaculateCheckSum(Source, uiLength);
 635   1              destination = destination + FLASHFIRSTADDRESS;
 636   1      
 637   1              EA = 0;
 638   1              uiLength = uiLength + 1;
 639   1              for (uiL=1; uiL<uiLength; uiL++)
 640   1              {
 641   2                      *destination = *Source;         
 642   2                      destination++;
 643   2                      Source++; 
 644   2                      if (uiL == 64)
 645   2                      {
 646   3                              EA = 1;
 647   3                              uiLength = uiLength - 64;
 648   3                              uiL = 0;
 649   3                              DelayTimeCount(2);
 650   3                              EA = 0;
 651   3                      }
 652   2               }
 653   1       
 654   1              EA = 1;
 655   1              DelayTimeCount(2);  //20080417
 656   1              EA = 0;
 657   1      
 658   1          *destination = uiTempVariable >> 8;
 659   1              destination++;
 660   1              EA = 1;
 661   1              DelayTimeCount(2);  //20080417
 662   1              EA = 0;
 663   1      
 664   1              *destination = uiTempVariable;       //在内存中存储的校验和高位在前,低位在后
 665   1              EA = 1; 
 666   1              DelayTimeCount(2);      
 667   1      }
 668          
 669          //--------------------------------------------------------------------------------------------------
 670          //函数名称:void ReadExternFlash(unsigned char xdata *destination,unsigned char xdata *source,unsigned int
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 12  

             - uchLength)
 671          //功    能:根据长度将外部28C64存储器源地址的内容读出来放到目的地址中      
 672          //输入参数:目的地址、源地址、数据长度 ,源地址是相对地址,程序中所用的地址为基址+相对地址
 673          //返    回:无
 674          //完成日期:4/13/2007

⌨️ 快捷键说明

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