那个时钟显示的程序已经显示成功了,感谢大家对我这个单片机新手的帮助。所以把自己的这个程序贡献出来和大家一起分享一下。还请大家多多指教。先谢过了。。。 42h----秒,41h-----分,40h----时 BUF_LED0 送给秒的个位 BUF_LED1 送给秒的十位 BUF_LED2 送给分的个位 BUF_LED3 送给秒的十位 BUF_LED4 送给秒的个位 BUF_LED5 送给秒的十位 一共用了六个数码管进行显示
LED0 BIT P2.0 LED1 BIT P2.1 LED2 BIT P2.2 LED3 BIT P2.3 LED4 BIT P2.4 LED5 BIT P2.5
BUF_LED0 EQU 60H BUF_LED1 EQU 61H BUF_LED2 EQU 62H BUF_LED3 EQU 63H BUF_LED4 EQU 64H BUF_LED5 EQU 65H ORG 00H AJMP MAIN ORG 0BH AJMP IT0P MAIN: MOV P2,#0FFH MOV P0,#0FFH MOV BUF_LED0,#0C0H ;设初值 MOV BUF_LED1,#0C0H MOV BUF_LED2,#0C0H MOV BUF_LED3,#0C0H MOV BUF_LED4,#0C0H MOV BUF_LED5,#0C0H MOV DPTR,#TABLE MOV TMOD,#01H ;设定工作方式 MOV 21H,#100 CLR A MOV 42H,#00 MOV 41H,#00 MOV 40H,#00H MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0 MOV IE,#82H HERE: CALL XIANSHI ;等待中断 SJMP HERE IT0P: PUSH Acc PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H DJNZ 21H,RETURN MOV 21H,#100 MOV A,#01H ADD A,42H MOV 42H,A MOV B,#10 DIV AB MOVC A,@A+DPTR MOV BUF_LED1,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED0,A ;CALL LED_L0 MOV R2,42H CJNE R2,#60,RETURN MOV 42H,#00 MOV A,#01H ADD A,41H MOV 41H,A MOV R3,A MOV B,#10 DIV AB MOVC A,@A+DPTR MOV BUF_LED3,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED2,A ;CALL LED_L2 CJNE R3,#60,RETURN MOV 41H,#00 MOV A,#01H ADD A,40H ;DA A MOV 40H,A MOV R4,A MOV B,#0AH DIV AB MOVC A,@A+DPTR MOV BUF_LED5,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED4,A ;CALL LED_L4 CJNE R4,#24,RETURN MOV 40H,#00 RETURN:POP PSW POP Acc RETI XIANSHI: LED_L0: MOV P2,#11111110B MOV P0,BUF_LED0 CALL DELAY LED_L1:MOV P2,#11111101B MOV P0,BUF_LED1 CALL DELAY LED_L2:MOV P2,#11111011B MOV P0,BUF_LED2 CALL DELAY LED_L3:MOV P2,#11110111B MOV P0,BUF_LED3 CALL DELAY LED_L4:MOV P2,#11101111B MOV P0,BUF_LED4 CALL DELAY LED_L5:MOV P2,#11011111B MOV P0,BUF_LED5 CALL DELAY RET DELAY:MOV R5,#5 ;延时 D2:MOV R6,#248 D1:DJNZ R6,D1 DJNZ R5,D2 RET TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
[此贴子已经被作者于2009-4-9 16:20:00编辑过]
|