功能说明:
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