?? text1.lst
字號:
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //#include <reg52.h>
2 #include <reg52.h>
3 //#include "AT89X52.H"
4 //#include <intrins.h>
5 #define TIME0H 0xFC
6 #define TIME0L 0x17
7 #define TIME1H 0x3C
8 #define TIME1L 0xB0
9
10
11 unsigned char code table[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
12 unsigned char code dis_digit[13]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFE,0xFD,0xFB,0xF7,0xEF};
13 unsigned char temp[13];
14 unsigned char uc_TimeCount=0;
15 int dis_index;
16 sbit key1=P3^0;
17 sbit key2=P3^1;
18 sbit key3=P3^4;
19 sbit key4=P3^5;
20 sbit BEEP=P0^5;
21 sbit Light=P0^6;
22 int key;
23 int flag;
24 int score=0;
25 int score2=0;
26 int second24,second,minute,jie;
27
28 void delay(char i)
29 {
30 1 unsigned char k;
31 1 for( k=0; k<i; k++)
32 1 {
33 2
34 2 ;
35 2 }
36 1 } //延時
37
38 int keyscan()
39 {
40 1 int i;
41 1 P3=0xFF;
42 1 if(key1==0)
43 1 {
44 2 delay(6);
45 2 if(key1==0)
46 2 {
47 3 delay(6);
48 3 if(key1==0)
49 3 {
50 4 do{;}while(key1!=1);
51 4 i=1;
52 4 }
53 3 }
54 2 }
55 1 if(key2==0)
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 2
56 1 {
57 2 delay(6);
58 2 if(key2==0)
59 2 {
60 3 delay(6);
61 3 if(key2==0)
62 3 {
63 4 do{;}while(key2!=1);
64 4 i=2;
65 4 }
66 3 }
67 2 }
68 1 if(key3==0)
69 1 {
70 2 delay(6);
71 2 if(key3==0)
72 2 {
73 3 delay(6);
74 3 if(key3==0)
75 3 {
76 4 do{;}while(key3!=1);
77 4 i=3;
78 4 }
79 3 }
80 2 }
81 1 if(key4==0)
82 1 {
83 2 delay(6);
84 2 if(key4==0)
85 2 {
86 3 delay(6);
87 3 if(key4==0)
88 3 {
89 4 do{;}while(key4!=1);
90 4 i=4;
91 4 }
92 3 }
93 2 }
94 1 return(i);
95 1 }
96
97 /*void inc_min()
98 {
99
100 minute--;
101 if(minute <0)
102 {
103 minute = 12;
104 jie++;
105 flag=1;
106 ET1=0;
107 }
108 temp[10]=table[jie];
109 temp[1] = table[minute / 10]; // 分十位
110 temp[0] = table[minute % 10]; // 分個位
111 }
112
113 void inc_sec()
114 {
115
116 second24--;
117 second--;
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 3
118 if(second<0)
119 {
120 second=59;
121 inc_min();
122 }
123 if(second24==0)
124 {
125 second24=24;
126 flag=1;
127 ET1=0;
128 }
129 temp[8]=table[second/10];
130 temp[9]=table[second%10];
131 temp[11]=table[second24/10];
132 temp[12]=table[second24%10];
133 }
134
135 */
136
137 void vTimer1(void) interrupt 3 //中斷1程序
138 {
139 1 TH1=TIME1H; //TIME1H=0x3C
140 1 TL1=TIME1L; //TIME1L=0xB0
141 1 flag=0;
142 1 uc_TimeCount++; //倒計時開始
143 1 if(uc_TimeCount==20)
144 1 {
145 2 uc_TimeCount=0;
146 2 second24--;
147 2 second--;
148 2 if(second24==0)
149 2 {
150 3 second24=24; //24秒倒計時
151 3 flag=1;
152 3 ET1=0;
153 3 }
154 2 if(second==-1)
155 2 {
156 3 second=59;
157 3 minute--;
158 3 if(minute==-1)
159 3 {
160 4 minute=12;
161 4 second=0;
162 4 second24=24;
163 4 jie++;
164 4 flag=1;
165 4 ET1=0;
166 4 }
167 3 }
168 2 }
169 1 temp[10]=table[jie];
170 1 temp[1] = table[minute / 10]; // 分十位
171 1 temp[0] = table[minute % 10]; // 分個位
172 1 temp[8]=table[second/10];
173 1 temp[9]=table[second%10];
174 1 temp[11]=table[second24/10];
175 1 temp[12]=table[second24%10];
176 1 }
177
178
179 void vTimer0(void) interrupt 1 //1毫秒刷新一次
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 4
180 {
181 1 TH0=TIME0H;
182 1 TL0=TIME0L;
183 1
184 1 if(dis_index>=0 && dis_index<8)
185 1 {
186 2 P1=dis_digit[dis_index];
187 2 P0=0xFF;
188 2 P2=temp[dis_index];
189 2 }
190 1 else
191 1 if(dis_index>=8 && dis_index<13)
192 1 {
193 2 P1=0xFF;
194 2 P0=dis_digit[dis_index];
195 2 P2=temp[dis_index];
196 2 }
197 1 dis_index++;
198 1 if(dis_index==13)
199 1 {
200 2 dis_index=0;
201 2 }
202 1 }
203
204
205
206 void intersvr0(void) interrupt 0 using 1
207 {
208 1 ET1=~ET1;
209 1 }
210
211 void intersvr1(void) interrupt 2 using 2
212 {
213 1 second24=24;
214 1 }
215
216 void main(void)
217 {
218 1 //初始化全局變量
219 1 P3=0xFF;
220 1 P2 = 0;
221 1 P1 = 0;
222 1 P0 = 0x01;
223 1
224 1 PX0=0;
225 1 PX1=0;
226 1 PT0=1;
227 1 PT1=0;
228 1 TMOD=0x11;
229 1
230 1 TH0=TIME0H;
231 1 TL0=TIME0L;
232 1
233 1 TR0=1; //開啟定時器0
234 1 ET0=1; //開定時器0中斷
235 1 EX0=1;
236 1 EX1=1;
237 1
238 1 TH1=TIME1H;
239 1 TL1=TIME1L;
240 1 TR1=1; //開啟定時器1
241 1 ET1=1; //開定時器1中斷
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 5
242 1 // ET2=0;
243 1 IT0=1;
244 1 EA=1; //開啟總中斷
245 1 uc_TimeCount= 0;
246 1 flag=0;
247 1 second24=24;
248 1 second=0;
249 1 minute=12;
250 1 score=0;
251 1 score2=0;
252 1 jie=1;
253 1 temp[0]=table[minute%10];
254 1 temp[1]=table[minute/10];
255 1 temp[8]=table[second/10];
256 1 temp[9]=table[second%10];
257 1 temp[11]=table[second24/10];
258 1 temp[12]=table[second24%10];
259 1 temp[2]=table[score/100];
260 1 temp[3]=table[(score%100)/10];
261 1 temp[4]=table[(score%100)%10];
262 1 temp[5]=table[score2/100];
263 1 temp[6]=table[(score2%100)/10];
264 1 temp[7]=table[(score2%100)%10];
265 1 temp[10]=table[jie];
266 1 dis_index = 0;
267 1
268 1
269 1 while(1)
270 1 {
271 2 if(flag==1)
272 2 {
273 3 BEEP=0;
274 3 Light=0;
275 3 }
276 2 key=keyscan();
277 2 if(key)
278 2 {
279 3 switch(key)
280 3 {
281 4 case 1 :
282 4 score++;
283 4 temp[2]=table[score/100];
284 4 temp[3]=table[(score%100)/10];
285 4 temp[4]=table[(score%100)%10];
286 4 break ;
287 4 case 2 :
288 4 score--;
289 4 if(score==-1)
290 4 {score=0;}
291 4 temp[2]=table[score/100];
292 4 temp[3]=table[(score%100)/10];
293 4 temp[4]=table[(score%100)%10];
294 4 break;
295 4 case 3 :
296 4 score2++;
297 4 temp[5]=table[score2/100];
298 4 temp[6]=table[(score2%100)/10];
299 4 temp[7]=table[(score2%100)%10];
300 4 break ;
301 4 case 4 :
302 4 score2--;
303 4 if(score2==-1)
C51 COMPILER V7.06 TEXT1 05/16/2008 18:17:27 PAGE 6
304 4 {score2=0;}
305 4 temp[5]=table[score2/100];
306 4 temp[6]=table[(score2%100)/10];
307 4 temp[7]=table[(score2%100)%10];
308 4 break;
309 4 default :
310 4 break ;
311 4 }
312 3 }
313 2 }
314 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1416 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 ----
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 + -