第五章 中断系统与定时器计数器_第1页
第五章 中断系统与定时器计数器_第2页
第五章 中断系统与定时器计数器_第3页
第五章 中断系统与定时器计数器_第4页
第五章 中断系统与定时器计数器_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章MCS-51中断系统与定时器/计数器第五章-------1wyx

本章重点:MCS-51的中断系统和定时器/计数器

讲授内容:MCS-51单片机的中断系统

1)中断系统概述

2)中断的处理过程

3)中断系统的初始化及应用

MCS-51单片机的定时器/计数器

1)定时器/计数器的编程结构

2)控制字与编程方法

3)应用编程

当CPU正在处理某件事情的时候,外部发生了某一更为重要或更为紧迫的事件,需要CPU暂时停下正在执行的工作去处理这一突发事件,之后再继续执行以前被暂停的下来的工作,这个过程就叫中断。

5.2MCS-51的中断系统

第五章-------2wyx

CPU中能够控制实现这种中断响应的逻辑机构称为中断系统。中断有以下优点:

1.实现与低速设备的同步;

2.提高系统处理的实时性;

3.实现故障处理,避免系统灾难。

MCS-51有5个中断源——2个外部中断源INT0和INT1,2个片内定时器/计数器溢出中断源,1个片内串行口中断源。分为两级——高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套。

都是可屏蔽的,由软件设定。中断允许寄存器IE控制中断优先级寄存器IP控制中断触发方式位IT控制第五章-------3wyx一、MCS-51的中断源

1.中断源

1)外部中断0请求,由P3.2引脚输入。可由用户设定为两种触发方式,(电平触发方式还是边沿触发方式)。一旦输入信号有效,则向CPU申请中断,并且将中断标志IE0置1。

2)外部中断1请求,由P3.3引脚输入。亦可由用户设定为电平触发方式还是边沿触发方式。一旦输人信号有效,则向CPU申请中断,并将中断标志IE1置1。

3)片内定时器T0溢出中断请求。外部计数脉冲由P3.4引脚输入,当定时器T0产生溢出时,T0中断请求标志TF0置1,请求中断处理。

4)片内定时器T1溢出中断请求。外部计数脉冲由P3.5引脚输入,当定时器T1产生溢出时,T1中断请求标志TF1置l,请求中断处理。

5)片内串行口发送/接收中断请求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志TI或RI置1,请求中断处理。

第五章-------4wyx2.中断请求标志

1)TCON的中断标志

TCON是专用寄存器,字节地址为88H,它锁存了外部中断请求标志以及T0和T1的溢出中断请求标志TCON88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0

(1)IT0:外部中断0(INT0)触发方式控制位。IT0=0INT0为低电平触发方式。

(2)IE0:外部中断0请求标志位。IE0=1,外部中断0向CPU申请中断。

(3)IT1:外部中断1(INT1)触发方式控制位。

(4)IE1:外部中断1请求标志位。IE1=1时,外部中断1向CPU申请中断。

(5)TF0:片内定时器T0溢出中断请求标志。T0被启动后,从初始值开始进行加1

计数,当最高位产生溢出时置TF0=1,向CPU申请中断。

(6)TF1:片内定时器T1溢出中断请求标志,其操作功能与TF0类同。第五章-------5wyx以上中断请求标志在CPU响应该中断时,由硬件自动清0,也可由软件查询该标志,并用软件清0。

SCON是串行口控制寄存器,字节地址为98H。与中断有关的是它的低两位TI和RI。

1)TI(SCON.1)

:串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TI必须由软件清除。

2)RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。TIRISCON2)SCON的中断标志第五章-------6wyx二、MCS-51的中断控制

1.中断允许寄存器IE(A8H)

——中断的允许与开放第五章-------7wyx2.中断优先级寄存器IP(B8H)

——中断优先级控制

内部自然优先级:入口地址

INT0高0003HT0000BHINT10013HT1001BHTI/RI低0023H第五章-------88wyx中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。三、MCS-51对中断的响应1.中断响应的条件1)有中断源发出请求信号2)中断是开放的(总允许、源允许)3)没有封锁(受阻),受阻情况是:

(1)CPU正在执行同级或高一级的中断服务程序;

(2)现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前.不响应任何中断请求;

(3)当前正在执行的是中断返回指令RETI或访问专用寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行一条其他指令,才会响应中断请求。第五章-------9wyx2.中断响应过程(CPU自动完成)

进入中断响应周期。CPU在中断响应周期要完成下列操作:

1)根据中断请求源的优先级高低,使相应的优先级状态触发器置1。

2)保留断点,把PC内容压入堆栈保存。

3)清相应中断请求标志位IE0、IE1、TF0或TF1。

4)把被响应的中断源服务程序入口地址送入PC,进入相应中断服务程序。第五章-------10wyx中断服务程序入口地址表第五章-------11wyx3.中断服务与返回

在编写中断服务程序时加注意的几点:

1)因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放—条无条件转移指令,这样就可使中断服务程序灵活地安排在64KB程序存储器的任何空间。

2)若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。

3)注意在中断服务程序中保护现场和恢复现场。

4)中断服务程序的最后一条是返回指令RETI,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。

第五章-------12wyx4.中断请求的撤除

CPU响应中断请求后,在中断返回(RETI)前,该中断请求信号必须撤除,否则会引起另外一次中断。

1)定时器/计数器溢出中断标志TF0或TFl,在CPU响应中断后由硬件自动清除;

2)串行口中断请求标志TI和RI不能由硬件自动清除,需要在中断服务程序中,用软件来清除相应的中断请求标志;

3)采用边沿触发的外部中断标志IE0或IEl,在CPU响应中断后由硬件自动清除,但在电平触发时,IE0或IEl受外部引脚中断信号的直接控制,所以要在中断请求得到CPU响应后及时撤除中断请求信号,以避免对同一中断请求的多次响应。第五章-------13wyx中断系统的初始化是指用户对上述这些特殊功能寄存器中的各控制位进行赋值。1.中断系统的初始化步骤

1)设定相应中断源的中断允许控制;

2)设定所用中断源的中断优先级;

3)若为外部中断,则应规定中断触发方式。第五章-------14wyx四、MCS-51中断系统的初始化例5-5:请写出INT1为低电平触发的中断系统初始化程序。解:(1)采用位操作指令

SETBEASETBEX1;开INT1中断

SETBPX1;令INT1为高优先级

CLRIT1;令INT1为电平触发

(2)采用字节型指令

MOVIE,#84H;开INT1中断

ORLIP,#04H;高优先级

ANLTCON,#0FBH;电平触发

2.中断系统应用例5-1:一个外部中断源时的编程。如图所示电路,设外部中断信号为负脉冲,引入外部中断1引脚。要求每中断一次,从P1.4~P1.7输入外部开关状态,然后从P1.0~P1.3输出。

第五章-------15wyx程序清单:

ORG0000H;主程序

SJMPMAINORG0013HAJMPINT1 ;转入服务程序

ORG0030HMAIN:SETBIT1 ;设INT1为边沿触发

SETBET1 ;允许INT1中断

SETBEA;开放总允许

SJMP$INT1:ORLP1,#0F0H;中断服务程序:

MOVA,P1;从P1口输入开关状态

SWAPA ;交换高、低4位

MOVP1,A;输出

RETIEND第五章-------16wyx例5-2:当外部中断源多于两个时,可采取硬件申请与软件查询相结合的方法,利用一个外部中断源输入端扩展外部多个中断源服务。如图所示。把多个中断源通过“线或”或与非门引到外部中断源输入端(INT0或INT1),同时又把信息连到某I/O口,便于软件进一步逐个查询。第五章-------17wyx

ORG0000H;主程序

SJMPMAINORG0003HAJMPZINT0 ;转入服务程序

ORG0100HMAIN:

ZINT0:PUSHPSW;中断服务程序

PUSHACC JNB P1.0,ZLOOP0;查询中断源

NEXT1:JNB P1.1,ZLOOP1 NEXT2:JNB P1.2,ZLOOP2 NEXT3:JNBP1.3,ZLOOP3 LJMPNEXTZLOOP0:┋ ;0号中断源服务程序段

LJMPNEXT1ZLOOP1:┋ ;1号中断源服务程序段

LJMPNEXT2

NEXT:RETI第五章-------18wyx

MCS-51系列单片机内有两个可编程的16位定时器/计数器T0和T1;它可由用户程序选择其工作方式,设定其工作参数和条件。5.1MCS-51的定时器/计数器第五章-------19wyx一、定时器/计数器的结构与工作原理1.定时器/计数器的内部结构TH1TL1TH0TL0TCONTMOD内部总线溢出启动启动工作方式工作方式44T1T0CPUTM中断请求溢出

定时器/计数器的核心部件是加1计数器,其输入的计数脉冲有两个来源。当加到计数器为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲使TCON中溢出中断标志TF0或TF1置1,并可向CPU申请中断。

1)定时器工作方式。对机器周期TM计数,这时计数器的计数脉冲由振荡器的12分频信号产生,即每经过一个机器周期,计数值加1,直至计满溢出。在机器周期固定的情况下,定时时间的长短与计数器事先装入的初值有关,装入的初值越大,定时越短。

2)计数器工作方式。通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当T0或T1脚上输入的脉冲信号出现由1到0的负跳变时,计数器值加1。2.定时器/计数器的工作原理第五章-------20wyx单片机内部的定时/计数器是一种可编程器件,主要包括两对8位的寄存器(TH0、TL0和TH1、TL1),方式寄存器TMOD和控制寄存器TCON。TH0、TL0用于存放T0的计数初值和经过值;TH1、TL1用于存放T1的计数初值和经过值;TMOD用于设置T0和T1的工作方式;TCON用于控制T0和T1的运行;P3.4和P3.5引脚用于输入在计数方式下的外部计数脉冲信号。

应用问题:1.定时器/计数器工作方式如何设定?

2.定时器/计数器如何启动?

3.定时器/计数器的初值如何设定?第五章-------21wyx二、定时器/计数器的控制与工作方式1.定时器/计数器的控制

1)定时器方式寄存器TMOD(89H)

用于选定定时/计数器的工作方式、启动方式等。00——方式001——方式110——方式211——方式3TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0控制T1控制T00——定时器模式1——计数器模式0——与INT0无关1——与INT0有关与T0同第五章-------22wyx

(1)用于设置定时/计数器的工作方式(0~3);

M1M0(2)选择定时/计数——C/T

C/T=0---定时,C/T=1---计数(3)启动控制方式选择---内/外;

GATE:门控位,用以决定是软件还是硬件启动/停止计数

GATE=0-允许软件位TR0或TR1启动;

GATE=1-允许外部引脚信号INT0/INT1控制启动/停止。在

TR0/TR1为1的情况下,若INT0/INT1为高电平,启动定时器计数;为低电平时停止计数。第五章-------23wyx例如:设定时器T0工作于方式1定时,由软件启动控制,则可用如下指令来装入控制字。

MOVTMOD,#00000001B;或MOVTMOD,#01H;2)定时器控制寄存器TCON(88H)注意:复位后TMOD、TCON各位均清零。例:启动T0工作,用指令SETBTR0第五章-------24wyx(1)TF1定时器T1溢出标志(2)TR1定时器T1运行控制位(3)TF0定时器T0溢出标志(4)TR0定时器T0运行控制位(5)IE1外部中断1请求标志(6)IT1外部中断1触发方式选择位(7)IE0外部中断0请求标志(8)IT0外部中断0触发方式选择位。

通过控制TMOD中的M1,M0两位选择定时器4种工作方式。这4种工作方式的实质是对T0(或T1)的两个8位计数器TH0、TL0(或TH1、TL1)的计数操作方式而言。方式0下的逻辑结构图第五章-------25wyx2.定时器/计数器的工作方式1)方式0TL低5位和TH的8位组成13位,高8位溢出置位TF定时器启、停控制(1)C/T=1为计数工作方式,计数脉冲由T0引脚输入。计数个数

N=(213—初值X)(2)C/T=0为定时工作方式,计数脉冲频率为时钟频率fosc/12。

定时时间t=(213—初值X)*机器周期

X=213—定时时间t/机器周期方式0下工作时:思考:(1)最大计数或定时时的初值X是多少?(2)时钟频率为12MHZ时,方式0最大定时时间是多少?第五章-------26wyx2)方式1

定时/计数器工作于方式1时为一个16位的计数器。其逻辑结构、操作及运行控制几乎与方式0完全—样,差别仅在于计数器的位数不同。定时工作方式1时,定时时间为:

t=(216-计数初值X)×机器周期

X=216—定时时间t/机器周期用于计数器工作方式时,计数个数

N=(216—初值X)第五章-------27wyx3)方式2

定时器/计数器工作于方式2时,将两个8位计数器THx、TLx分成独立的两部分,组成一个可自动重装载的8位定时/计数器。其逻辑结构如图所示。

方式2的控制运行与方式0、方式1相同。用于定时工作方式时,定时时间t为:t=(28—计数初值X)×机器周期用于计数工作方式时,最大计数值(初值=0时)是28。方式2特别适合于用作较精确的定时和脉冲信号发生器。还常用作串行口波特率发生器。第五章-------28wyx4)方式3

方式3只适用于定时器T0。在方式3下,T0被分成两个相互独立的8位计数器TL0和TH0。第五章-------29wyx

1)TH0和TL0变成2个分开的计数器。

2)TL0占用了T0全部的定时器控制位,可以工作于定时/

计数模式。(C/T,GATE,TR0,TF0)

3)TH0只能用于定时方式,运行控制位和溢出标志位则借用T1的TR1和TF1。

4)在T0设置为方式3工作时,一般是将定时器T1工作于方式2,作为串行口波特率发生器,或用于不需要中断的场合。T0工作于方式3时:第五章-------30wyx三、定时器/计数器计数初始化1.定时器/计数器的初始化方法初始化的主要是对TCON和TMOD编程,计算和装载T0和T1的计数初值。1)初始化步骤(1)分析定时器/计数器的工作方式,将方式字写入TMOD寄存器;

(定/计、内/外启动、工作方式)(2)计算T0或T1中的计数初值,并将其写入TH0、TL0或TH1、TL1;(3)根据需要开放CPU和定时器/计数器的中断,即对IE和IP寄存器编程;(4)启动定时器/计数器工作:若要求用软件启动,编程时对TR0或TR1置位即可启动;若由外部中断引脚电平启动,则对TR0或TR1置位后,还需给外引脚提供启动电平。第五章-------31wyx(1)

计数器模式时的计数初值

X=2M-N

(M为计数器位数,N为要求的计数值)

X=0,计数器的计数值最大——

2M(2)定时器模式时的定时初值定时时间为:t=(2M-计数初值X)×机器周期定时初值X=2M-

(t/12*Tosc

)=2M

(t*fosc/12)2)计数器初值的计算213=8192(方式0)216=65536(方式1)28=256(方式2及方式3)第五章-------32wyx

若系统时钟频率fOSC=12MHz,1机器周期=1µs;方式0:M=13,tmax

=213*机器周期=8192µs

方式1:M=16,tmax=216*机器周期=65536µs

方式2:M=8,tmax=28*机器周期=256µs(方式3同)X==60536=0EC78H

X=0,定时器的定时时间最大:

tmax=2M×机器周期例如:若fOSC=6MHz,定时时间为10ms,使用定时器T0工作于方式1,则初值:第五章-------33wyx编写初始化程序的步骤;

1)方式控制字送TMODMOVTMOD,#——2)计数器的初值送TH、TL(0/1)

MOVTH0,#——MOVTL0,#——3)根据需要开放中断和设定优先级即对IE和IP赋初值(可位寻址)4)启动T0/T1开始工作---置位TR0/1SETBTR0/15)等待溢出信号的出现(如何进入处理程序?)(查询法或中断法)2.定时/计数器初始化举例第五章-------34wyx例5-3:要求定时器T1于方式1,定时50ms,由软件启动,允许中断。设系统时钟频率fOSC=6MHz,编写初始化程序段。解:1)方式控制字为00010000B=10H2)计数初值为X1=T1初始化程序段如下:

MOV TMOD,#10H

;写入工作方式控制字

MOV TH1,#9EH ;写入计数初值

MOV TL1,#58HSETB ET1 ;开放T1中断

SETB EA ;开放CPU中断

SETB TR1

;启动T1工作

第五章-------35wyx例5-4:利用定时器T0产生1ms定时,并使P1.0引脚输出周期为2ms的方波信号,已知晶振频率为6MHz,用查询法编写程序。解:(1)按题意分析:方波周期T=2ms,可用T0方式0定时1ms,使P1.0每隔1ms取反一次,即可得到周期为2ms的方波。设T0工作在方式0,由软件启动。

(2)TMOD控制字为00000000B(3)初值计算:fosc=6MHz,机器周期为2µs。初值=213-1×10-3/2×10-6=8192-500=7692=1111000001100B

即有TH0=0F0H(高8位),TL0=0CH(低5位)。第五章-------36wyx四、定时器/计数器应用举例程序如下:

ORG2000HSTAR:MOVTMOD,#00H

;写入工作方式字

MOVTH0,#0F0H

;写入计数初值

MOVTL0,#0CHSETBTR0

;启动T0LOOP:JBCTF0,PE

;TF0=1溢出转移PE,并清除TF0AJMPLOOP

;TF0为0转LOOP等待

PE:MOVTH0,#0F0H

;重装初值

MOVTL0,#0C0HCPLP1.0;取反

AJMPLOOP;转LOOP等定时时间到

END第五章-------37wyx例5-5:要求使用8051的定时器T0定时,在P1.0引脚上输出周期为2秒的方波,设晶振频率为12MHz。题意分析:要产生周期为2秒的方波,T0必须定时1秒,这超过了定时器的最大定时时间。因此,只有采用定时器定时和软件计数相结合的方法才可以解决问题。定时器T0定时50ms,软件计数器初值设为20,每当定时50ms时间到,CPU就响应T0的溢出中断请求,进入中断服务程序。在中断程序中,先让软件计数器减1,然后判断它是否为零。若为零,表明定时1秒钟已到,便可恢复软件计数器初值和改变P1.0引脚电平,然后返回主程序;若不为零,则表示定时1秒未到,也返回主程序。解:(1)按题意分析:可用T0为16位定时器模式(方式1)定时50ms。

(2)TMOD控制字为01H(3)初值计算:fosc=12MHz,机器周期为1µs。初值=216–50ms/1µs=15536=3CB0H,即TH0=3CH,TL0=0B0H。第五章-------38wyx主程序:

ORG1000HSTART:MOVTMOD,#01H

MOVTH0,#3CHMOVTL0,#0B0HMOVIE,#82H;开T0中断

SETBTR0

;启动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论