您的位置 首页 软件

试验三、单片机的内中止处理

1、用定时器中断控制信号灯。ORG0000HLJMPMAINORG000BH;内中断T0入口地址LJMPT0INTORG02400HMAIN:MOVSP,30HM

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 A ;亮点闪耀

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 A ;亮点活动

RETI

ORG 0300H ; 外中止程序块

INT: PUSH ACC

MOV A,#00H

MOV R3,#08H

LOOP1: MOV P1,A

LCALL DELAY

CPL A ;亮点闪耀

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的时刻距离。当已知计数/守时器的差值时,就可得到达守时作用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/261545.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部