功能說明:
HT48R50A-1 有3個中斷,外部中斷,定時器0和定時器1.通過實驗就可以了解到他們的優先級關系。
電路說明:
電路圖如下圖所示:
HT48R50A-1 的PA4-PA7各自接一個LED,以便指示正在執行哪一個中斷子程序或主程序。
PA6 所接的LED2用來指示定時器0的中斷子程序是否正在執行。
PA5 所接的LED3用來指示定時器1的中斷子程序是否正在執行。
PA4 所接的LED4用來指示主程序是否正在執行。
完整版本的源程序下載:http://www.zg4o1577.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