📄 main1.lst
字号:
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN1
OBJECT MODULE PLACED IN main1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //头文件定义
2 #include <C8051F000.h> //寄存器定义
3 #include <intrins.h> //内部函数
4 #include "stdio.h"
5 #include "math.h"
6
7 #include "System_Init.h"
8 #include "I2c.h"
9
10 #define uchar unsigned char
11 #define uint unsigned int
12
13 //内部调用
14 void Delay(uint sum);
15 void Delay_Ms(uint add);
16 void Display(void);
17 void Read_Data(void);
18 void Save_Data(void);
19
20 sbit led1 = P0^6;
21 sbit led2 = P0^7;
22 sbit led3 = P3^5;
23 sbit led4 = P3^4;
24
25 sbit ledd = P3^1;
26 sbit ledt = P3^2;
27 sbit ledv = P3^3;
28
29 sbit yuyin = P0^4;
30 sbit sss = P0^3;
31 //--------------------------------------------
32 //全局变量
33 //--------------------------------------------
34 bit Save_Flag;
35 bit Volt_Flag;
36 bit Date_Flag;
37 bit Time_Flag;
38 bit Alarm_Flag;
39 bit Disp_Flag;
40 bit Clea_Flag;
41 bit Soun_Flag;
42 bit Edit_Flag;
43
44 //uint i, j, m;
45 uint Voltage, Adc_Data;
46 long Voltage_Count;
47 uchar Second;
48 uchar Minite;
49 uchar Hour;
50 uchar Month;
51 uchar Date;
52 uchar Last_Minite;
53 uchar Last_Hour;
54 uchar Last_Month;
55 uchar Last_Date;
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 2
56 uint Mstcnt;
57 uchar Dispbitcnt;
58 uint tcnt;
59 uint Last_Voltage, Save_Voltage;
60 uchar Minite_Sure;
61
62 uchar Count;
63 uint m;
64
65 xdata uchar Led_Data[10]={0x3F, 0x21, 0x9B, 0xB3, 0xA5, 0xB6, 0xBE, 0x23, 0xBF, 0xB7};
66 xdata uchar Display_Buf[20];
67 xdata uchar E2p_Buf[10];
68
69 //主程序
70 main()
71 {
72 1 uint i;
73 1 //系统文件调用
74 1 EA = 0; //关中断
75 1 System_Init();
76 1 EA = 1; //开中断
77 1
78 1 Save_Flag=1;
79 1 Read_Data();
80 1 for(i=0;i<20;i++)
81 1 {
82 2 Display_Buf[i]=8;
83 2 }
84 1 Delay_Ms(10);
85 1 yuyin = 1;
86 1 Read_Data();
87 1 Clea_Flag = 0;
88 1 Soun_Flag = 0;
89 1 //主进程
90 1 while(1)
91 1 {
92 2 if(Save_Flag==1)
93 2 {
94 3 Save_Data();
95 3 Read_Data();
96 3 Save_Voltage = Last_Voltage;
97 3 Save_Flag=0;
98 3 }
99 2 else if(Edit_Flag==1)
100 2 {
101 3 if(Minite_Sure<=57)
102 3 {
103 4 if(Minite>=(Minite_Sure+2))
104 4 {
105 5 Volt_Flag = 0;
106 5 Date_Flag = 0;
107 5 Time_Flag = 0;//
108 5 Edit_Flag = 0;
109 5 }
110 4 }
111 3 else
112 3 {
113 4 if(Minite==0)
114 4 {
115 5 Volt_Flag = 0;
116 5 Date_Flag = 0;
117 5 Time_Flag = 0;//
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 3
118 5 Edit_Flag = 0;
119 5 }
120 4 }
121 3 }
122 2 }
123 1 }
124
125 //延时
126 void Delay(uint sum)
127 {
128 1 uint i, j;
129 1 for(i=0;i<sum;i++)
130 1 {
131 2 for(j=0;j<500;j++);
132 2 }
133 1 }
134
135 void Delay_Ms(uint add)
136 {
137 1 uint i, j;
138 1 for(i=0;i<add;i++)
139 1 {
140 2 for(j=0;j<50;j++);
141 2 }
142 1 }
143 //TIME3中断
144 void Timer3_Isr(void) interrupt 14
145 {
146 1 TMR3CN&=~0x80; //清中断标志
147 1 if(Save_Flag==0)
148 1 {
149 2 //按键1采集
150 2 AMX0SL = 0x03;
151 2 ADBUSY=1;
152 2 while(!ADCINT);
153 2 ADCINT=0;
154 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Sure
155 2 if(Adc_Data<=0xFF)
156 2 {
157 3 Volt_Flag = 0;
158 3 Date_Flag = 0;
159 3 Time_Flag = 0;
160 3 for(m=0;m<20;m++)
161 3 {
162 4 Display();
163 4 }
164 3 Minite = Last_Minite;
165 3 Hour = Last_Hour;
166 3 Month = Last_Month;
167 3 Date = Last_Date;
168 3 Save_Flag = 1;
169 3 Clea_Flag = 0;
170 3 Edit_Flag = 0;
171 3 }
172 2 //按键2采集
173 2 AMX0SL = 0x05;
174 2 ADBUSY=1;
175 2 while(!ADCINT);
176 2 ADCINT=0;
177 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Date
178 2 if(Adc_Data<=0xFF)
179 2 {
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 4
180 3 Minite_Sure = Minite;
181 3 Last_Month = Month;
182 3 Last_Date = Date;
183 3 Last_Minite = Minite;
184 3 Last_Hour = Hour;
185 3 Volt_Flag = 0;
186 3 Date_Flag = 1;
187 3 Time_Flag = 0;
188 3 for(m=0;m<10;m++)
189 3 {
190 4 Display();
191 4 }
192 3 Clea_Flag = 1;
193 3 Edit_Flag = 1;
194 3 Mstcnt = 400;
195 3 }
196 2 //按键3采集
197 2 AMX0SL = 0x07;
198 2 ADBUSY=1;
199 2 while(!ADCINT);
200 2 ADCINT=0;
201 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Time
202 2 if(Adc_Data<=0xFF)
203 2 {
204 3 Minite_Sure = Minite;
205 3 Last_Month = Month;
206 3 Last_Date = Date;
207 3 Last_Minite = Minite;
208 3 Last_Hour = Hour;
209 3 Volt_Flag = 0;
210 3 Date_Flag = 0;
211 3 Time_Flag = 1;
212 3 for(m=0;m<10;m++)
213 3 {
214 4 Display();
215 4 }
216 3 Clea_Flag = 1;
217 3 Edit_Flag = 1;
218 3 Mstcnt = 800;
219 3 }
220 2 //按键4采集
221 2 AMX0SL = 0x02;
222 2 ADBUSY=1;
223 2 while(!ADCINT);
224 2 ADCINT=0;
225 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Voltage
226 2 if(Adc_Data<=0xFF)
227 2 {
228 3 Minite_Sure = Minite;
229 3 Last_Month = Month;
230 3 Last_Date = Date;
231 3 Last_Minite = Minite;
232 3 Last_Hour = Hour;
233 3 Volt_Flag = 1;
234 3 Date_Flag = 0;
235 3 Time_Flag = 0;
236 3 for(m=0;m<20;m++)
237 3 {
238 4 Display();
239 4 }
240 3 Edit_Flag = 1;
241 3 Clea_Flag = 1;
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 5
242 3 Mstcnt = 0;
243 3 }
244 2 //按键5采集
245 2 AMX0SL = 0x04;
246 2 ADBUSY=1;
247 2 while(!ADCINT);
248 2 ADCINT=0;
249 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Left
250 2 if(Adc_Data<=0xFF)
251 2 {
252 3 Minite_Sure = Minite;
253 3 for(m=0;m<50;m++)
254 3 {
255 4 Display();
256 4 }
257 3 if(Volt_Flag==1)
258 3 {
259 4 if(Last_Voltage>1400)
260 4 {
261 5 Last_Voltage = 0;
262 5 }
263 4 else
264 4 {
265 5 Last_Voltage = Last_Voltage + 100;
266 5 }
267 4 }
268 3 else if(Date_Flag==1)
269 3 {
270 4 if(Last_Month>=12)
271 4 {
272 5 Last_Month = 1;
273 5 }
274 4 else
275 4 {
276 5 Last_Month++;
277 5 }
278 4 }
279 3 else if(Time_Flag==1)
280 3 {
281 4 if(Last_Hour>=23)
282 4 {
283 5 Last_Hour = 0;
284 5 }
285 4 else
286 4 {
287 5 Last_Hour++;
288 5 }
289 4 }
290 3 Edit_Flag = 1;
291 3 Clea_Flag = 1;
292 3 }
293 2 //按键6采集
294 2 AMX0SL = 0x06;
295 2 ADBUSY=1;
296 2 while(!ADCINT);
297 2 ADCINT=0;
298 2 Adc_Data = ADC0H*256 + ADC0L;//Key_Right
299 2 if(Adc_Data<=0xFF)
300 2 {
301 3 Minite_Sure = Minite;
302 3 for(m=0;m<50;m++)
303 3 {
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 6
304 4 Display();
305 4 }
306 3 if(Volt_Flag==1)
307 3 {
308 4 if(Last_Voltage<=10)
309 4 {
310 5 Last_Voltage = 1500;
311 5 }
312 4 else
313 4 {
314 5 Last_Voltage = Last_Voltage-10;
315 5 }
316 4 }
317 3 else if(Date_Flag==1)
318 3 {
319 4 if(Last_Date<=1)
320 4 {
321 5 Last_Date = 31;
322 5 }
323 4 else
324 4 {
325 5 Last_Date--;
326 5 }
327 4 }
328 3 else if(Time_Flag==1)
329 3 {
330 4 if(Last_Minite<=0)
331 4 {
332 5 Last_Minite = 59;
333 5 }
334 4 else
335 4 {
336 5 Last_Minite--;
337 5 }
338 4 }
339 3 Edit_Flag = 1;
340 3 Clea_Flag = 1;
341 3 }
342 2 //电压采集
343 2 AMX0SL = 0x00;
344 2 ADBUSY=1;
345 2 while(!ADCINT);
346 2 ADCINT=0;
347 2 Adc_Data = ADC0H*256 + ADC0L;
348 2 if(Voltage<Save_Voltage)
349 2 {
350 3 Alarm_Flag = 1;
351 3 }
352 2 else
353 2 {
354 3 Alarm_Flag = 0;
355 3 }
356 2 if(Voltage<500)
357 2 {
358 3 Disp_Flag = 0;
359 3 yuyin = 0;
360 3 ledv = 1;
361 3 ledd = 1;
362 3 ledt = 1;
363 3 }
364 2 else
365 2 {
C51 COMPILER V8.08 MAIN1 05/21/2008 20:12:33 PAGE 7
366 3 Disp_Flag = 1;
367 3 }
368 2 //电压的显示
369 2 if(Volt_Flag==1)
370 2 {
371 3 Display_Buf[0] = Last_Voltage/1000;
372 3 Display_Buf[1] = (Last_Voltage%1000)/100;
373 3 Display_Buf[2] = (Last_Voltage%100)/10;
374 3 Display_Buf[3] = Last_Voltage%10;
375 3 }
376 2 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -