×
单片机 > 单片机程序设计 > 详情

实验三、单片机的内中断处理

发布时间:2020-09-02 发布时间:
|
1、用定时器中断控制信号灯。

       ORG     0000H

        LJMP    MAIN

 

        ORG     000BH       ;内中断T0入口地址

        LJMP    T0INT

 

        ORG     02400H

MAIN:   MOV     SP,#30H

        MOV     A,#00H

        MOV     TMOD,#01H

        MOV     TH0,#3CH

        MOV     TL0,#0B0H

        SETB    EA

        SETB    ET0

        SETB    TR0

LOOP:   LJMP    LOOP

 

        ORG     0340H

T0INT:  MOV     TH0,#3CH

        MOV     TL0,#0B0H

        MOV     P1,A

        CPL              ;亮点闪烁

        RETI

        END

分析:在本程序中,使用定时器0的中断方式产生100ms的延时,实现8个LED的亮点闪烁。当给SP、A赋值后,程序员给TMOD、TH0、TL0,将TR0置1,然后执行“LOOP: SJMP LOOP”指令,这样不断的循环。

2、         用定时器中断和外中断控制信号灯。

        ORG     0000H

        LJMP    MAIN

       

        ORG     0003H       ;外中断入口地址

        LJMP    INT        

 

        ORG     000BH       ;内中断入口地址

        LJMP    T0INT

 

        ORG     0100H      

MAIN:   MOV     SP,#30H

        MOV     A,#0FEH

        MOV     TMOD,#01H

        SETB    EA

        SETB    EX0

        SETB    IT0

        SETB    ET0

        SETB    PX0         ;设置外部中断0为高优先级

        MOV     TH0,#3CH

        MOV     TL0,#0B0H

        SETB    TR0

 

LOOP0:  LJMP    LOOP0

 

        ORG     0200H       ;内中断程序块

T0INT:  MOV     TH0,#3CH

        MOV     TL0,#0B0H

        MOV     R3,#08H

        MOV     P1,A

        LCALL   DELAY

        RL               ;亮点流动

        RETI

   

        ORG     0300H       ; 外中断程序块

INT:    PUSH    ACC

        MOV     A,#00H

        MOV     R3,#08H

LOOP1:  MOV     P1,A

        LCALL   DELAY

        CPL              ;亮点闪烁

        DJNZ    R3,LOOP1

        POP     ACC

        RETI

       

        ORG     0400H       ;延迟程序块

DELAY:  MOV     R0,#0FFH

D1:     MOV     R1,#0FFH

D2:     MOV     R2,#0FFH

D3:     DJNZ    R2,D3

        DJNZ    R1,D2

        DJNZ    R0,D1

        RET

        END

分析:程序开始时,使用定时器0的中断方式产生100ms的延时,实现8个LED的亮点流动。在亮点流动的过程中,如果按下单脉冲键,由于将外部中断0的优先级设置为高优先级,所以8个LED的发光状态将改为同时闪烁,闪烁8次恢复亮点流动(闪烁时间间隔由延时程序完成)。

3、实验心得

计数器/定时器本质上都是是对一个脉冲源进行加1计数。它的计数的脉冲源是什么取决了它是计数器还是定时器;加1计数器的脉冲源是来自于晶体振荡器时,为定时状态;脉冲源是来自于单片机外部,由于外部的的脉冲间隔不一定相等,计数和时间就没有明确的关系密切,所以这时只能是对外部的脉冲进行“计数”。在实验中,由于没有给单片机输入外部信号,这说明定时/计数器的计数脉冲来自于单片机的晶体振荡,即定时/计数器工作在定时状态下。

由振荡频率来计数,因为一个机器周期包括12个振荡周期,计数器加1实际上累加的是机器周期,每一个机器周期,计数器就加1。根据振荡频率,可以得出计数脉冲的间隔时间,即计数器加1的时间间隔。当已知计数/定时器的差值时,就可得达到定时效果。

关键字:单片机  内中断处理 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析