?? clock.lst
字號:
C51 COMPILER V8.09 CLOCK 12/19/2008 19:37:53 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE clock.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.h>
2 #define SECOND_1 0;
3 #define SECOND_2 1;
4 #define MINUTE_1 2;
5 #define MINUTE_2 3;
6 #define HOUR_1 4;
7 #define HOUR_2 5;
8 unsigned char code displayCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};
9 unsigned long data cnt;
10 unsigned long data redisplay;
11 unsigned int data second;
12 unsigned int data minute;
13 unsigned int data hour;
14 unsigned int data type;
15 unsigned int data displayData;
16 sbit e0 = P3^2;
17 sbit add=P1^0;
18 sbit second_1=P2^0;
19 sbit second_2=P2^1;
20 sbit minute_1=P2^2;
21 sbit minute_2=P2^3;
22 sbit hour_1=P2^4;
23 sbit hour_2=P2^5;
24 void displayWhenChange(bit data changeType);
25 void display();
26 void delay_E(long data time);
27 void timing();
28 void delay(long data time);
29 void main(){
30 1 TH0=56;
31 1 TL0=56;
32 1 TMOD=TMOD|0x02;
33 1 TMOD=TMOD&0xF2;
34 1 PX0=1;
35 1 PT0=0;
36 1 EX0=1;
37 1 EA=1;
38 1 ET0=1;
39 1 TR0=1;
40 1 cnt=0;
41 1 second_1=1;
42 1 second_2=1;
43 1 minute_1=1;
44 1 minute_2=1;
45 1 hour_1=1;
46 1 hour_2=1;
47 1 second=59;
48 1 minute=10;
49 1 redisplay=0;
50 1 hour=9;
51 1 type=SECOND_1;
52 1 displayData=second;
53 1 while(1){
54 2
55 2 }
C51 COMPILER V8.09 CLOCK 12/19/2008 19:37:53 PAGE 2
56 1 }
57 void ex0() interrupt 0 using 1{
58 1 int data changeFlag=0;
59 1 EA=0;
60 1 delay_E(2000);
61 1 while(1){
62 2
63 2 delay(100);
64 2 if(e0==0){
65 3
66 3 changeFlag=changeFlag+1;
67 3
68 3 delay_E(2000);
69 3 }
70 2 if(changeFlag==0)displayWhenChange(0);
71 2 else if(changeFlag==1)displayWhenChange(1);
72 2 else break;
73 2
74 2 if(add==0){
75 3
76 3 switch(changeFlag){
77 4 case 0:
78 4 minute=(minute+1)%60;
79 4 break;
80 4 case 1:
81 4 hour=(++hour)%24;
82 4 break;
83 4 }
84 3
85 3 delay_E(2000);
86 3 }
87 2 }
88 1 delay_E(2000);
89 1 EA=1;
90 1 }
91 void t0() interrupt 1 using 2{
92 1 if(1){
93 2 display();
94 2
95 2 }
96 1
97 1 timing();
98 1
99 1 }
100
101 void display(){
102 1 switch(type){
103 2 case 0:
104 2 hour_2=1;
105 2 P0=displayCode[displayData%10];
106 2 second_1=0;
107 2 type=SECOND_2;
108 2 break;
109 2 case 1:
110 2 second_1=1;
111 2 P0=displayCode[displayData/10];
112 2 second_2=0;
113 2 type=MINUTE_1;
114 2 displayData=minute;
115 2 break;
116 2 case 2:
117 2 second_2=1;
C51 COMPILER V8.09 CLOCK 12/19/2008 19:37:53 PAGE 3
118 2 P0=displayCode[displayData%10];
119 2 minute_1=0;
120 2 type=MINUTE_2;
121 2 break;
122 2 case 3:
123 2 minute_1=1;
124 2 P0=displayCode[displayData/10];
125 2 minute_2=0;
126 2 type=HOUR_1;
127 2 displayData=hour;
128 2 break;
129 2 case 4:
130 2 minute_2=1;
131 2 P0=displayCode[displayData%10];
132 2 hour_1=0;
133 2 type=HOUR_2;
134 2 break;
135 2 case 5:
136 2 hour_1=1;
137 2 P0=displayCode[displayData/10];
138 2 hour_2=0;
139 2 type=SECOND_1;
140 2 displayData=second;
141 2 break;
142 2 default:
143 2 break;
144 2 }
145 1 }
146 void timing(){
147 1 if((cnt++)==4999){
148 2 if(second==59){
149 3 if(minute==59){
150 4 hour=(++hour)%24;
151 4 minute=0;
152 4 }
153 3 else minute++;
154 3 second=0;
155 3 }
156 2 else second++;
157 2 cnt=0;
158 2 }
159 1 }
160 void displayWhenChange(bit data changeType){
161 1 bit data flag=0;
162 1 if((redisplay++)>=30){
163 2 flag=1;
164 2 }
165 1
166 1 if (changeType==0){
167 2 switch(type){
168 3 case 0:
169 3 hour_2=1;
170 3 P0=displayCode[displayData%10];
171 3 second_1=0;
172 3 type=SECOND_2;
173 3 break;
174 3 case 1:
175 3 second_1=1;
176 3 P0=displayCode[displayData/10];
177 3 second_2=0;
178 3 type=MINUTE_1;
179 3 displayData=minute;
C51 COMPILER V8.09 CLOCK 12/19/2008 19:37:53 PAGE 4
180 3 break;
181 3 case 2:
182 3 second_2=1;
183 3 if(flag){
184 4 P0=displayCode[displayData%10];
185 4 minute_1=0;
186 4 flag=0;
187 4 type=MINUTE_2;
188 4 redisplay=0;
189 4 }
190 3 else {
191 4 type=HOUR_1;
192 4 displayData=hour;
193 4 }
194 3
195 3 break;
196 3 case 3:
197 3 minute_1=1;
198 3 P0=displayCode[displayData/10];
199 3 minute_2=0;
200 3 type=HOUR_1;
201 3 displayData=hour;
202 3 break;
203 3 case 4:
204 3 minute_2=1;
205 3 P0=displayCode[displayData%10];
206 3 hour_1=0;
207 3 type=HOUR_2;
208 3 break;
209 3 case 5:
210 3 hour_1=1;
211 3 P0=displayCode[displayData/10];
212 3 hour_2=0;
213 3 type=SECOND_1;
214 3 displayData=second;
215 3 break;
216 3 default:
217 3 break;
218 3 }
219 2 }
220 1 if(changeType==1){
221 2 switch(type){
222 3 case 0:
223 3 hour_2=1;
224 3 P0=displayCode[displayData%10];
225 3 second_1=0;
226 3 type=SECOND_2;
227 3 break;
228 3 case 1:
229 3 second_1=1;
230 3 P0=displayCode[displayData/10];
231 3 second_2=0;
232 3 type=MINUTE_1;
233 3 displayData=minute;
234 3 break;
235 3 case 2:
236 3 second_2=1;
237 3 P0=displayCode[displayData%10];
238 3 minute_1=0;
239 3 type=MINUTE_2;
240 3 break;
241 3 case 3:
C51 COMPILER V8.09 CLOCK 12/19/2008 19:37:53 PAGE 5
242 3 minute_1=1;
243 3 P0=displayCode[displayData/10];
244 3 minute_2=0;
245 3 type=HOUR_1;
246 3 displayData=hour;
247 3 break;
248 3 case 4:
249 3 minute_2=1;
250 3 if(flag){
251 4 P0=displayCode[displayData%10];
252 4 hour_1=0;
253 4 type=HOUR_2;
254 4 redisplay=0;
255 4 }
256 3 else{
257 4 type=SECOND_1;
258 4 displayData=second;
259 4 }
260 3 break;
261 3 case 5:
262 3 hour_1=1;
263 3 P0=displayCode[displayData/10];
264 3 hour_2=0;
265 3 type=SECOND_1;
266 3 displayData=second;
267 3 break;
268 3 default:
269 3 break;
270 3 }
271 2
272 2 }
273 1 }
274
275 void delay(long data time){
276 1 long data i=0;
277 1 for(;i<time;i++);
278 1 }
279 void delay_E(long data time){
280 1 long data i=0;
281 1 for(;i<time;i++)display();
282 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1386 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 18
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -