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

📄 hardware.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 899   2                      break;
 900   2              }       
 901   1      }
 902          
 903          //-------------------------------------------------------------------------
 904          //函数名称:void SampleStartControl(void)
 905          //功    能:开始采样
 906          //输入参数:无  
 907          //返    回:无                                                  
 908          //完成日期:4/16/2007
 909          //-------------------------------------------------------------------------
 910          void SampleStartControl(void)
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 16  

 911          {
 912   1              TMR3CN |= 0x04;
 913   1      }
 914          
 915          //-------------------------------------------------------------------------
 916          //函数名称:void SampleStopControl(void)
 917          //功    能:停止采样
 918          //输入参数:无  
 919          //返    回:无                                                  
 920          //完成日期:4/16/2007
 921          //-------------------------------------------------------------------------
 922          void SampleStopControl(void)
 923          {
 924   1              TMR3CN &= ~0x04;
 925   1      }
 926          
 927          //--------------------------------------------------------------------------------------------------
 928          //函数名称:void SoftReset(void)
 929          //功    能:软件复位
 930          //输入参数:无
 931          //返    回:无                                           
 932          //-------------------------------------------------------------------------------------------------
 933          void SoftReset(void)
 934          {
 935   1              RSTSRC |= 0x10;
 936   1      }
 937          
 938          //-------------------------------------------------------------------------
 939          //函数名称:void InitSampleType(void)
 940          //功    能:将采样类型初始化成位变量的形式
 941          //输入参数:无  
 942          //返    回:无                                                  
 943          //-------------------------------------------------------------------------
 944          void InitSampleType(void)
 945          {
 946   1              if((uchSampleType == 13) || (uchSampleType == 16) || (uchSampleType == 18))
 947   1              {
 948   2                      b_NotIntegralChannelType = 1;
 949   2                      b_IntegralChannelType = 0;
 950   2                      b_LVDTChannelType = 0;  
 951   2              }
 952   1              else if ((uchSampleType == 14) || (uchSampleType == 17))
 953   1              {
 954   2                      b_NotIntegralChannelType = 0;
 955   2                      b_IntegralChannelType = 1;
 956   2                      b_LVDTChannelType = 0;
 957   2              }
 958   1              else if ((uchSampleType == 22) || (uchSampleType == 28))
 959   1              {
 960   2                      b_NotIntegralChannelType = 0;
 961   2                      b_IntegralChannelType = 0;
 962   2                      b_LVDTChannelType = 1;  
 963   2              }       
 964   1              else
 965   1              {
 966   2                      b_NotIntegralChannelType = 1;
 967   2                      b_IntegralChannelType = 0;
 968   2                      b_LVDTChannelType = 0;  
 969   2              }
 970   1      }
 971          
 972          
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 17  

 973          
 974          //--------------------------------------------------------
 975          //函数名称:void ADC0_ISR (void) interrupt 15 
 976          //功    能:采样中断采样数据,
 977          //输入参数:无                             
 978          //返    回:无
 979          //作    者:佟文杰
 980          //----------------------------------------------------------
 981          void ADC0_ISR (void) interrupt 15 
 982          { 
 983   1              AD0INT = 0;
 984   1              if (b_NotIntegralChannelType == 1)              //非积分通道数据采集   a-a   v-v   d-d
 985   1              {
 986   2      //              if((AMX0SL == 0x00)||(AMX0SL == 0x01)||(AMX0SL == 0x02)||(AMX0SL == 0x03))
 987   2      //          {  
 988   2                      if(AMX0SL == 0x00)                          
 989   2                      {
 990   3                          AMX0SL = 0x01;      
 991   3                              SampBuffer0[SamplePTR0] = ADC0;            
 992   3                              SamplePTR0 = (SamplePTR0 + 1) & MAXLENGTH;                      
 993   3                      }
 994   2                      else if(AMX0SL == 0x01)          
 995   2                      {
 996   3                              AMX0SL = 0x02;
 997   3                              SampBuffer1[SamplePTR1] = ADC0;         
 998   3                              SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
 999   3                      }
1000   2                      else if(AMX0SL == 0x02)            
1001   2                      {
1002   3                              AMX0SL = 0x03; 
1003   3                              SampBuffer2[SamplePTR2] = ADC0;          
1004   3                              SamplePTR2 = (SamplePTR2 + 1) & MAXLENGTH;
1005   3                      }       
1006   2                      else            
1007   2                      {
1008   3                              AMX0SL = 0x00;
1009   3                              SampBuffer3[SamplePTR3] = ADC0;   
1010   3                              SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1011   3      
1012   3      //                      if((SamplePTR3%uiGroupLength) == 0)     
1013   3                              if((SamplePTR3 & 0x0ff) == 0)
1014   3                              {       
1015   4                                      SetSampleLocationStatus(uchSampleLocationCounter);                                                                                                                                              
1016   4                                      uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x0f;
1017   4                                      
1018   4                                      SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1019   4                                      SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);
1020   4                                      SetCurProcessingIndex();                                                                                
1021   4                              }
1022   3                      }  
1023   2              }
1024   1              else if (b_IntegralChannelType == 1)     //积分通道数据采集      a-v   v-d
1025   1              {
1026   2      //              if((AMX0SL == 0x04)||(AMX0SL == 0x01)||(AMX0SL == 0x05)||(AMX0SL == 0x03))
1027   2      //          {  
1028   2                      if(AMX0SL == 0x04)                //积分1通道          
1029   2                      {
1030   3                          AMX0SL = 0x01;                
1031   3                              SampBuffer0[SamplePTR0] = ADC0;
1032   3                              SamplePTR0 = (SamplePTR0 + 1) & MAXLENGTH;                      
1033   3                      }
1034   2      
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 18  

1035   2                      else if(AMX0SL == 0x01)       //直流1通道   
1036   2                      {
1037   3                              AMX0SL = 0x05;           
1038   3                              SampBuffer1[SamplePTR1] = ADC0;
1039   3                              SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
1040   3                      }
1041   2      
1042   2                      else if(AMX0SL == 0x05)     //积分2通道       
1043   2                      {
1044   3                              AMX0SL = 0x03; 
1045   3                              SampBuffer2[SamplePTR2] = ADC0;
1046   3                              SamplePTR2 = (SamplePTR2 + 1) & MAXLENGTH;
1047   3                      }       
1048   2                
1049   2                      else                                    //直流2通道
1050   2                      {
1051   3                              AMX0SL = 0x04;
1052   3                              SampBuffer3[SamplePTR3] = ADC0;
1053   3                              SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1054   3      
1055   3                              if((SamplePTR3 & 0x0ff) == 0)
1056   3                              {                                                                                                                                                               
1057   4                                      SetSampleLocationStatus(uchSampleLocationCounter);                                                                                                                                              
1058   4                                      uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x0f;
1059   4                                      SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1060   4                                      SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);
1061   4                                      SetCurProcessingIndex();                                                                                
1062   4                              }
1063   3                      }  
1064   2              }
1065   1              else if (b_LVDTChannelType == 1)         //22     28  LVDT通道类型
1066   1              {
1067   2      //              if((AMX0SL == 0x01) || (AMX0SL == 0x03))
1068   2      //              {
1069   2                      if(AMX0SL == 0x01)               
1070   2                      {
1071   3                              AMX0SL = 0x03;
1072   3                              SampBuffer1[SamplePTR1] = ADC0;
1073   3                              SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
1074   3                      }
1075   2                      else            
1076   2                      {
1077   3                              AMX0SL = 0x01;
1078   3                              SampBuffer3[SamplePTR3] = ADC0;
1079   3                              SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1080   3      
1081   3                              if((SamplePTR3 & 0x0ff) == 0)   
1082   3                              {                                                                                                                                                               
1083   4                                      SetSampleLocationStatus(uchSampleLocationCounter);                                                                                                                                              
1084   4                                      uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x07;
1085   4                                      SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1086   4                                      SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);                                                                                
1087   4                              }
1088   3                      }  
1089   2              }
1090   1              else
1091   1              {
1092   2                      SoftReset(); //如果通道类型不对,立即重新启动系统
1093   2              }               
1094   1      }                                       
1095          
1096          /////////////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 19  

1097          //unsigned char readCANreg(unsigned char xdata *regAddr)
1098          //入口参数:读取的地址  
1099          //函数返回:读出的数据  
1100          //全局变量:无
1101          //功能描述:在读某一地址的数据时,调用该函数
1102          //函数说明:从SJA1000中读取数据                                                
1103          /////////////////////////////////////////////////////////////////////////////////////////
1104          unsigned char readCANreg(unsigned char xdata *regAddr)
1105          {
1106   1              unsigned char uchValue;
1107   1              uchValue = *regAddr;
1108   1              return uchValue;
1109   1      }
1110          unsigned char readCANregRemote(unsigned char xdata *regAddr)
1111          {
1112   1              unsigned char uchValue;
1113   1              uchValue = *regAddr;
1114   1              return uchValue;
1115   1      }
1116          /////////////////////////////////////////////////////////////////////////////////////////
1117          //void writeCANreg(unsigned char xdata *regAddr, unsigned char value)
1118          //入口参数:写的地址,写的数据  
1119          //函数返回:无
1120          //全局变量:无
1121          //功能描述:在写某一地址的数据时,调用该函数
1122          //函数说明:向SJA1000中写入数据                                               
1123          ///////////////////////////////////////////////////////////

⌨️ 快捷键说明

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