📄 111.lst
字号:
C51 COMPILER V9.00 111 01/02/2013 17:59:48 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE 111
OBJECT MODULE PLACED IN 111.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 111.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 sbit f=P3^4;
5 uint a,ge,shi,i,j,k=12,fg,fs,xg,xs,xingqi=1;
6 uchar hour=0, minute=0,flag=0;
7 void display(uint ge,uint shi,uint fg,uint fs,uint xg,uint xs);
8 void fm();
9 uchar code wm[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
10 uchar code dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
11 sbit ke1=P0^4; // 正常调时
12 sbit ke2=P0^5; //正常调分
13 sbit ke4=P0^7; //正常调星期
14 sbit k3=P0^6;//闹钟调时
15 sbit k5=P0^3; // 闹钟调分
16 sbit k6=P0^2;//切换闹钟模式
17 void delay(uint s)
18 {
19 1 uint x,y;
20 1 for(x=s;x>0;x--)
21 1 for(y=110;y>0;y--);
22 1 }
23 void timer()interrupt 1
24 {
25 1 TH0=(65536-50000)/256;
26 1 TL0=(65536-50000)%256;
27 1 a++;
28 1 }
29 void key()
30 {
31 1 P0=0xfe;
32 1 if(ke1==0)
33 1 {
34 2 k++;
35 2 if(k==24)
36 2 k=0;
37 2 while(!ke1);
38 2
39 2 }
40 1 if(ke2==0)
41 1 {
42 2 j++;
43 2 if(j==60)
44 2 j=0;
45 2 while(!ke2);
46 2 }
47 1
48 1 if(ke4==0)
49 1 {
50 2 while(!ke4);
51 2 xingqi++;
52 2 if(xingqi==8)
53 2 {
54 3 xingqi=1;
55 3
C51 COMPILER V9.00 111 01/02/2013 17:59:48 PAGE 2
56 3 }
57 2 }
58 1
59 1 if(k6==0)
60 1 {
61 2 while(!k6);
62 2 flag=~flag;
63 2
64 2 } }
65 void setclock() //闹钟键盘扫描
66 {
67 1
68 1 if(k3==0)
69 1 {
70 2 delay(10);
71 2 if(k3==0)
72 2 {
73 3 if(hour<23)
74 3 hour++;
75 3 else hour=0;
76 3 }
77 2 while(!k3);
78 2 }
79 1
80 1
81 1 //模式——闹钟调分
82 1 {
83 2 if(k5==0)
84 2 {
85 3 delay(10);
86 3 if(k5==0)
87 3 {
88 4 if(minute<59)
89 4 minute++;
90 4 else minute=0;
91 4 }
92 3 while(!k5);
93 3 }
94 2
95 2 }
96 1 }
97
98 void panduanmaozhong()//判断闹钟时间是否到来
99 {
100 1 if( (j==minute)&(k==hour))
101 1 {
102 2 P3=0x00;
103 2 }
104 1
105 1
106 1 }
107
108
109 void main()
110 {
111 1 TMOD=1;
112 1 TH0=(65536-50000)/256;
113 1 TL0=(65536-50000)%256;
114 1 EA=1;
115 1 ET0=1;
116 1 TR0=1;
117 1 P3=0x01;
C51 COMPILER V9.00 111 01/02/2013 17:59:48 PAGE 3
118 1
119 1 while(1)
120 1 {
121 2
122 2 if(a>=20)
123 2 {
124 3 a=0;
125 3 i++;
126 3 if(i==60)//秒
127 3 {
128 4 j++;
129 4 i=0;
130 4 if(j==60) //分
131 4 {
132 5 k++;
133 5 j=0;
134 5 if(k==24) //时
135 5 {
136 6 xingqi++ ;
137 6 k=0;
138 6 if(xingqi>7) //星期
139 6 {
140 7 xingqi=1;
141 7 }
142 6 }
143 5 }
144 4 }
145 3 }
146 2
147 2 ge=i%10;
148 2 shi=i/10;
149 2 fg=j%10;
150 2 fs=j/10;
151 2 xg=k%10;
152 2 xs=k/10;
153 2
154 2 if(flag==0)
155 2 display(ge,shi,fg,fs,xg,xs);
156 2 else
157 2 display(ge,shi,(minute%10),(minute/10),(hour%10),(hour/10));
158 2
159 2 if(fg==9&&fs==5&&shi==5&&(ge==1||ge==3||ge==5||ge==7||ge==9))
160 2 P3=0x00;
161 2 else P3=0x01;
162 2 key();
163 2 setclock(); //闹钟键盘扫描
164 2 panduanmaozhong();//判断闹钟时间是否到来
165 2
166 2
167 2
168 2 }
169 1 }
170
171 void display(uint ge,uint shi,uint fg,uint fs,uint xg,uint xs)
172 {
173 1 P1=wm[0];
174 1 P2=dm[xingqi];
175 1 delay(1);
176 1
177 1 P1=wm[2];
178 1 P2=dm[xs];
179 1 delay(1);
C51 COMPILER V9.00 111 01/02/2013 17:59:48 PAGE 4
180 1
181 1 P1=wm[3];
182 1 P2=dm[xg];
183 1 delay(1);
184 1
185 1 P1=wm[4];
186 1 P2=dm[fs];
187 1 delay(1);
188 1
189 1 P1=wm[5];
190 1 P2=dm[fg];
191 1 delay(1);
192 1
193 1 P1=wm[6];
194 1 P2=dm[shi];
195 1 delay(1);
196 1
197 1 P1=wm[7];
198 1 P2=dm[ge];
199 1 delay(1);
200 1
201 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 722 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 12
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 + -