📄 hour.lst
字号:
225 1 XC0025:
226 1 CLR C
227 1 MOV A,R5
228 1 SUBB A,R7
229 1 MOV A,R6
230 1 XRL A,#080H
231 1 MOV R0,A
232 1 MOV A,R4
233 1 XRL A,#080H
234 1 SUBB A,R0
235 1 JNC XC0028
236 1 INC R5
237 1 CJNE R5,#00H,XC0069
238 1 INC R4
239 1 XC0069:
240 1 SJMP XC0025
241 1 XC0028:
C51 COMPILER V6.23a HOUR 09/08/2003 17:01:40 PAGE 5
242 1 #pragma endasm
243 1 }
244
245 void display(unsigned char i,unsigned char num)
246 {
247 1 if(num >= 0 && num <=9)
248 1 {switch(i)
249 2 { case 0:P2= LedSelect0 | num;
250 3 //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
251 3 break;
252 3 case 1:P2= LedSelect1 | num;
253 3 //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
254 3 break;
255 3 case 2:P2= LedSelect2 | num;
256 3 //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
257 3 break;
258 3 case 3:P2= LedSelect3 | num;
259 3 //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
260 3 break;
261 3 case 4:P2= LedSelect4 | num;
262 3 //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
263 3 break;
264 3 case 5:P2= LedSelect5 | num;
265 3 //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
266 3 break;
267 3 default:break;
268 3 }
269 2 }
270 1 }
271
272 unsigned char keyscan()
273 {
274 1 PinDrvKey1=TRUE;
275 1 if(PinScanKey1==TRUE)
276 1 PinLamp=FALSE;
277 1 PinSpeaker=FALSE;
278 1 delay(DELAY_VALUE);
279 1 PinLamp=TRUE;
280 1 PinSpeaker=TRUE;
281 1 return 1;
282 1 if(PinScanKey2==TRUE)
283 1 PinLamp=FALSE;
284 1 PinSpeaker=FALSE;
285 1 delay(DELAY_VALUE);
286 1 PinLamp=TRUE;
287 1 PinSpeaker=TRUE;
288 1 return 5;
289 1 if(PinScanKey1==TRUE)
290 1 PinLamp=FALSE;
291 1 PinSpeaker=FALSE;
292 1 delay(DELAY_VALUE);
293 1 PinLamp=TRUE;
294 1 PinSpeaker=TRUE;
295 1 return 9;
296 1 if(PinScanKey1==TRUE)
297 1 PinLamp=FALSE;
298 1 PinSpeaker=FALSE;
299 1 delay(DELAY_VALUE);
300 1 PinLamp=TRUE;
301 1 PinSpeaker=TRUE;
302 1 return 12;
303 1 PinDrvKey1=FALSE; //扫描第一列
C51 COMPILER V6.23a HOUR 09/08/2003 17:01:40 PAGE 6
304 1 PinDrvKey2=TRUE;
305 1 if(PinScanKey1==TRUE)
306 1 PinLamp=FALSE;
307 1 PinSpeaker=FALSE;
308 1 delay(DELAY_VALUE);
309 1 PinLamp=TRUE;
310 1 PinSpeaker=TRUE;
311 1 return 2;
312 1 if(PinScanKey2==TRUE)
313 1 PinLamp=FALSE;
314 1 PinSpeaker=FALSE;
315 1 delay(DELAY_VALUE);
316 1 PinLamp=TRUE;
317 1 PinSpeaker=TRUE;
318 1 return 6;
319 1 if(PinScanKey1==TRUE)
320 1 PinLamp=FALSE;
321 1 PinSpeaker=FALSE;
322 1 delay(DELAY_VALUE);
323 1 PinLamp=TRUE;
324 1 PinSpeaker=TRUE;
325 1 return 0;
326 1 if(PinScanKey1==TRUE)
327 1 PinLamp=FALSE;
328 1 PinSpeaker=FALSE;
329 1 delay(DELAY_VALUE);
330 1 PinLamp=TRUE;
331 1 PinSpeaker=TRUE;
332 1 return 13;
333 1 PinDrvKey2=FALSE; //扫描第二列
334 1 PinDrvKey3=TRUE;
335 1 if(PinScanKey1==TRUE)
336 1 PinLamp=FALSE;
337 1 PinSpeaker=FALSE;
338 1 delay(DELAY_VALUE);
339 1 PinLamp=TRUE;
340 1 PinSpeaker=TRUE;
341 1 return 3;
342 1 if(PinScanKey2==TRUE)
343 1 PinLamp=FALSE;
344 1 PinSpeaker=FALSE;
345 1 delay(DELAY_VALUE);
346 1 PinLamp=TRUE;
347 1 PinSpeaker=TRUE;
348 1 return 7;
349 1 if(PinScanKey1==TRUE)
350 1 PinLamp=FALSE;
351 1 PinSpeaker=FALSE;
352 1 delay(DELAY_VALUE);
353 1 PinLamp=TRUE;
354 1 PinSpeaker=TRUE;
355 1 return 10;
356 1 if(PinScanKey1==TRUE)
357 1 PinLamp=FALSE;
358 1 PinSpeaker=FALSE;
359 1 delay(DELAY_VALUE);
360 1 PinLamp=TRUE;
361 1 PinSpeaker=TRUE;
362 1 return 14;
363 1 PinDrvKey3=FALSE; //扫描第三列
364 1 PinDrvKey4=TRUE;
365 1 if(PinScanKey1==TRUE)
C51 COMPILER V6.23a HOUR 09/08/2003 17:01:40 PAGE 7
366 1 PinLamp=FALSE;
367 1 PinSpeaker=FALSE;
368 1 delay(DELAY_VALUE);
369 1 PinLamp=TRUE;
370 1 PinSpeaker=TRUE;
371 1 return 4;
372 1 if(PinScanKey2==TRUE)
373 1 PinLamp=FALSE;
374 1 PinSpeaker=FALSE;
375 1 delay(DELAY_VALUE);
376 1 PinLamp=TRUE;
377 1 PinSpeaker=TRUE;
378 1 return 8;
379 1 if(PinScanKey1==TRUE)
380 1 PinLamp=FALSE;
381 1 PinSpeaker=FALSE;
382 1 delay(DELAY_VALUE);
383 1 PinLamp=TRUE;
384 1 PinSpeaker=TRUE;
385 1 return 11;
386 1 if(PinScanKey1==TRUE)
387 1 PinLamp=FALSE;
388 1 PinSpeaker=FALSE;
389 1 delay(DELAY_VALUE);
390 1 PinLamp=TRUE;
391 1 PinSpeaker=TRUE;
392 1 return 15;
393 1 PinDrvKey3=FALSE; //扫描第四列
394 1 return 16;
395 1 }
396
397 void updatee()
398 {
399 1 if(s0==9) //如果10ms位需要进位,则进入语句
400 1 {
401 2 s0=0;
402 2 if(s1==5) //如果100ms位需要进位,则进入语句
403 2 {
404 3 s1=0;
405 3 if(m0==9) //如果1sec位需要进位,则进入语句
406 3 {
407 4 m0=0;
408 4 if(m1==5) //如果10sec位需要进位,则进入语句
409 4 {
410 5 m1=0;
411 5 if(h0==9&&h1<=1)
412 5 {h0=0;
413 6 h1+=1;}
414 5 else if(h0==3&&h1==2)
415 5 {h0=0;
416 6 h1=0;}
417 5 else h0+=1;
418 5 }
419 4 else m1+=1;
420 4 }
421 3 else m0+=1;
422 3 }
423 2 else s1+=1;
424 2 }
425 1 else s0+=1;
426 1 display(0,s0);
427 1 delay(DELAY_VALUE);
C51 COMPILER V6.23a HOUR 09/08/2003 17:01:40 PAGE 8
428 1 display(1,s1);
429 1 delay(DELAY_VALUE);
430 1 display(2,m0);
431 1 delay(DELAY_VALUE);
432 1 display(3,m1);
433 1 delay(DELAY_VALUE);
434 1 display(4,h0);
435 1 delay(DELAY_VALUE);
436 1 display(5,h1);
437 1 delay(DELAY_VALUE); //以上语句则在数码管上显示各个数字
438 1
439 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 915 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 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 + -