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

📄 hardware.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 675          //-------------------------------------------------------------------------------------------------
 676          void ReadExternFlash(unsigned char xdata *destination,unsigned char xdata *source,unsigned int uiLength)
 677          {
 678   1              unsigned int xdata uiL;
 679   1      
 680   1              source = source + FLASHFIRSTADDRESS;
 681   1      
 682   1              EA = 0;
 683   1              for (uiL=0; uiL<uiLength; uiL++)
 684   1              {
 685   2                      *destination = *source;
 686   2                      source++;
 687   2                      destination++;          
 688   2              }
 689   1          EA = 1; 
 690   1      } 
 691          
 692          //--------------------------------------------------------------------------------------------------
 693          //函数名称:void ReadFlashDefaultPara(unsigned char xdata *destination,unsigned char code *source,unsigned
             - int uiLength)
 694          //功    能:根据长度将FLASH存储器源地址的内容读出来放到目的地址中      
 695          //输入参数:目的地址、源地址、数据长度 ,源地址是相对地址,程序中所用的地址为基址+相对地址
 696          //返    回:无
 697          //完成日期:4/13/2007
 698          //-------------------------------------------------------------------------------------------------
 699          void ReadFlashDefaultPara(unsigned char xdata *destination,unsigned char code *source,unsigned int uiLengt
             -h)
 700          {
 701   1              unsigned int xdata uiL;
 702   1      
 703   1              EA = 0;
 704   1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
             -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
             -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
             -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
             -                                                                                                                                                                                                                                                                                                        
 705   1              for (uiL=0; uiL<uiLength; uiL++)
 706   1              {
 707   2                      *destination = *source;
 708   2                      source++;
 709   2                      destination++;          
 710   2              }
 711   1          EA = 1; 
 712   1      } 
 713          
 714          //--------------------------------------------------------------------------------------------------
 715          //函数名称:unsigned char GetCANAdress(void)
 716          //功    能:通过P5口得到通信的地址
 717          //输入参数:无
 718          //返    回:CAN通信地址                                          
 719          //完成日期:4/13/2007
 720          //-------------------------------------------------------------------------------------------------
 721          unsigned char GetCANAdress(void)
 722          {
 723   1              unsigned char uchCANAdress;
 724   1      
 725   1              uchCANAdress = P5 & 0x1f;
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 13  

 726   1              return uchCANAdress;
 727   1      }
 728          
 729          //--------------------------------------------------------------------------------------------------
 730          //函数名称:void InitRuningLEDControl(void)
 731          //功    能:初始化灯闪烁的定时器
 732          //输入参数:无
 733          //返    回:无                                           
 734          //完成日期:4/13/2007           定时25.6ms中断一次
 735          //-------------------------------------------------------------------------------------------------
 736          void InitRuningLEDControl(void)
 737          {
 738   1              TF2 = 0;    // 清除标志位
 739   1              RCLK0 = 0;
 740   1              TCLK0 = 0;
 741   1              CPRL2 = 0;
 742   1              TR2 = 1; //配置定时器2为自动重装载方式
 743   1              EXEN2 = 0;
 744   1              CT2 = 0;    //由系统时钟提供时钟
 745   1      
 746   1              CKCON &= 0xdf;
 747   1              TL2 = 0xf0;
 748   1              TH2 = 0xf0;
 749   1              RCAP2L = 0x00;
 750   1              RCAP2H = 0x48;
 751   1              ET2 = 0;        //禁止中断
 752   1              PT2 = 0;        //设置为低优先级
 753   1      }
 754          
 755          //--------------------------------------------------------------------------------------------------
 756          //函数名称:void RuningLEDStart(void)
 757          //功    能:开始灯的闪烁控制
 758          //输入参数:无
 759          //返    回:无                                           
 760          //完成日期:4/13/2007
 761          //-------------------------------------------------------------------------------------------------
 762          void RuningLEDStart(void)
 763          {
 764   1              ET2 = 1;
 765   1      }
 766          
 767          //--------------------------------------------------------------------------------------------------
 768          //函数名称:void RuningLEDStop(void)
 769          //功    能:停止灯的闪烁控制
 770          //输入参数:无
 771          //返    回:无                                           
 772          //完成日期:4/13/2007
 773          //-------------------------------------------------------------------------------------------------
 774          void RuningLEDStop(void)
 775          {
 776   1              ET2 = 0;
 777   1      }
 778          
 779          //--------------------------------------------------------------------------------------------------
 780          //函数名称:void ControlRuningLED_isr(void) interrupt 5
 781          //功    能:控制OK灯的闪烁情况
 782          //输入参数:无
 783          //返    回:无                                           
 784          //完成日期:4/13/2007
 785          //-------------------------------------------------------------------------------------------------
 786          void ControlRuningLED_isr(void) interrupt 5
 787          {
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 14  

 788   1              static unsigned int xdata uiCountValue = 0;
 789   1              static unsigned char xdata uchLEDControlFlag = 0;
 790   1      
 791   1              uiCountValue++;
 792   1              TF2 = 0;
 793   1              if (uiCountValue >= 3) 
 794   1              {
 795   2                      if (uchLEDControlFlag == 0)
 796   2                      {
 797   3                              HWOKLEDControl(0);                 //灯亮
 798   3                              uchLEDControlFlag = 1;  
 799   3                              uiCountValue = 0;
 800   3                      }
 801   2                      else 
 802   2                      {
 803   3                              HWOKLEDControl(1);                               //灯灭  他们的控制受系统OK状态控制
 804   3                              uchLEDControlFlag = 0;  
 805   3                              uiCountValue = 0;
 806   3                      }
 807   2              }
 808   1      
 809   1      }
 810             
 811          //*************************************************
 812          //             ADC0初始化                         *
 813          //*************************************************
 814          void ADC0_Init (void)
 815          {
 816   1              ADC0CN = 0x44;                                  //ADC0 控制
 817   1              AMX0CF = 0x00;                                  //单端输入
 818   1              AMX0SL = 0x00;                  //采样通道初始化
 819   1              ADC0CF = 0x58;                                  //增益,时钟=22.1184/6M
 820   1              REF0CN=0x02;                                    //外部参考
 821   1              AD0EN=1;                                            //ADC0使能
 822   1              EIE2|=0x02;                     //允许ADC中断
 823   1              EIP2 |= 0x02;                                   //采样ADC0中断为高优先级
 824   1      }
 825          
 826          //*************************************************
 827          //            定时器3初始化                       *
 828          //*************************************************
 829          void SetSampleRate(int counts)
 830          {
 831   1              TMR3CN = 0x00;                                  // 停止定时器3,清除TF3,使用SYSCLK
 832   1              TMR3RL  = -counts;               // 初始化重载值
 833   1              TMR3    = 0xffff;                // 立即重装载
 834   1              EIE2   &= ~0x01;                 // 禁止定时器3中断
 835   1              TMR3CN |= 0x04;                                 // 启动定时器3
 836   1      }
 837          
 838          //-------------------------------------------------------------------------
 839          //函数名称:void SetSampleTypeHW(unsigned char uchChannelType)
 840          //功    能:将通道类型设置到硬件模块中
 841          //输入参数:通道类型    
 842          //返    回:无                           
 843          //完成日期:4/16/2007
 844          //-------------------------------------------------------------------------
 845          void SetSampleTypeHW(unsigned char uchChannelType)
 846          {
 847   1              SampleStopControl();             //HHH     
 848   1              if (((uchChannelType > 12) && (uchChannelType < 19)) || ((uchChannelType > 20) && (uchChannelType < 23)) 
             -|| (uchChannelType == 28))
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 15  

 849   1              {
 850   2                      uchSampleType = uchChannelType;
 851   2              }
 852   1              else
 853   1              {
 854   2                      uchSampleType = 13;                        //设定类型,不在范围之内默认轴位置
 855   2              }
 856   1      //      SampleStartControl();           
 857   1      }
 858          
 859          //-------------------------------------------------------------------------
 860          //函数名称:void SetInitChannel(void)
 861          //功    能:设置通道初始化
 862          //输入参数:无  
 863          //返    回:无                           
 864          //完成日期:4/16/2007
 865          //-------------------------------------------------------------------------
 866          void SetInitChannel(void)
 867          {
 868   1              switch(uchSampleType)
 869   1              {
 870   2                      case 13:           //加速度输入    输出加速度
 871   2                              AMX0SL = 0x00;
 872   2                              break;
 873   2                      case 14:           //加速度输入    输出速度
 874   2                              AMX0SL = 0x04;
 875   2                              break;
 876   2                      case 15:           // 加速度输入    输出位移
 877   2                              AMX0SL = 0x00;
 878   2                              break;
 879   2                      case 16:          // 速度输入      输出速度
 880   2                              AMX0SL = 0x00;
 881   2                              break;
 882   2                      case 17:          //速度输入      输出位移
 883   2                              AMX0SL = 0x04;
 884   2                              break;
 885   2                      case 18:          //  位移输入     输出位移
 886   2                              AMX0SL = 0x00;
 887   2                              break;
 888   2                      case 21:         //     涡流+速度    输出复合式振动
 889   2                              AMX0SL = 0x00;
 890   2                              break;
 891   2                      case 22:          //LVDT输入      输出机壳膨胀
 892   2                              AMX0SL = 0x01;
 893   2                              break;
 894   2                      case 28:          //LVDT输入      输出机壳膨胀
 895   2                              AMX0SL = 0x01;
 896   2                              break;   
 897   2                      default:
 898   2                              AMX0SL = 0x00;

⌨️ 快捷键说明

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