那個時鐘顯示的程序已經顯示成功了,感謝大家對我這個單片機新手的幫助。所以把自己的這個程序貢獻出來和大家一起分享一下。還請大家多多指教。先謝過了。。。 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編輯過]
|