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

📄 main.lst

📁 潜入市嵌入式开发 嵌入式开发
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   MAIN                                                                  08/30/2008 11:28:13 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //#include <reg51.h>
   2          
   3          #include<ABSACC.H>
   4          #include<intrins.h>
   5          #include<math.h>
   6          #include <Stc12c5412.H>
   7          
   8          
   9          
  10          #define SHEZHI  0xFE
  11          #define TINGJI  0xEF
  12          #define ZIJIAN  0xFD
  13          #define XIAOYIN  0xF7
  14          #define SHIJIAN  0xFB
  15          
  16          
  17          Display_Acord_Value(unsigned char choice,int value,bit Test_bit );
  18          
  19          //unsigned char read(unsigned int address);//read E2prom
  20          //void write(unsigned int address,unsigned char dd);
  21          
  22          
  23          
  24          ////////////////////////////////////////////////para setting参数设定,具体值
  25          unsigned char idata CPU_NO;
  26          unsigned char idata Para_Setting_Gear;//飞轮齿数
  27          unsigned char idata Para_Setting_StartTime;//启动按钮启动确认时间
  28          unsigned char idata Para_Setting_StopTime;//停机按钮停机时按键有效时间
  29          unsigned char idata Para_Setting_KeepTime;//时间显示保持时间
  30          unsigned int idata Para_Setting_AddTimeZero;//总累计时间清零阈值
  31          unsigned char idata Para_Setting_TemWater;//水温报警值
  32          unsigned char idata Para_Setting_TemOil;//油温报警值
  33          unsigned int idata Para_Setting_PreOil;//油压报警值
  34          unsigned int idata Para_Setting_Speed;//转速报警值
  35          unsigned int  idata Para_Setting_ReferenceSpeed_StopStart;//启动或停机转速阈值设定
  36          unsigned char idata Para_Setting_Stop_SureTime;//停机按下后继续送继电器确认停机时间
  37          
  38          
  39          unsigned char idata Para_Setting_WaterTem_K;//水温k
  40          unsigned char idata Para_Setting_WaterTem_b;//水温b
  41          
  42          //unsigned char idata Para_Setting_WaterTem_b;//水温b
  43          unsigned char idata Para_Setting_OilTem_K;//水温k
  44          unsigned char idata Para_Setting_OilTem_b;//水温b
  45          
  46          
  47                   ////////////////////////////////////////////*********************
  48            unsigned int idata Time_Minutes_Running=0;//now running time--minutes当前油机的运行分钟数   
  49            unsigned int idata Time_Hours_Running=0;  //now running time--hours  当前油机的运行小时数
  50          
  51            unsigned int idata Time_Minutes_Add;  /////add time minute油机运行累计分钟数
  52            unsigned int idata Time_Hours_Add;    /////add time Hour油机运行累计小时数
  53          
  54          
  55          
C51 COMPILER V7.06   MAIN                                                                  08/30/2008 11:28:13 PAGE 2   

  56          
  57          
  58          
  59          
  60          unsigned char   Value_For_Display[15];//DISPLAY  14 LED
  61          /////////////////////////for set from up device
  62          /*unsigned char idata CPU_NO1;
  63          unsigned char idata Para_Tem_Oil1;
  64          unsigned char idata Para_Tem_water1;
  65          unsigned char idata Para_Speed_Divide1;
  66          unsigned char idata Para_Speed_Alarm_Percent1;
  67          unsigned int idata Para_Speed_Standard1;
  68          unsigned char idata Para_Speed_Percent1; 
  69          unsigned int idata Para_Pre_Oil1;
  70          unsigned char Para_Pre_Oil_Zoom_k1;
  71          char Para_Pre_Oil_Shift_b1;
  72          
  73          */
  74          bit Recieve_Para_Start=0;//for serious 
  75          bit Recieve_Para_Stop=0;
  76          
  77          
  78          
  79          ////////////for stop motor(beyond speed)
  80          bit Bit_Start_Stop=0;
  81          unsigned int  idata Count_Start_Stop=0;
  82          /////////////////////////////
  83          unsigned int idata Code_Input;//密码输入
  84          unsigned char idata  key_out;////////读键盘临时用
  85          unsigned char idata Times_TimeButton=0;//在正式设置参数时,  记录读取键盘的次数
  86          unsigned char idata Mode_Code_SettingPara=0;//设定参数时,模式选择码
  87          unsigned char idata Temp_Output;//输出用
  88          
  89           int idata Temp_Adjust;//设定参数时,临时变量  用来增减
  90          
  91          int idata  Tem_Oil[5];//-20--150;the last byte is average value
  92          int idata Tem_Water[5];///-20--150
  93          int idata Pre_Oil[5];//0-1200kpa
  94          int idata Voltage_28v[5];
  95          unsigned int  idata  Speed;//300--9999
  96          
  97          unsigned int idata Speed_Count=0;//for test speed
  98          unsigned int idata Capture_Count=0;
  99          unsigned int idata Display_Count=0;
 100          unsigned int idata Alarm_Count=0;
 101          
 102          unsigned int idata GetKey_Count=0;
 103          
 104          unsigned int Test_Count=0;
 105          
 106          
 107          //////////////////////////////////
 108          unsigned int  idata  GetKey_Count_ForUse=0;//for get key timer启动、
 109          unsigned int idata GetKey_Count_ForUse_Stop=0;//停机等按钮的定时器
 110          unsigned int   Count_DisplayTime_5s=0;/////时间显示定时器5s
 111          unsigned int Count_RunningTime=0;//油机运行时间累加
 112          unsigned int idata Count__Stop_Sure=0;//停机确认后送继电器的时间
 113          unsigned int Count_SettingPara=0;//停机设置参数时,软件定时器   是否按住消声按键10秒
 114          unsigned int Count_NoOperation_Exit=0;   //在设定参数时,10秒无操作离开设定模式    计时器
 115          
 116          //bit Bit_Sign_Alarm_Stop=0;//一报警就停机标志
 117          
C51 COMPILER V7.06   MAIN                                                                  08/30/2008 11:28:13 PAGE 3   

 118          unsigned char Byte_Sign_First_Alarm_StartStop=0;
 119          unsigned int idata      Count_Alarm_Stop_Send=0;//报警就停机定时器
 120          
 121          unsigned int idata Count_NoKey=0;//没有键盘操作的定时器
 122          
 123          
 124          unsigned int idata Count_Start_Machine_15s=0;//刚刚启动时,15秒内不做保护   只进行停机和检测 ,没有报警
 125          
 126          unsigned char idata  E2prom=0;//for E2prom write; if time over ,has problem in E2prom 
 127          
 128          
 129            bit Sign_Alarm_Speed=0;   //stand for if alarm dispaly
 130            bit Sign_Alarm_Water=0;
 131            bit Sign_Alarm_OilPre=0;
 132            bit Sign_Alarm_OilTem=0;
 133            bit Sign_Tem_Oil=0;  // stand for if beyond thold
 134            bit Sign_Tem_Water=0;
 135            bit Sign_Pre_Oil=0;
 136            bit Sign_Speed=0;
 137            //////////////////////////////////////
 138            bit Bit_Stop_Sure=0;//停机确认位(按下1s)
 139            bit Bit_Sign_DisplayTime=0;//时间按钮按下标志
 140            bit Bit_Sign_DisplayTime_OilPre=0;///时间显示时,标志位(不显示油压)
 141            bit Bit_Sign_SettingPara=0;//在停机设置参数时,是否按住消声按钮的标志
 142            bit Bit_Sign_Running=0;//检测是否运行的标志(根据转速500)
 143            bit Bit_Sign_SettingParaDisplay=0;//在停机的状态下按住停机键,就进行设定显示  标志
 144            bit Bit_Sign_InputCode=0;//在设置参数时,能否进行密码输入的标志
 145            bit Bit_Sign_SettingPara_Sure=0;//在设置参数时,确认能否进入密码输入的标志
 146          
 147            bit Bit_Sign_Modify=0;//进入正式修改参数时,是否修改的标志
 148            bit Bit_Sign_First_ReadPara=1;//第一次取出要修改的参数
 149          
 150          
 151            bit Bit_Exit_SettingPara_Normal=0;//在正式设定参数时,是否离开的标志
 152              bit Bit_Sign_DisplaySetting_Sure=0;//确定显示参数设定和只能设定参数的标志
 153          
 154          bit Bit_Sign_Alarm_NoKeyBoard=0;//有警报时,不能进行停机、启动操作
 155          
 156            bit Bit_Sign_SettingPara_Normal=0;////在设置参数时,确认能否进入最终正式设定状态的标志
 157          
 158            bit Bit_Can_TimeStart=0;//设置参数时  是否按住消声
 159                           
 160          
 161            bit Get_Key_bit=0;//fot get key 
 162          
 163            bit idata Signed_Test=0;//for stand for if test system
 164            bit Signed_Test_CPU=1;
 165            bit Signed_Test_24v=1;
 166            bit Signed_Test_5v=1;
 167            float idata Value_Test_24v;
 168            //float idata Value_Test_5v;
 169          
 170          
 171           // unsigned char Temp_Pre_Oil;
 172           // unsigned char Temp_Tem_Oil;
 173           // unsigned char Temp_Tem_Water;
 174          
 175            unsigned char Key;//for get key 
 176          
 177          
 178            bit data Signed_Sound_Off=0;//for sound
 179           // bit Signed_Sound_Off_Back=0;
C51 COMPILER V7.06   MAIN                                                                  08/30/2008 11:28:13 PAGE 4   

 180          ////////////////////////////////
 181          
 182          unsigned char  Byte_Sign_DisplayTime=1;////时间显示标志按钮按下次数
 183          
 184          ///////////////////////////////***********************stc12c5412AD
 185          
 186          //////////////////////////EEPROM 操作
 187          unsigned char EEPROM_read(unsigned int addr)//EEPROM字节读
 188          {
 189   1              ISP_ADDRH=(addr&0xff00)>>8;
 190   1              ISP_ADDRL=addr&0x00ff;
 191   1              ISP_CONTR=0x81;
 192   1              ISP_CMD=1;
 193   1              ISP_TRIG=0x46;
 194   1              ISP_TRIG=0xb9;
 195   1              return ISP_DATA;
 196   1      }
 197          //--------------------------------------------------------------------
 198          void EEPROM_write(unsigned int addr,unsigned char dat)//EEPROM字节写
 199          {
 200   1              ISP_DATA=dat;
 201   1              ISP_ADDRH=(addr&0xff00)>>8;
 202   1              ISP_ADDRL=addr&0x00ff;
 203   1              ISP_CONTR=0x81;
 204   1              ISP_CMD=2;
 205   1              ISP_TRIG=0x46;
 206   1              ISP_TRIG=0xb9;
 207   1      }
 208          //--------------------------------------------------------------------
 209          void EEPROM_ERASE(unsigned int addr)//EEPROM扇区擦除
 210          {
 211   1              ISP_ADDRH=(addr&0xff00)>>8;
 212   1              ISP_ADDRL=addr&0x00ff;
 213   1              ISP_CONTR=0x81;
 214   1              ISP_CMD=3;
 215   1              ISP_TRIG=0x46;
 216   1              ISP_TRIG=0xb9;
 217   1      }
 218          
 219          void Delay_400us(void)//for getting value of measure  120us
 220          {
 221   1        unsigned char time=200;
 222   1        while(time>0)
 223   1        {
 224   2          _nop_();//delay 2 us
 225   2          _nop_();//
 226   2          time--;
 227   2        }
 228   1      }
 229          /////////////////get AD value 
 230          /*
 231              choice = 0 , oil temprature
 232                  choice = 1 , oil pressure 
 233                  choice = 2 , water temprature
 234                  choice = 3 , electricity voltage
 235          */
 236          
 237          void AD_init(unsigned char AD_port_sel ) //ADC初始化
 238          {
 239   1              ADC_CONTR|=0x80;  //开ADC电源
 240   1              Delay_400us();  //add delay 
 241   1              Delay_400us(); 
C51 COMPILER V7.06   MAIN                                                                  08/30/2008 11:28:13 PAGE 5   

 242   1              Delay_400us(); 
 243   1          switch(AD_port_sel) //选择作为ADC的端口
 244   1              {
 245   2                      case 0:
 246   2                      P1M0=0x01;
 247   2                      P1M1=0x00;
 248   2                      ADC_CONTR&=0xf8;
 249   2       
 250   2                      break;
 251   2                      
 252   2                      case 1:
 253   2                      P1M0=0x02;
 254   2                      P1M1=0x00;
 255   2                      ADC_CONTR&=0xf8;
 256   2                      ADC_CONTR|=0x01;
 257   2                      break;
 258   2       
 259   2                      case 2:
 260   2              //      P1M0=0x04;
 261   2              //      P1M1=0x00;
 262   2                      //ADC_CONTR&=0xf8;
 263   2              //      ADC_CONTR|=0x02;
 264   2              //ADC_CONTR=0xe2;
 265   2                      P1M0=0x04;
 266   2                      P1M1=0x00;
 267   2                      ADC_CONTR&=0xf8;
 268   2                      ADC_CONTR|=0x02;
 269   2                      break;
 270   2       
 271   2                      case 3:
 272   2                      P1M0=0x08;
 273   2                      P1M1=0x10;
 274   2                      ADC_CONTR&=0xf8;
 275   2                      ADC_CONTR|=0x03;
 276   2                      break;
 277   2       
 278   2                      case 4:
 279   2                      P1M0=0x10;
 280   2                      P1M1=0x00;
 281   2                      ADC_CONTR&=0xf8;
 282   2                      ADC_CONTR|=0x03;
 283   2                      break;
 284   2       
 285   2                      case 5:
 286   2                      P1M0=0x20;
 287   2                      P1M1=0x00;
 288   2                      ADC_CONTR&=0xf8;
 289   2                      ADC_CONTR|=0x05;

⌨️ 快捷键说明

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