第五章 MCS-51-定时计数器_第1页
第五章 MCS-51-定时计数器_第2页
第五章 MCS-51-定时计数器_第3页
第五章 MCS-51-定时计数器_第4页
第五章 MCS-51-定时计数器_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

第五章MCS-51定时/计数器、串行口及中断系统

本章重点讨论:

1.定时/计数器;

2.全双工串行口;3.中断系统。5.1MCS-51定时/计数器5.1.1定时器/计数器的基本概念5.1.2MCS-51定时/计数器的组成5.1.3定时器/计数器的控制方法5.1.4定时器、计数器的初始化5.1.5举例5.1.6定时计数器总结计数概念的引入1生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等。再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。计数概念的引入2石油工业中,也有大量计数的问题。比如如何确定油层的深度?通常采用的方法是在裸眼井完钻测井以后,需要下金属套管固井,每一根套管的长度是一样的,比如10米,在每根套管的接箍处都打上磁标记。下完套管就要用水泥固井,然后套管就被永久埋在地下。为了产出石油,下一步就是在测井以后确定的层位处射孔。这时在射孔枪的上面就通过电缆接了一根磁定位仪器,这个仪器可以测量到套管接箍上的磁标记,并且可以计量磁标记的数目,因此就可以确定射孔枪的目标油层的深度。当然10m以内的深度是靠地面测量电缆长度确定的。计数器的容量1从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65535。计数器的容量2一般的下井电缆长度在7000m,根据井眼长度的不同还有更长或更短的电缆,可以依据需要选取。因此,计数器的容量就是由电缆长度决定的。计数与定时的关系8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如学校的打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次后闹响,所以时间就转化为秒针走的次数,也就是计数的次数了。可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。因此只要计数脉冲的间隔相等,计数脉冲的周期已知,则计数值就代表了时间的流逝。溢出让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。溢出2

如果电缆的最大长度为7000m,那么磁标记计数器计满700以后,就要产生一个溢出信号,这个溢出信号意味着电缆已经放到头了,需要地面的缆车立即停止工作,否则可能造成射孔枪落井的事故。计数器溢出后会引发什么事件,我们下面再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1?任意定时及计数的方法刚才已研究过,MCS-51计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。问题是在现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?提示:如果是一个空的盆要10000滴水滴进去才会满,如果在开始滴水之前就先放入一勺水,还需要10000滴吗?我们采用预置数的方法,要计数100次,那就先放进65436,再来100个脉冲,不就到了65536了吗。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒。如果现在只要10毫秒定时怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进65536-10000=55536就可以了。5.1.2MCS-51定时/计数器的组成T1与定时/计数器相关的特殊功能寄存器

特殊功能寄存器:

TH0TH1存放计数初值的高8位

TL0TL1存放计数初值的低8位

TMOD(定时器工作模式寄存器)TCON(定时器控制寄存器)

T0和T1都是16位的可预置加1计数器

T0和T1都是16位的可编程定时/计数器

T0由两个8位的寄存器TH0和TL0组成

T1由两个8位的寄存器TH1和TL1组成5.1.3定时器/计数器的控制方法

定时器/计数器的工作由TCON和TMOD控制。由软件把控制字写入TCON和TMOD,用来设置T0和T1的工作方式和控制功能。当8051系统复位时,TCON和TMOD所有位都被清0。一.工作模式控制寄存器—TMOD(89H)定时器工作模式寄存器TMODGATEC/TM10MGATEC/T1M0M控制T1控制T089H和T类同01M0M00011011方式方式0方式1方式2方式301定时器模式计数器模式01与INT无关00与INT有关二.定时器控制寄存器—TCON(88H)

定时器工作模式寄存器TCON

M1和M0工作方式选择位这两位可形成四种编码,对应四种工作方式:

M1M0方式功能描述

000为13位定时器/计数器,TL存放低5位,TH存高8位

011为16位定时器/计数器

102可自动再装入的8位定时器/计数器

113仅适于T0,两个8位定时器/计数器三.定时器/计数器的四种工作模式方式0

高8位和低5位的一个13位计数器的运行方式,见下图.

当TL1的低5位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过查询TF1是否置位来判断TH1是否回零溢出。启动控制

B=TR1A=TR1(INT1+/GATE)

GATETRxINTx启动情况

00X停止

01X启动定时/计数

10X停止

11启动定时/计数

11停止

其中:1表示高电平,0表示低电平,X表示任意状态

方式1

方式1是一个16位定时器/计数器,见下图。方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0)均是8位的,构成16位计数器。

方式2

在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C,如图所示。

每当它计满回零时1.将溢出标志TF1置“1”,若中断开放,向CPU发出溢出中断请求;2.从TH1(或TH0)中重新获得初值并启动计数;

也就是CPU自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。

方式3方式3只适合于定时器T0,

TH0和TL0按两个独立的8位计数器工作.5.1.4定时器、计数器的初始化1.初始化的步骤

MCS-51内部的T/C是可编程的,其工作方式和模式通过程序进行设定和控制,称为对T/C的初始化。初始化的步骤是:

1)

确定工作方式,即根据题目要求先给TMOD送一个方式控制字。

2)计算计数初值/定时初值,并写入TH0、TL0或TH1、TL1中。

3)根据需要,置位EA使CPU开放中断,同时置位ETx允许T/C中断。IP设定中断优先级。

4)给TCON送命令控制字,即置位TRx启动T/C计数。

2.计数器初值的计算

T/C在计数模式下,计数之前必须给它的计数器TH0、TL0或TH1、TL1选送计数初值。T/C的计数器是在计数初值的基础上加1计数的,当计数器回“0”时自动产生溢出,置位TFx中断标志,向CPU提出中断请求。设需要计数器计数的个数为X,计数初值为C,由此可得出如下计算计数初值的通式:计数初值:C=M-X(5—1)式中,M为计数器的模值,该值和计数器的工作方式有关。当方式0时

M=当方式1时(5—2)当方式2、3时[例5-1]利用T0方式1产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc=12MHZ。解:

(1)确定T0的工作方式要在P1.0输出周期为2ms的方波,只要使P1.0每隔1ms 取反一次即可。

(2)确定T0的方式控制字若用方式1,设置TMOD=01H(3)计算定时初值

Tcy=12/fosc=12/(12×106

)S=1μs

计数个数:X=1ms/1μs=1000

定时初值:若采用方式0,13位,则

C=(-X)=8192-1000=7192D

=1C18H=1110000011000B

高8位0E0H低5位18HTH0初值为0E0H,TL0初值为18H。若采用方式1,16位,则定时初值:C=65536-1000=64536=FC18HTH0初值为0FCH,TL0初值为18H

ORG 0000H SJMP 0030H ORG 0030H MOV TMOD,#01H SETB TR0LOOP:MOVTH0,#0FCH MOV TL0,#18H JNB TF0,$ CPL P1.0 CLR TF0 SJMP LOOP END查询方式START设定工作方式启动T0定时载入初值TF0=0?否是输出方波软件TF0=0END4)

查询方式:可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。程序中查询采用JNBTF0,$指令,目的是当判到TF1=1后,必须用软件复位TF1,为下次计数器回零溢出做好准备,这条指令具有判TF1为1后清零的双重功能。[例5-2]利用GATE门控位测量从INT1引脚输入的正脉冲宽度。解:1.确定工作方式

(1)送方式控制字

(TMOD)=10010000B=90H;

T/C1定时,方式1,GATE=1。(2)计算初值

由于被测正脉冲宽度未知,假设宽度<=65.536ms,fosc=12MHz,则:计数个数:X=65536(最大)定时初值:C=65536-X=65536-65536=0,(TH1)=00H,(TL1)=00H。

(3)编程方法

对P3.3(INT1)引脚输入的脉冲采用查询的方法。

P3.3

(INT1)

被测脉宽置1TR1 TH1TL1从0开始计数清0TR1,停止T/C1计数脉冲测试原理

ORG0000H

SJMP0030HORG0030HMAIN:MOVTMOD,#90H ;置T1方式控制字

MOVTL1,#00H ;

MOVTH1,#00H ;T1从0开始计数

JBP3.3,$

;等低电平

SETBTR1 ;T1允许计数

JNBP3.3,$

;等高电平

JBP3.3,$

;等低电平

CLRTR1 ;停止计数

程序清单:

5.1.6定时计数器总结在单片机实时应用系统中,实现定时和对外部事件计数的功能。

定时:对周期已知的脉冲信号计数

计数:对外部事件计数,对周期未知的外来脉冲信号计数

采用软件占用CPU的时间,降低了CPU的使用效率;

采用专门的硬件电路,参数调节不便;

采用可编程的定时器/计数器是较好的方法;

可以方便灵活地修改定时或计数的参数或方式;

与CPU并行工作,大大提高了CPU的工作效率

5.2MCS-51串行口5.2.1串行口概述

8051的通讯:即单片机与外界进行信息交换。通讯方式:

并行通讯:数据的各位同时发送或接受

串行通讯:数据一位一位顺序发送或接受

串行口通讯方式

单工通讯:通讯接口只能发送或接受的单向通讯方式

半双工通讯:通讯接口既可发送又可接受,但不能同 时进行

全双工通讯:通讯接口能同时发送接受的通讯方式异步传送方式与同步传送

异步通讯:利用起始位表示字符的开始,用停止位 表示字符结束D0D1D2D3D4D5D6D7D010P0起始位数据位D0~D7校验位结束位第n个字符(帧)2.

同步通讯:在异步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。串行通信的数据传送率

传送率:数据传送速度

波特率(baudrate):异步通信中数据传输速率的单 位,其含义每秒传送多少位二进制数。例:数据传送的速率为120个字符每秒,每个字符有1个起始位、8个数据位和一个停止位组成,则其传送波特率为:

每一位的传送时间为波特率的倒数:5.2.2MCS-51串行口结构发送控制器发送SBUF(99H)接受SBUF(99H)门接受控制器+串行口中断串行控制寄存器(98H)输入移位寄存器定时器T1内部总线TIRITXD(P3.1)RXD(P3.0)888物理空间上各自独立的发送寄存器和接收寄存器,有相同名字和地址空间,但不会出现冲突,因为发送寄存器只写不读,接受寄存器只读不写。串行口控制寄存器SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0SM1:串行口方式选择位SM0SM1方式

功能说明0008位同步移位寄存器方式(用于I/O扩展)01110位UART,波特率可变(T1溢出率/n)10211位UART,波特率fosc/64或fosc/3211311位UART,波特率可变(T1溢出率/n)SM2:允许方式2和方式3多机通讯位REN:接收允许控制位。由软件置位以允许接收,又由软件清 0来禁止接收。TB8:

是要发送数据的第9位。在方式2或方式3中,要发送的第 9位数据,根据需要由软件置1或清0。例如,可约定作为 奇偶校验位,或在多机通讯中作为区别地址帧或数据帧 的标志位。RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1 中,若(SM2)=0,RB8为接收到的停止位。在方式2或 方,式3中,RB8为接收到的第9位数据。TI:发送中断标志。在方式0中,第8位发送结束时,由硬件 置位。在其它方式的发送停止位前,由硬件置位。TI置 位既表示一帧信息发送结束,同时也是申请中断,也可 用软件查询的方法获得数据已发送完毕的信息,或用中 断的方式来发送下一个数据。TI必须用软件清0。RI:

接收中断标志位。在方式0,当接收完第8位数据后,由 硬件置位。在其它方式中,在接收到停止位的中间时 刻由硬件置位(例外情况见于SM2的说明)。RI置位 表示一帧数据接收完毕,可用查询的方法获知或者用 中断的方法获知。RI也必须用软件清0。特殊功能寄存器PCON:是为了在CHMOS的80C51单片机上实现电源控制而附加的。其中最高位是SMOD。5.2.3串行口工作方式一、方式0

方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD(P3.0)输入或输出,TXD(P3.1)用来输出同步脉冲。

1、方式0发送串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fosc/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。2、方式0接收当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。二、方式1

方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。1.

方式1发送

当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。2.

方式1接受

在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。

方式0和方式2的波特率:

在方式0,每个及其周期发送或接受一位数据,波特率的数值固定为时钟频率(fosc)的1/12,且不受SMOD的影响。在方式2中,波特率由PCON中的选择位SMOD来决定,当SMOD=0时,波特率为1/64fosc

当SMOD=1时,波特率为1/32fosc,

方式1和方式3的波特率:

其中,T1的溢出率取决于计数速率和定时器的预制值。T1计数率取决于它工作在定时器状态还是计数器状态,当工作于定时器状态时,T1计数脉冲为fosc/12;当工作于计数器状态时,T1计数脉冲取决于外部输入时钟频率。

[例5_3]

应用串行口方式0输出,在串行口外接移位寄存器,构成显示器接口.如图所示,三片(理论上可以为n片,为举例方便而用三片)74LS164串接成24位并行输出移位寄存器,每片74LS164接一个共阳极8段LED显示器,构成三维数据显示,这里P1.0作串行输出选择信号(只有P1.0为高时,串行同步信号TXD才能输出),这种显示器称为静态显示,CPU不必为显示服务而频繁执行扫描任务.

设显示缓冲区设在DISBUF开始的区域中.解:1.确定工作方式

(1)送方式控制字

(SCON)=00000000B=00H;串行口以方式0输出5.2.4串行口应用P1.0RXDTXD8051e74LS16434g5f610d11c12b13aLED0e74LS16434g5f610d11c12b13aLED1e74LS16434g5f610d11c12b13aLED2&8989895V5V1.21.21.2DISPLY:MOVSCON,#00H ;选择串行口为方式0发送

MOVR7,#3H ;字节计数

MOVR0,DISBUF ;R0指向显示缓冲区

SETBP1.0 ;选通TXD同步移位时钟L1:MOVA,@R0;取要显示的数

MOVSBUF,A;开始发送

JNBTI,$;等待一帧发送完

CLRTI;清发送中断标志

INCR0;修改显示缓冲区指针

DJNZR7,L1;三个LED实现完了否?CLRP1.0;关TXDRET;返回DISBUF:DB11H,D7H,18H,D8H

程序清单:

第5章MCS-51的中断系统实时测控,单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。5.1中断的概念CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。CPU处理事件的过程,称为CPU的中断响应过程。图5-1所示。对事件的整个处理过程,称为中断处理(或中断服务)。能够实现中断处理功能的部件称为中断系统;产生中断的请求源称为中断请求源。中断源向CPU提出的处理请求,称为中断请求(或中断申请)。

进入中断→保护现场→中断处理→恢复现场→中断返回中断方式优点:大大地提高了CPU的工作效率。5.2MCS-51中断系统的结构有5个中断请求源,两个中断优先级,可两级嵌套。中断系统结构示意图如下图所示。

5.3中断请求源五个中断请求源:(1)INT0*—外部中断请求0,由引脚INT0*输入,中断请求标志为IE0。(2)INT1*—外部中断请求1,由引脚INT1*输入,中断请求标志为IE1。(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。(5)串行口中断请求,中断请求标志为TI或RI。由特殊功能寄存器TCON和SCON的相应位锁存。TCON为定时器/计数器的控制寄存器,字节地址为88H。包含:(1)T0和T1的溢出中断请求标志位TF1和TF0(2)外部中断请求标志位IE1与IE0。格式如下所示:各标志位的功能:(1)IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式:IT0=0,为电平触发方式。

IT0=1,为边沿触发方式。可由软件置“1”或清“0”。(2)IE0—外部中断请求0的中断请求标志位。IE0=0,无中断请求。IE0=1,外部中断0有中断请求。当CPU响应该中断,转向中断服务程序时,由硬件清“0”IE0。(3)IT1—外部中断请求1为边沿触发方式还是电平触发方式,意义与IT0类似。(4)IE1—外部中断请求1的中断请求标志位,意义与IE0类似。(5)TF0—T0溢出中断请求标志位。T0计数后,溢出时,由硬件置“1”TF0,向CPU申请中断,CPU响应TF0中断时,硬件自动清“0”TF0,TF0也可由软件清0。(6)TF1—T1的溢出中断请求标志位,功能和TF0类似。TR1、TR02个位与中断无关。

当MCS-51复位后,TCON被清0,则CPU无中断。SCON为串行口控制寄存器,字节地址为98H。串行口的发送中断和接收中断的中断请求标志TI和RI,格式如下:各标志位的功能:(1)TI—发送中断请求标志位。串口每发送完一帧串行数据后,硬件自动置“1”TI。必须在中断服务程序中用软件对TI标志清“0”。

(2)RI—接收中断请求标志位。串口接收完一个数据帧,硬件自动置“1”RI标志。必须在中断服务程序中用软件对RI标志清“0”。5.4中断控制5.4.1中断允许寄存器IECPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。字节地址为A8H,可位寻址。格式如下:IE对中断的开放和关闭为两级控制

总的开关中断控制位EA(IE.7位):EA=0,所有中断请求被屏蔽。EA=1,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。IE中各位的功能如下:(1)EA:中断允许总控制位

0:CPU屏蔽所有的中断请求(CPU关中断);

1:CPU开放所有中断(CPU开中断)。(2)ES:串行口中断允许位

0:禁止串行口中断;

1:允许串行口中断。

(3)ET1:定时器/计数器T1的溢出中断允许位

0:禁止T1溢出中断;

1:允许T1溢出中断。(4)EX1:外部中断1中断允许位

0:禁止外部中断1中断;

1:允许外部中断1中断。(5)ET0:定时器/计数器T0的溢出中断允许位

0:禁止T0溢出中断;

1:允许T0溢出中断。(6)EX0:外部中断0中断允许位。

0:禁止外部中断0中断;

1:允许外部中断0中断。MCS-51复位后,IE清0,所有中断请求被禁止。若使某一个中断源被允许中断,除了IE相应的位的被置“1”,还必须使EA位=1。改变IE的内容,可由位操作指令来实现,即:

SETBbit;CLRbit。例5-1若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。编写设置IE的相应程序段(1)用位操作指令来编写如下程序段:

CLRES ;禁止串行口中断 CLREX1 ;禁止外部中断1中断 CLREX0 ;禁止外部中断0中断

SETBET0;允许定时器/计数器T0中断SETBET1;允许定时器/计数器T1中断SETBEA;CPU开中断(2)用字节操作指令来编写:

MOVIE,#8AH或者用:

MOV0A8H,#8AH;A8H为IE寄存器字节地址5.4.2中断优先级寄存器IP两个中断优先级,可实现两级中断嵌套。如图5-6示。可归纳为下面两条基本规则:(1)低优先级可被高优先级中断,反之则不能。(2)同级中断不会被它的同级中断源所中断。若CPU正在执行高优先级的中断,则不能被任何中断源所中断。中断优先级寄存器IP,其字节地址为B8H。IP各个位的含义:(1)PS——串行口中断优先级控制位

1:高优先级中断;

0:低优先级中断。(2)PT1——定时器T1中断优先级控制位

1:高优先级中断;

0:低优先级中断。(3)PX1——外部中断1中断优先级控制位

1:高优先级中断;

0:低优先级中断。(4)PT0——定时器T0中断优先级控制位

1:高优先级中断;

0:低优先级中断。(5)PX0——外部中断0中断优先级控制位

1:高优先级中断;

0:低优先级中断。

由软件可改变各中断源的中断优先级。MCS-51的中断系统有两个不可寻址的“优先级激活触发器”:一个用来指示某高优先级的中断正在执行,所有后来的中断均被阻止。另一个用来指示某低优先级的中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。在同时收到几个同一优先级的中断请求时,优先响应哪一个中断,取决于内部的查询顺序。查询顺序如下:

中断源中断级别

外部中断0 最高 T0溢出中断 外部中断1 T1溢出中断 串行口中断 最低例5-2

设置IP寄存器的初始值,使2个外中断请求为高优先级,其它中断请求为低优先级。(1)用位操作指令

SETBPX0;2个外中断为高优先级 SETBPX1 CLRPS;串口为低优先级中断

CLRPT0;2个定时器/计数器低优先级中断 CLRPT1(2)用字节操作指令

MOVIP,#05H 或: MOV0B8H,#05H;B8H为IP寄存器的字节地址5.5响应中断请求的条件一个中断请求被响应,需满足以下必要条件:(1)IE寄存器中的中断总允许位EA=1。(2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。(3)该中断源的中断允许位=1,即该中断没有被屏蔽。(4)无同级或更高级中断正在被服务。中断响应的主要过程:首先由硬件自动生成一条长调用指令:

LCALLaddr16接着就由CPU执行该指令,将PC的内容压入堆栈以保护断点,再将中断入口地址装入PC。各中断源服务程序的入口地址是固定的,如下所示:

中断源 入口地址

外部中断0 0003H定时器/计数器T0 000BH 外部中断1 0013H

定时器/计数器T1 001BH 串行口中断 0023H中断响应是有条件的,遇到下列三种情况之一时,中断响应被封锁:

(1)CPU正在处理同级的或更高优先级的中断。(2)所查询的机器周期不是所当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应。(3)正在执行的指令是RETI或是访问IE或IP的指令。需要再去执行完一条指令,才能响应新的中断请求。如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。5.6中断请求的撤消1.定时器/计数器中断请求的撤消

中断请求被响应后。硬件会自动清TF0或TF1。2.外部中断请求的撤消

(1)跳沿方式外部中断请求的撤消是自动撤消的。(2)电平方式外部中断请求的撤消:除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平。3.串行口中断请求的撤消响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能用软件清除

CLRTI;清TI标志位 CLRRI;清RI标志位5.7中断服务程序的设计一、中断服务程序设计的任务

基本任务:

(1)设置中断允许控制寄存器IE。(2)设置中断优先级寄存器IP。(3)对外中断源,是采用电平触发还是跳沿触发。(4)编写中断服务程序,处理中断请求。前2条一般放在主程序的初始化程序段中。例5-3

假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。在主程序中编写如下程序段:

SETBEA;CPU开中断SETBEx0;允许外中断0产生中断SETBPX0;外中断0为高级中断SETBIT0;外中断0为跳沿触发方式

二、采用中断时的主程序结构常用的主程序结构如下:

ORG0000H LJMPMAIN

ORG中断入口地址 LJM

温馨提示

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

评论

0/150

提交评论