功能说明:
HT48R50A-1 有3个中断,外部中断,定时器0和定时器1.通过实验就可以了解到他们的优先级关系。
电路说明:
电路图如下图所示:
HT48R50A-1 的PA4-PA7各自接一个LED,以便指示正在执行哪一个中断子程序或主程序。
PA6 所接的LED2用来指示定时器0的中断子程序是否正在执行。
PA5 所接的LED3用来指示定时器1的中断子程序是否正在执行。
PA4 所接的LED4用来指示主程序是否正在执行。
完整版本的源程序下载:http://www.51hei.com/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

