📄 second.lst
字号:
205 1 XC0028:
206 1 #pragma endasm
207 1 }
208
209 void display(unsigned char i,unsigned char num)
210 {
211 1 if(num >= 0 && num <=9)
212 1 {switch(i)
213 2 { case 0:P2= LedSelect0 | num;
214 3 //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
215 3 break;
216 3 case 1:P2= LedSelect1 | num;
217 3 //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
218 3 break;
219 3 case 2:P2= LedSelect2 | num;
220 3 //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
221 3 break;
222 3 case 3:P2= LedSelect3 | num;
223 3 //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
224 3 break;
225 3 case 4:P2= LedSelect4 | num;
226 3 //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
227 3 break;
228 3 case 5:P2= LedSelect5 | num;
229 3 //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
230 3 break;
231 3 default:break;
232 3 }
233 2 }
234 1 }
235
236 unsigned char keyscan()
237 {
238 1 PinDrvKey1=TRUE;
239 1 if(PinScanKey1==TRUE)
240 1 PinLamp=FALSE;
241 1 PinSpeaker=FALSE;
C51 COMPILER V6.23a SECOND 09/08/2003 17:00:53 PAGE 5
242 1 delay(DELAY_VALUE);
243 1 PinLamp=TRUE;
244 1 PinSpeaker=TRUE;
245 1 return 1;
246 1 if(PinScanKey2==TRUE)
247 1 PinLamp=FALSE;
248 1 PinSpeaker=FALSE;
249 1 delay(DELAY_VALUE);
250 1 PinLamp=TRUE;
251 1 PinSpeaker=TRUE;
252 1 return 5;
253 1 if(PinScanKey1==TRUE)
254 1 PinLamp=FALSE;
255 1 PinSpeaker=FALSE;
256 1 delay(DELAY_VALUE);
257 1 PinLamp=TRUE;
258 1 PinSpeaker=TRUE;
259 1 return 9;
260 1 if(PinScanKey1==TRUE)
261 1 PinLamp=FALSE;
262 1 PinSpeaker=FALSE;
263 1 delay(DELAY_VALUE);
264 1 PinLamp=TRUE;
265 1 PinSpeaker=TRUE;
266 1 return 12;
267 1 PinDrvKey1=FALSE; //扫描第一列
268 1 PinDrvKey2=TRUE;
269 1 if(PinScanKey1==TRUE)
270 1 PinLamp=FALSE;
271 1 PinSpeaker=FALSE;
272 1 delay(DELAY_VALUE);
273 1 PinLamp=TRUE;
274 1 PinSpeaker=TRUE;
275 1 return 2;
276 1 if(PinScanKey2==TRUE)
277 1 PinLamp=FALSE;
278 1 PinSpeaker=FALSE;
279 1 delay(DELAY_VALUE);
280 1 PinLamp=TRUE;
281 1 PinSpeaker=TRUE;
282 1 return 6;
283 1 if(PinScanKey1==TRUE)
284 1 PinLamp=FALSE;
285 1 PinSpeaker=FALSE;
286 1 delay(DELAY_VALUE);
287 1 PinLamp=TRUE;
288 1 PinSpeaker=TRUE;
289 1 return 0;
290 1 if(PinScanKey1==TRUE)
291 1 PinLamp=FALSE;
292 1 PinSpeaker=FALSE;
293 1 delay(DELAY_VALUE);
294 1 PinLamp=TRUE;
295 1 PinSpeaker=TRUE;
296 1 return 13;
297 1 PinDrvKey2=FALSE; //扫描第二列
298 1 PinDrvKey3=TRUE;
299 1 if(PinScanKey1==TRUE)
300 1 PinLamp=FALSE;
301 1 PinSpeaker=FALSE;
302 1 delay(DELAY_VALUE);
303 1 PinLamp=TRUE;
C51 COMPILER V6.23a SECOND 09/08/2003 17:00:53 PAGE 6
304 1 PinSpeaker=TRUE;
305 1 return 3;
306 1 if(PinScanKey2==TRUE)
307 1 PinLamp=FALSE;
308 1 PinSpeaker=FALSE;
309 1 delay(DELAY_VALUE);
310 1 PinLamp=TRUE;
311 1 PinSpeaker=TRUE;
312 1 return 7;
313 1 if(PinScanKey1==TRUE)
314 1 PinLamp=FALSE;
315 1 PinSpeaker=FALSE;
316 1 delay(DELAY_VALUE);
317 1 PinLamp=TRUE;
318 1 PinSpeaker=TRUE;
319 1 return 10;
320 1 if(PinScanKey1==TRUE)
321 1 PinLamp=FALSE;
322 1 PinSpeaker=FALSE;
323 1 delay(DELAY_VALUE);
324 1 PinLamp=TRUE;
325 1 PinSpeaker=TRUE;
326 1 return 14;
327 1 PinDrvKey3=FALSE; //扫描第三列
328 1 PinDrvKey4=TRUE;
329 1 if(PinScanKey1==TRUE)
330 1 PinLamp=FALSE;
331 1 PinSpeaker=FALSE;
332 1 delay(DELAY_VALUE);
333 1 PinLamp=TRUE;
334 1 PinSpeaker=TRUE;
335 1 return 4;
336 1 if(PinScanKey2==TRUE)
337 1 PinLamp=FALSE;
338 1 PinSpeaker=FALSE;
339 1 delay(DELAY_VALUE);
340 1 PinLamp=TRUE;
341 1 PinSpeaker=TRUE;
342 1 return 8;
343 1 if(PinScanKey1==TRUE)
344 1 PinLamp=FALSE;
345 1 PinSpeaker=FALSE;
346 1 delay(DELAY_VALUE);
347 1 PinLamp=TRUE;
348 1 PinSpeaker=TRUE;
349 1 return 11;
350 1 if(PinScanKey1==TRUE)
351 1 PinLamp=FALSE;
352 1 PinSpeaker=FALSE;
353 1 delay(DELAY_VALUE);
354 1 PinLamp=TRUE;
355 1 PinSpeaker=TRUE;
356 1 return 15;
357 1 PinDrvKey3=FALSE; //扫描第四列
358 1 return 16;
359 1 }
360
361 void updatee()
362 {
363 1 if(s00==9) //如果10ms位需要进位,则进入语句
364 1 {
365 2 s00=0;
C51 COMPILER V6.23a SECOND 09/08/2003 17:00:53 PAGE 7
366 2 if(s01==9) //如果100ms位需要进位,则进入语句
367 2 {
368 3 s01=0;
369 3 if(s0==9) //如果1sec位需要进位,则进入语句
370 3 {
371 4 s0=0;
372 4 if(s1==5) //如果10sec位需要进位,则进入语句
373 4 {
374 5 s1=0;
375 5 if(m0==9)
376 5 {m0=0;
377 6 if(m1==5)m1=0;
378 6 else m1+=1;
379 6 }
380 5 else m0+=1;
381 5 }
382 4 else s1+=1;
383 4 }
384 3 else s0+=1;
385 3 }
386 2 else s01+=1;
387 2 }
388 1 else s00+=1;
389 1 display(0,s00);
390 1 delay(DELAY_VALUE);
391 1 display(1,s01);
392 1 delay(DELAY_VALUE);
393 1 display(2,s0);
394 1 delay(DELAY_VALUE);
395 1 display(3,s1);
396 1 delay(DELAY_VALUE);
397 1 display(4,m0);
398 1 delay(DELAY_VALUE);
399 1 display(5,m1);
400 1 delay(DELAY_VALUE); //以上语句则在数码管上显示各个数字
401 1
402 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 646 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 4
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 + -