📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 09/11/2008 09:23:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2
3 extern void InitT0(void);
4 extern unsigned char DispBuf[6];
5 extern bit xTim,xKey;
6 sbit Voice=P2^4;
7 extern void KeyPro(void);
8 extern unsigned char KeySts;
9 extern unsigned char sec1,min1,hour1;
10 extern unsigned char Alarm;
11 extern unsigned char Alarmsec,Alarmmin,Alarmhour;
12 extern bit p1,p2;
13 unsigned char sec,min,hour;
14 unsigned char code table[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86
-,0x8E}; //显示
15
16 void TimUpdate(void) //时间走时函数
17 {
18 1 if(++sec==60)
19 1 {
20 2 sec = 0;
21 2 if(++min==60)
22 2 {
23 3 min = 0;
24 3 if(++hour == 24) hour = 0;
25 3 }
26 2 }
27 1 }
28 void DisplayTim()
29 {
30 1
31 1 DispBuf[0] = table[sec%10];
32 1 DispBuf[1] = table[sec/10];
33 1 DispBuf[2] = table[min%10]&0x7f;
34 1 DispBuf[3] = table[min/10];
35 1
36 1 if((p1==0)||(hour<=12)||(p2==0)||(p2==1)) //按下DOWN或不按键时走24时制
37 1 {
38 2 DispBuf[4] = table[hour%10]&0x7f;
39 2 DispBuf[5] = table[hour/10];
40 2 }
41 1 if((p1==1)&&(hour>12)) //按下UP且时间大于12时走12时制
42 1 {
43 2 DispBuf[4] = table[(hour-12)%10]&0x7f;
44 2 DispBuf[5] = table[(hour-12)/10];
45 2 }
46 1
47 1 }
48
49 void main(void)
50 {
51 1 unsigned char i,x;
52 1 x=1;
53 1 for (i=0;i<6;i++)
54 1 DispBuf[i] = 0xFF; //全灭
C51 COMPILER V7.50 MAIN 09/11/2008 09:23:11 PAGE 2
55 1 p1=p2=0;
56 1 Alarm=0;
57 1 sec = 0;
58 1 min = 0;
59 1 hour = 0;
60 1 InitT0();
61 1 KeySts = 0;
62 1 Alarmsec =0;
63 1 Alarmmin = 0;
64 1 Alarmhour = 0; // 初始状态
65 1 while(1)
66 1 {
67 2
68 2
69 2 if(xTim==1)
70 2 {
71 3 if((KeySts>7)||(KeySts==0)) //设置闹钟时走时,设置时钟时不走时
72 3 {
73 4 xTim = 0;
74 4 TimUpdate();
75 4 if(KeySts==0)
76 4 {DisplayTim();
77 5 P1 = ~x; //流水灯 与秒同步
78 5 x <<= 1;
79 5 if (x==0) x = 1;}
80 4 if((sec<6)&&(min==0)) //整点报时(嘀嘀响6次)
81 4 {
82 5 Voice=0;
83 5 }
84 4
85 4 }
86 3 }
87 2 if(xKey)
88 2 {
89 3 xKey = 0;
90 3 KeyPro(); //调用按键
91 3 }
92 2 if(Alarm==1) //闹钟响铃(长响10秒)
93 2 {
94 3 if((sec-sec1<10)&&(min==min1)&&(hour==hour1))
95 3 {
96 4 Voice=0;
97 4 }
98 3 }
99 2 }
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 288 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -