📄 main.lst
字号:
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 + -