📄 main.lst
字号:
239 1 counter++;
240 1 // if(Bell_Swh == 1)counter1++;//闹钟为?
241 1 if(counter==10)
C51 COMPILER V7.50 MAIN 03/04/2001 18:19:09 PAGE 5
242 1 {
243 2 counter=0;
244 2 flag=~flag;
245 2 }
246 1 // if(counter==20)
247 1 // {
248 1 // counter=0;
249 1 // SPK=~SPK;
250 1
251 1
252 1 }
253
254 /*****初始化定时器***********/
255 void Init_Timer()
256 {
257 1 TMOD=0x11;
258 1 TH0=0x3c;
259 1 TL0=0xb1;
260 1 TH1 =0x3c;
261 1 TL1 =0xb0;
262 1 TR0=1;
263 1 TR1=1;
264 1 ET0=1;
265 1 ET1=1;
266 1 // EA=1;
267 1 }
268 void main()
269 {
270 1 unsigned char p;
271 1 unsigned char H_time,M_time,H_24C04,M_24C04,a;
272 1 unsigned char H_time1,M_time1,H_24C02,M_24C02;
273 1 //week=6;
274 1 p=Read_24C04(0x01);
275 1 year=Read_24C04(0x02);
276 1 month=Read_24C04(0x03);
277 1 date=Read_24C04(0x04);
278 1 hour=Read_24C04(0x05);
279 1 min=Read_24C04(0x06);
280 1 sec=Read_24C04(0x07);
281 1 Bell_Swh = Read_24C04(0x08);//读取开关的状态
282 1
283 1 Init_Timer();
284 1 Init_lcd();
285 1 Clr_Scr();
286 1 Disp_Img(logo);
287 1 Delay12864(60000);
288 1 Delay12864(20000);
289 1 Lcd_Mark();
290 1 Delay12864(60000);
291 1 Lcd_Mark1();
292 1 EA=1;
293 1 while(1)
294 1 {
295 2 led2=p;
296 2 if(Dec==0&&Ent==0)
297 2 {
298 3
299 3 Delay12864(20);
300 3 if(Dec==0&&Ent==0)
301 3 {
302 4 Lcd_Mark2();
303 4 if(Bell_Swh == 0){Mcs=0;Scs=1;Disp_Chinese(2,32,guan);}//关
C51 COMPILER V7.50 MAIN 03/04/2001 18:19:09 PAGE 6
304 4 else {Mcs=0;Scs=1;Disp_Chinese(2,32,kai);}
305 4 while(1)
306 4 {
307 5 if(Mode==0)
308 5 {
309 6 Delay12864(20);
310 6 if(Mode==0)
311 6 {
312 7 id1++;
313 7 if(id1>8)id1=0;
314 7 while(Mode==0);
315 7 }
316 6 }
317 5
318 5 switch(id1)
319 5 {
320 6 case 0:Disp2();break;//正常显示
321 6 case 1:Kgb = 1;Add_key2();Disp2();break;//开关
322 6 case 2:Kgb= 0;Hour2=1;Add_key2();Disp2();break;//
323 6 case 3:Hour2=0;Min2=1;Add_key2();Disp2();break;
324 6 case 4:Min2=0;Sec2=1;Add_key2();Disp2();break;
325 6 case 5:Sec2=0;Hour3=1;Add_key2();Disp2();break;//
326 6 case 6:Hour3=0;Min3=1;Add_key2();Disp2();break;
327 6 case 7:Min3=0;Sec3=1;Add_key2();Disp2();break;
328 6 case 8:Sec3=0;id1 = 0;Lcd_Mark1();goto FF;break;//返回主界面
329 6 default:break;
330 6 }
331 5
332 5 }
333 4 if(Ent==0)
334 4 {
335 5 Delay12864(20);
336 5 if(Ent==0)
337 5 {
338 6 Lcd_Mark1();
339 6 while(Ent==0);
340 6 }
341 5 }
342 4 }
343 3 }
344 2 FF:
345 2 if(flag == 0)
346 2 {
347 3 Mcs=0;Scs=1;
348 3 Disp_Digit(3,8,maohao);// :闪烁
349 3 Disp_Digit(3,32,maohao);
350 3 }
351 2 else
352 2 {
353 3 Mcs=0;Scs=1;
354 3 Disp_Digit(3,8,space);//显示空格
355 3 Disp_Digit(3,32,space);
356 3 }
357 2 if (Mode == 0) // 设置和选择项目键
358 2 {
359 3 Delay12864(20);
360 3 if(Mode == 0)
361 3 {
362 4 id++;if(id>7)id=0;
363 4 }
364 3 while(Mode == 0);//等待键松开
365 3 }
C51 COMPILER V7.50 MAIN 03/04/2001 18:19:09 PAGE 7
366 2 switch( id )
367 2 {
368 3 case 0:ET0=1;sec1 = 0; Disp( );break;//正常显示
369 3 case 1:ET0=0;year1 = 1;Add_key1();Disp();break;//年
370 3 case 2:year1=0;month1=1;Add_key1();Disp();break;//月
371 3 case 3:month1=0;day1=1;Add_key1();Disp();break; //日
372 3 case 4:day1=0;week1=1;Add_key1();Disp();break;//星期
373 3 case 5:week1=0;hour1=1;Add_key1();Disp();break; //小时
374 3 case 6:hour1=0;min1=1;Add_key1();Disp();break; //分钟
375 3 case 7:min1=0;sec1=1;Add_key1();Disp();break; //秒
376 3 default:break;
377 3 }
378 2 if(Bell_Swh == 1)//闹钟为开
379 2 {
380 3 H_24C04=Read_24C04(0x09);//读取2408的
381 3 M_24C04=Read_24C04(0x0a);
382 3 H_24C02=Read_24C04(0x0c);//读取2408的
383 3 M_24C02=Read_24C04(0x0d);
384 3
385 3 H_time=hour;
386 3 M_time=min;
387 3
388 3 H_time1=hour;
389 3 M_time1=min;
390 3
391 3 if(H_24C04 == H_time)
392 3 {
393 4 if(M_24C04 == M_time)
394 4 {
395 5
396 5 Clr_Scr();//清屏
397 5 frame();//显示边框
398 5 Mcs=1;Scs=0;
399 5 Disp_Chinese(3,16,nao);//闹钟显示时间到!
400 5 Disp_Chinese(3,32,zhong);
401 5 Disp_Chinese(3,48,shit);
402 5 Mcs=0;Scs=1;
403 5 Disp_Chinese(3,0,jian);
404 5 Disp_Chinese(3,16,dao);
405 5 Disp_Digit(3,40,fh);
406 5
407 5 while(M_24C04 == M_time)//判断是否到闹钟设定时间
408 5 {
409 6 for(a=0; a<100; a++)//BELL脉冲输出,驱动蜂鸣器
410 6 {
411 7 if(a<50){SPK = 0;Delay(100);}
412 7 else {SPK = 1;Delay(100);}
413 7 }
414 6 M_time=min;
415 6 }
416 5 Lcd_Mark1();
417 5 }//if
418 4 }
419 3
420 3 }//if
421 2 if(Bell_Swh == 1)//闹钟为开
422 2 {
423 3 // H_24C04=Read_24C04(0x09);//读取2408的
424 3 // M_24C04=Read_24C04(0x0a);
425 3 H_24C02=Read_24C04(0x0c);//读取2408的
426 3 M_24C02=Read_24C04(0x0d);
427 3
C51 COMPILER V7.50 MAIN 03/04/2001 18:19:09 PAGE 8
428 3 H_time=hour;
429 3 M_time=min;
430 3
431 3 H_time1=hour;
432 3 M_time1=min;
433 3
434 3 if(H_24C02 == H_time1)
435 3 {
436 4 if(M_24C02 == M_time1)
437 4 {
438 5
439 5 Clr_Scr();//清屏
440 5 frame();//显示边框
441 5 Mcs=1;Scs=0;
442 5 Disp_Chinese(3,16,nao);//闹钟显示时间到!
443 5 Disp_Chinese(3,32,zhong);
444 5 Disp_Chinese(3,48,shit);
445 5 Mcs=0;Scs=1;
446 5 Disp_Chinese(3,0,jian);
447 5 Disp_Chinese(3,16,dao);
448 5 Disp_Digit(3,40,fh);
449 5
450 5 while(M_24C02 == M_time1)//判断是否到闹钟设定时间
451 5 {
452 6 for(a=0; a<100; a++)//BELL脉冲输出,驱动蜂鸣器
453 6 {
454 7 if(a<50){SPK = 0;Delay(100);}
455 7 else {SPK = 1;Delay(100);}
456 7 }
457 6 M_time1=min;
458 6 }
459 5 Lcd_Mark1();
460 5 }//if
461 4 }
462 3
463 3 }//if
464 2
465 2 }//while
466 1
467 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 4970 ----
CONSTANT SIZE = 2669 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 34
IDATA SIZE = ---- ----
BIT SIZE = 16 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -