专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

HOLTEK单片机-中断优先权测试

作者:佚名   来源:本站原创   点击数:  更新时间:2012年01月02日   【字体:

功能说明:

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 
关闭窗口

相关文章