功能說明:
HT48R50A-1 有3個中斷,外部中斷,定時器0和定時器1.通過實驗就可以了解到他們的優(yōu)先級關(guān)系。
電路說明:
電路圖如下圖所示:
HT48R50A-1 的PA4-PA7各自接一個LED,以便指示正在執(zhí)行哪一個中斷子程序或主程序。
PA6 所接的LED2用來指示定時器0的中斷子程序是否正在執(zhí)行。
PA5 所接的LED3用來指示定時器1的中斷子程序是否正在執(zhí)行。
PA4 所接的LED4用來指示主程序是否正在執(zhí)行。
完整版本的源程序下載:http://m.izizhuan.cn/f/htzd.rar
程序:
#INCLUDE HT48R50A-1.INC
;---------------------------------------------
DATA .SECTION AT 60H 'DATA'
DELAY_COUNTER_1 DB ? ;[60H]
DELAY_COUNTER_2 DB ? ;[61H]
DISPLAY_COUNTER DB ? ;[62H]
;---------------------------------------------
CODE .SECTION AT 00H 'CODE'
ORG 00H
JMP START
ORG 04H
JMP INTB
ORG 08H
JMP TIMER0
ORG 0CH
JMP TIMER1
ORG 50H
START:
CLR PAC
SET PA
MOV A,02H
MOV DISPLAY_COUNTER,A
LOOP :
CLR PA.4
CALL DELAY
SET PA.4
CALL DELAY
SDZ DISPLAY_COUNTER
JMP LOOP
MOV A,0FH
MOV INTC,A
MOV A,7FH
MOV INTC,A
HALT
RET
;---------------------------------------------
INTB:
MOV A,03H
MOV DISPLAY_COUNTER,A
INT_LOOP:
CLR PA.7
CALL DELAY
SET PA.7
CALL DELAY
SDZ DISPLAY_COUNTER
JMP INT_LOOP
RETI
;---------------------------------------------
TIMER0:
MOV A,04H
MOV DISPLAY_COUNTER,A
TIMER0_LOOP:
CLR PA.6
CALL DELAY
SET PA.6
CALL DELAY
SDZ DISPLAY_COUNTER
JMP TIMER0_LOOP
RETI
;---------------------------------------------
TIMER1:
MOV A,05H
MOV DISPLAY_COUNTER,A
TIMER1_LOOP:
CLR PA.5
CALL DELAY
SET PA.5
CALL DELAY
SDZ DISPLAY_COUNTER
JMP TIMER1_LOOP
RETI
;---------------------------------------------
DELAY PROC
MOV A,0FFH
MOV DELAY_COUNTER_1,A
MOV DELAY_COUNTER_2,A
WAIT:
SDZ DELAY_COUNTER_2
JMP WAIT
SDZ DELAY_COUNTER_1
JMP WAIT
RET
DELAY ENDP
;---------------------------------------------
END

