📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/28/2008 18:17:59 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(4,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //#include <reg51.h>
2
3 #include<ABSACC.H>
4 #include<intrins.h>
5 #include<math.h>
6 #include <ATmel89X55.H>
7
8 #define QIDONG 0xEF
9 #define TINGJI 0xF7
10 #define ZIJIAN 0xFD
11 #define XIAOYIN 0xFB
12 #define SHIJIAN 0xFE
13 ///////////////////0603
14 #define QIDONG1 0xCF
15 #define TINGJI1 0xD7
16 #define ZIJIAN1 0xDD
17 #define XIAOYIN1 0xDB
18 #define SHIJIAN1 0xDE
19
20
21 Display_Acord_Value(unsigned int address,int value,bit Test_bit );
22
23 unsigned char read(unsigned int address);//read E2prom
24 void write(unsigned int address,unsigned char dd);
25
26 #define M 18//speed test ,one cycle contain M pulses
27
28 /////////////////////////
29 /////////////////////////////以下为2008.05.30在潍坊监控仪基础上为柳州监控仪编写软件
30 ////////////////////////////添加变量,并实现功能(特点为530开头)
31 int Tem_Kongyaji_530;
32 int Pre_Kongyaji_530;
33 int Pre_Jinqiguan_530;
34 int Pre_Chuqiguan_530;
35 bit Bit_Motor_TemPre;//显示发动机油温或者显示空压机油温、油压;TONGGUO采集键盘状态确定
36 unsigned char idata Para_Setting_TemOil_Kongyaji530=105;//空压机油温报警值
37 unsigned int idata Para_Setting_PreOil_Kongyaji530=400;//空压机油压报警值
38 bit Bit_Alarm_TemOil_Kongyaji530;//////空压机报警标志
39 bit Bit_Alarm_PreOil_Kongyaji530;
40
41 bit Bit_Sign_Display_ChuguanJinqiguan;////根据启动按钮按下与否,在0x8004显示进气管或储气罐大气压力
42
43
44
45
46
47
48
49
50 ////////////////////////////////////////////////para setting参数设定,具体值
51 unsigned char idata Para_Setting_Gear;//飞轮齿数
52 unsigned char idata Para_Setting_StartTime;//启动按钮启动确认时间
53 unsigned char idata Para_Setting_StopTime;//停机按钮停机时按键有效时间
54 unsigned char idata Para_Setting_KeepTime;//时间显示保持时间
55 unsigned int idata Para_Setting_AddTimeZero;//总累计时间清零阈值
C51 COMPILER V7.50 MAIN 07/28/2008 18:17:59 PAGE 2
56 unsigned char idata Para_Setting_TemWater;//水温报警值
57 unsigned char idata Para_Setting_TemOil;//油温报警值
58 unsigned int idata Para_Setting_PreOil;//油压报警值
59 unsigned int idata Para_Setting_Speed;//转速报警值
60 unsigned int idata Para_Setting_ReferenceSpeed_StopStart;//启动或停机转速阈值设定
61 unsigned char idata Para_Setting_Stop_SureTime;//停机按下后继续送继电器确认停机时间
62
63
64 unsigned char idata Para_Setting_WaterTem_K;//水温k
65 unsigned char idata Para_Setting_WaterTem_b;//水温b
66
67 //unsigned char idata Para_Setting_WaterTem_b;//水温b
68 unsigned char idata Para_Setting_OilTem_K;//水温k
69 unsigned char idata Para_Setting_OilTem_b;//水温b
70
71
72
73
74
75
76 ///////////////////some fixed paremeters
77 unsigned char idata CPU_NO;
78 ////unsigned char idata Para_Tem_Oil;
79 //unsigned char idata Para_Tem_water;
80 //unsigned char idata Para_Speed_Divide;
81 //unsigned char idata Para_Speed_Alarm_Percent;
82 //unsigned int idata Para_Speed_Standard;
83 //unsigned char idata Para_Speed_Percent;
84 //unsigned int idata Para_Pre_Oil;
85 //unsigned char idata Para_Pre_Oil_Zoom_k;
86 //char idata Para_Pre_Oil_Shift_b;
87 /////////////////////////for set from up device
88 /*
89 unsigned char idata CPU_NO1;
90 unsigned char idata Para_Tem_Oil1;
91 unsigned char idata Para_Tem_water1;
92 unsigned char idata Para_Speed_Divide1;
93 unsigned char idata Para_Speed_Alarm_Percent1;
94 unsigned int idata Para_Speed_Standard1;
95 unsigned char idata Para_Speed_Percent1;
96 unsigned int idata Para_Pre_Oil1;
97 unsigned char Para_Pre_Oil_Zoom_k1;
98 char Para_Pre_Oil_Shift_b1;
99 */
100
101 bit Recieve_Para_Start=0;//for serious
102 bit Recieve_Para_Stop=0;
103
104
105
106 ////////////for stop motor(beyond speed)
107 bit Bit_Start_Stop=0;
108 unsigned int Count_Start_Stop=0;
109
110 /////////////////////////////
111 unsigned int idata Code_Input;//密码输入
112 unsigned char idata key_out;////////读键盘临时用
113 unsigned char idata Times_TimeButton=0;//在正式设置参数时, 记录读取键盘的次数
114 unsigned char idata Mode_Code_SettingPara=0;//设定参数时,模式选择码
115 unsigned char idata Temp_Output;//输出用
116
117 int idata Temp_Adjust;//设定参数时,临时变量 用来增减
C51 COMPILER V7.50 MAIN 07/28/2008 18:17:59 PAGE 3
118
119 int idata Tem_Oil[5];//-20--150;the last byte is average value
120 int idata Tem_Water[5];///-20--150
121 int idata Pre_Oil[5];//0-1200kpa
122 int idata Voltage_28v[5];
123 unsigned int Speed;//300--9999
124
125 unsigned int idata Speed_Count=0;//for test speed
126 unsigned int idata Capture_Count=0;
127 unsigned int idata Display_Count=0;
128 unsigned int idata Alarm_Count=0;
129
130 unsigned int idata GetKey_Count=0;
131
132 unsigned int Test_Count=0;
133
134
135 //////////////////////////////////
136 unsigned int idata GetKey_Count_ForUse=0;//for get key timer启动、
137 unsigned int idata GetKey_Count_ForUse_Stop=0;//停机等按钮的定时器
138 unsigned int Count_DisplayTime_5s=0;/////时间显示定时器5s
139 unsigned int Count_RunningTime=0;//油机运行时间累加
140 unsigned int idata Count__Stop_Sure=0;//停机确认后送继电器的时间
141 unsigned int Count_SettingPara=0;//停机设置参数时,软件定时器 是否按住消声按键10秒
142 unsigned int Count_NoOperation_Exit=0; //在设定参数时,10秒无操作离开设定模式 计时器
143
144 //bit Bit_Sign_Alarm_Stop=0;//一报警就停机标志
145
146 unsigned char Byte_Sign_First_Alarm_StartStop=0;
147 unsigned int idata Count_Alarm_Stop_Send=0;//报警就停机定时器
148
149 unsigned int idata Count_NoKey=0;//没有键盘操作的定时器
150
151
152 unsigned int idata Count_Start_Machine_15s=0;//刚刚启动时,15秒内不做保护 只进行停机和检测 ,没有报警
153
154 unsigned char idata E2prom=0;//for E2prom write; if time over ,has problem in E2prom
155 ////////////////////////////////////////////*********************
156 unsigned int idata Time_Minutes_Running=0;//now running time--minutes当前油机的运行分钟数
157 unsigned int idata Time_Hours_Running=0; //now running time--hours 当前油机的运行小时数
158
159 unsigned int idata Time_Minutes_Add; /////add time minute油机运行累计分钟数
160 unsigned int idata Time_Hours_Add; /////add time Hour油机运行累计小时数
161
162 bit Sign_Alarm_Speed=0; //stand for if alarm dispaly
163 bit Sign_Alarm_Water=0;
164 bit Sign_Alarm_OilPre=0;
165 bit Sign_Alarm_OilTem=0;
166 bit Sign_Tem_Oil=0; // stand for if beyond thold
167 bit Sign_Tem_Water=0;
168 bit Sign_Pre_Oil=0;
169 bit Sign_Speed=0;
170 //////////////////////////////////////
171 bit Bit_Stop_Sure=0;//停机确认位(按下1s)
172 bit Bit_Sign_DisplayTime=0;//时间按钮按下标志
173 bit Bit_Sign_DisplayTime_OilPre=0;///时间显示时,标志位(不显示油压)
174 bit Bit_Sign_SettingPara=0;//在停机设置参数时,是否按住消声按钮的标志
175 bit Bit_Sign_Running=0;//检测是否运行的标志(根据转速500)
176 bit Bit_Sign_SettingParaDisplay=0;//在停机的状态下按住停机键,就进行设定显示 标志
177 bit Bit_Sign_InputCode=0;//在设置参数时,能否进行密码输入的标志
178 bit Bit_Sign_SettingPara_Sure=0;//在设置参数时,确认能否进入密码输入的标志
179
C51 COMPILER V7.50 MAIN 07/28/2008 18:17:59 PAGE 4
180 bit Bit_Sign_Modify=0;//进入正式修改参数时,是否修改的标志
181 bit Bit_Sign_First_ReadPara=1;//第一次取出要修改的参数
182
183
184 bit Bit_Exit_SettingPara_Normal=0;//在正式设定参数时,是否离开的标志
185 bit Bit_Sign_DisplaySetting_Sure=0;//确定显示参数设定和只能设定参数的标志
186
187 bit Bit_Sign_Alarm_NoKeyBoard=0;//有警报时,不能进行停机、启动操作
188
189 bit Bit_Sign_SettingPara_Normal=0;////在设置参数时,确认能否进入最终正式设定状态的标志
190
191 bit Bit_Can_TimeStart=0;//设置参数时 是否按住消声
192
193
194 bit Get_Key_bit=0;//fot get key
195
196 bit idata Signed_Test=0;//for stand for if test system
197 bit Signed_Test_CPU=1;
198 bit Signed_Test_24v=1;
199 bit Signed_Test_5v=1;
200 float idata Value_Test_24v;
201 //float idata Value_Test_5v;
202
203
204 // unsigned char Temp_Pre_Oil;
205 // unsigned char Temp_Tem_Oil;
206 // unsigned char Temp_Tem_Water;
207
208 unsigned char Key;//for get key
209
210
211 bit data Signed_Sound_Off=0;//for sound
212 // bit Signed_Sound_Off_Back=0;
213 ////////////////////////////////
214
215 unsigned char Byte_Sign_DisplayTime=1;////时间显示标志按钮按下次数
216
217
218
219
220 //////////////////////////以下为AD转换所用
221 sbit CLOCK= P1^1;
222 sbit D_IN =P1^3;
223 sbit D_OUT= P1^0;
224 sbit _CS= P1^2;
225
226 //==========AD采样模块============//
227
228 //TLC1543 A/D用转换用
229 #define uint unsigned int
230 #define uchar unsigned char
231
232
233 //========================新版本=======================
234 uint read1543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号
235 {
236 1 uint data ad;uint data i;
237 1 uchar data al=0,ah=0;
238 1
239 1 CLOCK=0;
240 1 _CS=0;
241 1 port<<=4;
C51 COMPILER V7.50 MAIN 07/28/2008 18:17:59 PAGE 5
242 1 for (i=0;i<4;i++) //把通道号打入1543
243 1 {
244 2 D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;
245 2 port<<=1;
246 2 }
247 1
248 1 for (i=0;i<6;i++) //填充6个CLOCK
249 1 {
250 2 CLOCK=1;CLOCK=0;
251 2 }
252 1
253 1 _CS=1;_nop_();_nop_();_CS=0; //等待AD转换
254 1
255 1 for (i=0;i<2;i++) //取D9,D8
256 1 {
257 2 D_OUT=1;
258 2 CLOCK=1;
259 2 ah<<=1;
260 2 if (D_OUT) ah|=0x01;
261 2 CLOCK=0;
262 2 }
263 1
264 1 for (i=0;i<8;i++) //取D7--D0
265 1 {
266 2 D_OUT=1;
267 2 CLOCK=1;
268 2 al<<=1;
269 2 if (D_OUT) al|=0x01;
270 2 CLOCK=0;
271 2 }
272 1
273 1 _CS=1;
274 1
275 1 ad=(uint)ah;ad<<=8;ad|=al; //得到AD值
276 1 return (ad);
277 1 }
278
279 void init()
280 {
281 1 /*
282 1 TMOD= 0;//initial timer
283 1 TCON= 0;
284 1 TH0=0xF0;
285 1 TL0=0x0C;
286 1 */
287 1
288 1 Speed_Count=0;//for test speed
289 1 Capture_Count=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -