📄 3.lst
字号:
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 3
OBJECT MODULE PLACED IN 3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 3.c
stmt level source
1 /**********************************/
2 /*有线/无线双模式多功能八路抢答器 */
3 /* 设计:陈金玉 吴振铨 */
4 /* 广东工业大学信息工程学院 */
5 /* 04应用电子2班 */
6 /* 2006年4月25日 */
7 /**********************************/
8 #include"reg51.h"
9 unsigned char i;//显示抢答路数
10 int k ,s;
11 sbit set=P3^7;
12 sbit beeper=P3^6;
13 sbit time=P3^4;
14 sbit en5027=P3^3;
15 sbit dp=P0^6;
16 sbit w1=P2^7;
17 sbit w2=P2^6;
18 sbit w3=P2^5;
19 sbit w4=P2^4;
20 unsigned char code table[]={
21 0xC0,/*0*/
22 0xF9,/*1*/
23 0xA4,/*2*/
24 0xB0,/*3*/
25 0x99,/*4*/
26 0x92,/*5*/
27 0x82,/*6*/
28 0xF8,/*7*/
29 0x80,/*8*/
30 0x90,/*9*/};
31 void init(void);
32 void t0init(void);
33 void mode1(void);//有线模式
34 void mode2(void);//无线模式
35 unsigned char mode1readkeys(void);
36 unsigned char mode2readkeys(void);
37 void display1(void);
38 void display2(void);
39 void displaytime(int k);
40 time0()interrupt 1 using 1//T0中断服务程序(50ms)
41 { unsigned char a;
42 1 a++;
43 1 TH0=-50000/256;
44 1 TL0=-50000%256;
45 1 if(a>20)
46 1 {
47 2 a=0;
48 2 k++;
49 2 }
50 1 if(k>99)
51 1 k=0;
52 1 }
53
54 void t0init(void)//T0初始化
55 {TMOD=0x61;
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 2
56 1 TH0=-50000/256;
57 1 TL0=-50000%256;
58 1 TH1=-10;
59 1 TH0=-10;
60 1 EA=1;
61 1 ET0=1;
62 1 TR0=1;
63 1
64 1 }
65 void delay(void)//延时
66 {
67 1 for(s=0;s<700;s++)
68 1 ;
69 1 }
70 void displaytime(int k)//LED显示时间
71 {unsigned char n,m;
72 1 w3=0;
73 1 n=k%10;
74 1 P0=table[n];
75 1 delay();
76 1 delay();
77 1 w3=1;
78 1 delay();
79 1 w4=0;
80 1 m=k/10;
81 1 P0=table[m];
82 1 delay();
83 1 delay();
84 1 w4=1;
85 1 delay();
86 1 }
87 void clock(void)//
88 { w1=1;
89 1 w2=1;
90 1 t0init();
91 1 displaytime( k);
92 1 }
93 void main(void)
94 {
95 1
96 1 init();
97 1 if(set==1)//默认为有线模式
98 1 mode2();
99 1 else
100 1 mode1();
101 1 }
102
103 void init(void)//初始化
104 {
105 1 en5027=1;
106 1 set=0;
107 1 P2=0xF0;
108 1 P0=0xFF;
109 1 P1=0xFF;
110 1 w1=1;
111 1 w2=1;
112 1 w3=1;
113 1 w4=1;
114 1 i=0;
115 1 }
116 /*unsigned char mode1readkeys(void)
117 {
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 3
118 unsigned char j;
119 int k;
120 P1=0xFE;
121 for(j=0;j<3;j++)
122 {
123 if((P1&0xF0)!=0xF0)
124 {
125 switch (P1)
126 {
127 case 0xEE:
128 i=1;
129 break;
130 case 0xDE:
131 i=2;
132 break;
133 case 0xBE:
134 i=3;
135 break;
136 case 0xED:
137 i=4;
138 break;
139 case 0xDD:
140 i=8;
141 break;
142 case 0xBD:
143 i=7;
144 break;
145 case 0xEB:
146 i=6;
147 break;
148 case 0xDB:
149 i=5;
150 break;
151 default:
152 return 0;
153 break;
154 }
155 return i;
156 }
157 k=P1;
158 k=~k;
159 k=k<<1;
160 k=~k;
161 P1=k;
162 }
163 }*/
164 unsigned char mode1readkeys(void)//模式1读取按键
165 {
166 1 P1=0xFE;
167 1 if((P1&0xFE)!=0xFE)
168 1 {
169 2 switch (P1)
170 2 {
171 3 case 0xEE:
172 3 i=1;
173 3 break;
174 3 case 0xDE:
175 3 i=2;
176 3 break;
177 3 case 0xBE:
178 3 i=3;
179 3 break;
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 4
180 3 default:
181 3 return 0;
182 3 break;
183 3 }
184 2 return i;
185 2 }
186 1 P1=0xFD;
187 1 if((P1&0xFD)!=0xFD)
188 1 {
189 2 switch (P1)
190 2 {
191 3 case 0xED:
192 3 i=4;
193 3 break;
194 3 case 0xDD:
195 3 i=8;
196 3 break;
197 3 case 0xBD:
198 3 i=7;
199 3 break;
200 3 default:
201 3 return 0;
202 3 break;
203 3 }
204 2 return i;
205 2 }
206 1 P1=0xFB;
207 1 if((P1&0xFB)!=0xFB)
208 1 {
209 2 switch (P1)
210 2 {
211 3 case 0xEB:
212 3 i=6;
213 3 break;
214 3 case 0xDB:
215 3 i=5;
216 3 break;
217 3 default:
218 3 return 0;
219 3 break;
220 3 }
221 2 return i;
222 2 }
223 1
224 1 }
225 unsigned char mode2readkeys(void)//模式2读取按键
226 {
227 1 unsigned char n;
228 1 n=P2;
229 1 n=(n&0x0F);
230 1 i=n;
231 1 return i;
232 1 }
233 void display1(void)
234 {
235 1 w1=0;
236 1 P0=table[i];
237 1 }
238 void display2(void)
239 {
240 1 w2=0;
241 1 P0=table[i];
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 5
242 1 }
243 void mode1(void)//模式1
244 {
245 1 w1=0;
246 1 dp=0;
247 1 i=0;
248 1 time=0;
249 1 if(time==1)
250 1 while(1)
251 1 {
252 2
253 2 clock();
254 2 }
255 1 while(i==0||i>8)
256 1 {
257 2 mode1readkeys();
258 2 }
259 1 P1=0xFF;
260 1 beeper=0;
261 1 display1();
262 1 beeper=0;
263 1 while(1)
264 1 {
265 2 unsigned int t;
266 2 for(t=0;t<20000;t++)
267 2 {
268 3 if(t>15000)
269 3 beeper=1;
270 3 else
271 3 beeper=0;
272 3 }
273 2 }
274 1 }
275 void mode2(void)//模式2
276 {
277 1 en5027=0;//打开无线接收
278 1 w2=0;
279 1 dp=0;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
280 1 i=0;
281 1 time=0;
282 1 if(time==1)
283 1 while(1)
284 1 {
285 2
286 2 clock();
C51 COMPILER V7.06 3 05/12/2006 21:18:54 PAGE 6
287 2 }
288 1 while(!(i==1||i==2||i==4||i==8))
289 1 {
290 2 mode2readkeys();
291 2 }
292 1 P1=0xFF;
293 1 beeper=0;
294 1 if(i==4)
295 1 i=3;
296 1 if(i==8)
297 1 i=4;
298 1 display2();
299 1 beeper=0;
300 1 en5027=1;//关闭无线接收
301 1 while(1)
302 1 {
303 2 unsigned int t;
304 2 for(t=0;t<20000;t++)
305 2 {
306 3 if(t>15000)
307 3 beeper=1;
308 3 else
309 3 beeper=0;
310 3 }
311 2 }
312 1 }
313
314
315
316
317
318
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 564 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 5
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 + -