LEDBUF EQU 30H ;顯示碼緩存區 HOUR EQU 40H MINUTE EQU 41H SECOND EQU 42H C100US EQU 43H TICK EQU 10000 ;置中斷次數 T100US EQU 256-100 ;置定時器初值 LJMP START ;跳轉到主程序
ORG 0003H LJMP DISPLYLED RETI
ORG 000BH ;定時器0中斷入口 TOINT: PUSH PSW ;狀態保護 PUSH ACC MOV A,C100US+1 JNZ GOOD ;計數值是否為0 DEC C100US GOOD: DEC C100US+1 MOV A,C100US ORL A,C100US+1 JNZ EXIT MOV C100US,#HIGH(TICK) ;重置計數值 MOV C100US+1,#LOW(TICK) INC SECOND ;秒加一 MOV A,SECOND CJNE A,#60,EXIT ;判斷秒針是否為60 MOV SECOND,#0 INC MINUTE MOV A,MINUTE CJNE A,#60,EXIT MOV MINUTE,#0 INC HOUR MOV A,HOUR CJNE A,#24,EXIT MOV HOUR,#0 EXIT: POP ACC POP PSW RETI
DELAY: ; 延時子程序 MOV R7,#0FEH DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6,DELAYLOOP ; R6是否有錯,是否應改為R7? RET
LEDMAP: ;數碼管顯示碼 DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H
這是我寫的程序,怎么實現計時停止?高手賜教! |