版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1中断系统4.2定时/计数器4.3串行通信及其接口习题4单片机系统的运行同其他系统一样,CPU需要不断地和外部设备交换数据。当CPU与外部设备交换信息时,若用查询的方式,则CPU就要浪费时间去等待外设。为了解决快速CPU和慢速外设之间的矛盾,提高CPU和外设的工作效率,引入了中断技术。中断系统是单片机的重要组成部分。CPU通过中断技术可以分时操作和管理多个外部设备,实现实时数据采集、实时控制、故障自动处理等功能,从而使CPU的工作效率得到很大的提高。4.1中断系统4.1.1中断的概念
在日常生活中,中断事件经常发生,例如:张同学正在教室写作业,忽然被人叫出去,回来后,继续写作业,这就是生活中的“中断”现象,也就是正常的工作过程被突发的事件打断了。计算机中的中断概念和生活中的中断概念类似。中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU正在执行程序时,系统发生某一事件需要迅速处理,CPU暂时停止现行程序的执行,而自动转去处理该事件,当事件处理完成后,CPU再返回到被暂停的程序断点处,继续执行原来的程序,这一过程称为中断,如图4.1所示。我们把实现中断功能的硬件系统和软件系统统称为中断系统。
为实现中断功能,单片机的中断系统应解决以下几方面的问题。图4.1中断过程
1.中断源
所谓中断源,是指引起CPU中断的事件,即中断请求信号的来源。中断源向CPU提出的处理请求,称为中断请求或中断申请。中断请求信号的产生及该信号怎样被CPU有效地识别是中断源需要解决的问题,而且要求中断请求信号产生一次,只能被CPU接收处理一次,不能一次中断被CPU多次响应,这也就是中断请求信号的及时撤除问题。
2.中断响应与返回
中断源向CPU提出中断请求,CPU暂时停止自身的事务,转去处理事件的过程,称为中断响应过程。对事件的整个处理过程,称为中断服务或中断处理。处理完毕,再回到原来被中止的地方,称为中断返回。CPU接收到中断请求信号后,怎样转向该中断源的中断服务程序及执行完中断处理程序后如何正确返回被中断的程序继续执行是问题的关键。中断响应与返回的过程中涉及到CPU响应中断的条件、现场保护等问题。
3.优先级控制
通常一个中断系统都有多个中断源,经常会出现两个以上中断源同时提出中断请求的情况,这样就需要设计者事先根据轻重缓急给每一个中断源确定一个中断级别(优先权),当多个中断源同时发出中断申请时,CPU能找到优先权级别最高的中断源,响应它的中断请求,在优先权级别最高的中断源处理完后,再响应级别较低的中断源。当CPU响应某一中断源的请求并进行中断处理时,若有优先权级别更高的中断源发出中断申请,则CPU要能中断正在进行的中断服务程序,保留这个程序的断点和现场,响应高级中断,在高级中断处理完以后,再继续执行被中断的中断程序,这种情况称为中断嵌套。CPU一般都可实现多级中断嵌套。4.1.2MCS-51系列单片机的中断系统
1. MCS-51系列单片机中断系统的组成
MCS-51系列单片机的中断系统是8位单片机中功能较强的一种。51子系列单片机具有5个中断源,52子系列单片机具有6个中断源,具有两级中断优先级,可实现两级中断嵌套,4个用于中断控制的特殊功能寄存器IE、IP、TCON和SCON用来控制中断的类型、中断的开放/禁止和各种中断源的优先级别。其整个中断系统结构组成如图4.2所示。图4.2MCS-51系列单片机中断系统结构
2.中断源及中断请求标志
51系列单片机具有5个中断源,可分为两大类:外部中断和内部中断。外部中断源由引脚(P3.2)和(P3.3)输入;内部中断源包括片内定时/计数器T0和T1的溢出中断以及串行口发送/接收中断。这些中断源产生的中断请求信号均由单片机中的特殊功能寄存器TCON和SCON的相应位锁存。
1)定时/计数器控制寄存器TCON
TCON为定时/计数器T0、Tl的控制器,同时也锁存了T0、Tl的溢出中断请求信号标志和外部中断请求信号标志,其各位的定义如下:
TFl:定时器T1的溢出中断申请位。定时器Tl被允许计数以后,从初值开始加1计数,当产生溢出时置TFl=1,向CPU请求中断,直到CPU响应该中断时才由硬件清0。
TR1:定时/计数器T1的启停控制位。TR1=1时,定时器T1开始计数工作,TR1=0时,TI停止计数。TR1状态由软件设置。
TF0:定时器T0的溢出中断申请位。T0被允许计数以后,从初值开始加1计数,当产生溢出时,硬件自动置TF0为1,向CPU请求中断,当CPU响应该中断后,该位由硬件清0。
TR0:定时/计数器T0的启停控制位。TR0=1时,定时器T0开始计数工作;TR0=0时,T0停止计数。TR0状态由软件设置。
IE1:外部中断(
P3.3)请求标志位。当CPU检测到在(P3.3)引脚上出现的外部中断信号(低电平或脉冲下降沿)时,由硬件自动将该位置位,请求中断。当CPU响应中断进入中断服务程序后,该位被硬件自动清0(指脉冲边沿触发方式,电平触发方式时不能由硬件清0)。
IT1:外部中断(P3.3)触发方式控制位。由软件来置1或清0,以控制外部中断1的触发类型。当IT1=0时为边沿触发方式(即由高变低的下降沿触发中断),CPU在每个机器周期采样(P3.3)引脚输入电平,若相继的两次采样中一个周期采样为高电平,接着下一个周期采样为低电平,则视为有中断请求信号产生,置位IEl。采用边沿触发方式时,外部中断源输入的高电平和低电平时间必须保持1个机器周期,才能保证CPU可靠地检测到由高到低的负跳变。当IT1=0时,设定为低电平触发中断方式,当(P3.3)引脚输入低电平时,有中断请求信号产生,置位IEl,申请中断。采用电平触发方式时,外部中断输入引脚(P3.3)必须保持低电平有效,直到该中断被CPU响应为止。同时,在该中断服务程序执行完之前,外部中断输入引脚(P3.3)的有效电平必须被撤销,否则将产生另一次中断。
IE0:外部中断(P3.2)请求标志位。外部中断0产生中断请求信号时,硬件自动将该位置为1,请求中断,当中断响应之后,该位被清0,其功能与IE1类同。
IT0:外部中断(P3.2)触发方式控制位。IT0=0时,外部中断0为低电平触发方式;IT0=1时,外部中断0为边沿触发方式,其功能和ITl类似。
2)串行口控制寄存器SCON
SCON为串行口控制寄存器,SCON的低两位锁存串行口接收中断和发送中断标志RI和TI,其格式如下:
TI:串行口发送中断标志位。在串行口发送完一组数据时,TI由硬件自动置为1,请求中断。当CPU响应中断进入中断服务程序后,TI状态不能被硬件自动清除,必须在中断服务程序中由软件来清除。
RI:串行口接收中断标志位。在串行口接收完一组数据时,RI由硬件自动置为1,请求中断。当CPU响应中断进入中断服务程序后,TI状态不能被硬件自动清除,必须在中断服务程序中由软件来清除。其他各位是控制串行口的工作状态的,与中断没有关系,在后续章节进行介绍。单片机系统复位之后,TCON、SCON中各位均为0,应用时应注意各位的初始状态。
MCS-51单片机中,当中断源申请中断时首先要置位相应的中断标志位,CPU检测到中断标志位之后才决定是否响应。当CPU响应了中断请求,相应的标志位就要被清除,否则CPU在执行完本次中断服务程序之后还要再次响应该中断请求,会造成混乱。因此在应用中需要注意中断请求的撤销以及中断标志的清除。
3.中断控制
MCS-51单片机有两个特殊功能寄存器,用于中断系统的控制,分别为中断允许寄存器IE和中断优先级寄存器IP。
1)中断允许寄存器IE
IE控制CPU对中断源的开放或屏蔽,以及每个中断源是否允许中断,其格式为
EA:CPU中断开放标志。EA=1,CPU开放中断;EA=0,CPU屏蔽所有的中断请求。
ES:串行中断允许位。ES=l,允许串行口中断;ES=0,禁止串行口中断。
ETI:定时/计数器Tl溢出中断允许位。ETl=1,允许Tl中断;ETl=0,禁止Tl中断。
EXl:外部中断l中断允许位。EX1=l,允许外部中断1中断;EXl=0,禁止外部中断1中断。
ET0:定时/计数器T0溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。
MCS-51单片机复位后,IE中各位均被清0,即禁止所有中断。因此,想要开放所需要的中断请求,则必须在程序中用软件指令来实现。
2)中断优先级寄存器IP
MCS-51单片机具有两个中断优先级,每个中断源可编程为高优先级中断或低优先级中断,并可实现二级中断嵌套。特殊功能寄存器IP就是用来设定各中断源优先级别的,其格式如下:
PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。
PT1:定时/计数器T1中断优先级控制位。PT1=1,设定定时/计数器T1为高优先级中断;PT1=0,设定定时/计数器T1为低优先级中断。
PX1:外部中断1中断优先级控制位。PX1=l,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。
PT0:定时/计数器T0中断优先级控制位。PT0=1,设定定时/计数器T0为高优先级中断;PT0=0,设定定时/计数器T0为低优先级中断。
PX0:外部中断0中断优先级控制位。PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断。当系统复位后,IP各位均为0,所有中断设置为低优先级中断。
通过设置IP寄存器把各中断源的优先级分为高、低两级,它们遵循两条基本原则:
①低优先级中断可以被高优先级中断所中断,反之不能。
②一种中断一旦得到响应,与它同级的中断不能再中断它。
当CPU同时收到几个同一优先级别的中断请求时,哪一个的请求得到服务取决于内部的硬件查询顺序,CPU将按自然优先级顺序确定响应哪个中断请求。其自然优先级由硬件形成,排列如表4.1所示。表4.1中断源的内部查询次序4.1.3中断处理过程
中断处理过程可分为三个阶段:中断响应、中断处理和中断返回。
1.中断响应
1)中断响应条件
单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。这样,在每个机器周期的S5P2期间,对所有中断源按用户设置的优先级和内部规定的优先级进行顺序检测,并可在S6期间找到所有有效的中断请求。如有中断请求,且满足下列条件,则在下一个机器周期的S1期间响应中断,否则将丢弃中断采样的结果:
①无同级或高级中断正在处理。②现行指令执行到最后一个机器周期且已结束。
③若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。
2)中断响应过程
CPU响应中断后,首先置位相应的优先级触发器,然后把断点地址压入堆栈保护,并将响应的中断矢量地址装入程序计数器,转入该中断服务程序进行处理。各中断源与之对应的矢量地址见表4.2。表4.2中断源及其对应的矢量地址对于有些中断源,CPU在响应中断后会自动清除中断标志,如定时器溢出标志TF0、TF1以及边沿触发方式下的外部中断标志IE0、IE1;而有些中断标志不会自动清除,只能由用户用软件清除,如串行口的接收发送中断标志RI、TI;在电平触发方式下的外部中断标志IE0和IE1则是根据引脚的电平变化的,CPU无法直接干预,需在引脚外加硬件(如D触发器)使其自动撤销外部中断请求。
中断服务程序从矢量地址开始执行,一直到中断返回指令“RETI”为止。
3)中断响应时间
所谓中断响应时间,是指CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。了解中断响应时间对设计实时测控应用系统有重要指导意义。
MCS-51单片机响应中断的最短时间为三个机器周期。若CPU检测到中断请求信号的时间正好是一条指令的最后一个机器周期,则不需等待就可以立即响应。所谓响应中断,就是由内部硬件执行一条长调用指令,需要两个机器周期,加上检测需要的一个机器周期,一共需要三个机器周期才开始执行中断服务程序。中断响应的最长时间由下列情况决定:若中断检测时正在执行RETI或访问IE或IP指令的第一个机器周期,则包括检测在内需要两个机器周期(以上三条指令均需两个机器周期);若紧接着要执行的指令恰好是执行时间最长的乘、除法指令,则其执行时间均为四个机器周期;再用两个机器周期执行一条长调用指令才转入中断服务程序。这样,总共需要8个机器周期。其他情况下的中断响应时间一般为3~8个机器周期。
2.中断处理
CPU响应中断结束后即转至中断服务程序的入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。中断处理包括两部分内容:一是保护现场;二是为中断源服务。
保护现场是指保护PSW、工作寄存器、专用寄存器等数据。如果在中断服务程序中要用这些寄存器,则在进入中断服务之前应将它们的内容保护起来。在中断结束时,即执行RETI指令之前,再恢复这些寄存器的内容,这一动作称为恢复现场。
中断服务是针对中断源的具体要求进行的处理。
3.中断返回
中断服务程序中,最后一条指令是中断返回指令RETI,该指令的功能是结束本次中断服务,返回到原程序。在执行RETI指令时,将压入堆栈的中断点地址弹出并送回程序计数器,使程序返回到原来被中断处继续执行,同时清除相应的优先级触发器。4.1.4中断请求的撤除
中断源发出中断请求后,CPU首先置位相应的中断标志位,然后通过对中断标志位的检测决定是否响应中断,所以撤除中断请求就是要清除中断标志。CPU响应某中断请求后,在该中断返回之前,应将其对应的中断标志位复位,否则CPU在返回主程序后将再次响应该中断。MCS-51单片机各个中断源标志位的清除方法不相同。
对于定时器T0和定时器T1的溢出中断,CPU在响应中断后,由硬件自动清除TF0或TF1标志位,即中断请求自动撤销,无需采取其他措施。对于串行口的中断,CPU响应中断后,硬件不能自动清除TI和RI标志位,因此在CPU响应中断后,必须在中断服务程序中用软件来清除相应的中断标志位,以撤销中断请求。
外部中断请求的撤消与设置的中断触发方式有关。对于边沿触发方式的外部中断,CPU在响应中断后,也是由硬件自动将IE0或IEl标志位清除的,无需采取其他措施。对于电平触发方式的外部中断,在硬件上,CPU对和引脚的信号完全没有控制(在专用寄存器中,没有相应的中断请求标志),因此,需要另外采取硬件措施撤销外部中断请求。图4.3给出了一种常用的撤销外部中断的电路。图4.3撤销外部中断请求电路外部中断请求信号通过D触发器加到单片机引脚上。当外部中断请求信号使D触发器的CLK端发生正跳变时,由于D端接地,Q端输出0,向单片机发出中断请求。CPU响应中断后,利用一根口线,如P1.0作应答线,在中断服务程序中用下面两条指令来撤除中断请求。
ANLP1.0,#0FEH
ORLP1.0,#01H
第一条指令使P1.0为0,而P1口其他各位的状态不变。由于P1.0与直接置1端相连,因而D触发器Q=1,撤除了中断请求信号。第二条指令将P1.0变成1,使以后产生的新的外部中断请求信号又能向单片机申请中断。
4.1.5中断应用举例
MCS-51单片机的中断系统在应用时,应先进行初始化,即进行开中断,设置中断触发方式等。下面通过举例来说明中断系统的应用。
例4.1
现有4台设备A、B、C、D,需要向单片机申请中断,试设计相应的电路并编写程序。
解:根据要求,四个设备相当于四个中断源,而单片机本身只有两个中断源,故需要扩展外部中断源。本题采用P1口的4位和外部中断结合,形成四个中断,高电平有效。电路如图4.4所示。图4.4扩展四个外部中断源电路4.2.1定时/计数器的结构及工作原理
1.定时/计数器的结构
MCS-51单片机内部的定时/计数器逻辑结构如图4.5所示,它由6个特殊功能寄存器组成。其中,TMOD为定时/计数器方式控制寄存器,用来设置两个16位定时/计数器T0和T1的工作方式;TCON为定时/计数器控制寄存器,主要用来控制定时/计数器T0和T1的启动和停止。两个16位的定时/计数器T0(TH0和TL0)和T1(TH1和TL1)用于设置定时或计数的初值。4.2定时/计数器图4.5定时/计数器逻辑结构图
2.定时/计数器的工作原理
MCS-51单片机内部的两个16位可编程的定时/计数器T0和T1均有定时和计数功能。T0和T1的工作方式及功能选择、定时时间、启动方式等均可以通过编程对相应特殊功能寄存器TMOD和TCON进行设置来实现,计数值也由软件命令设置于16位的定时/计数器(TH0、TL0或TH1、TL1)中。
16位定时/计数器是一个二进制的加1寄存器,当启动后就开始从所设定的计数初始值开始加1计数,寄存器计满后,会自动产生溢出并提出中断请求。定时与计数两种模式下的计数方式不相同,通常选择T0和T1工作在定时方式时,计数器对内部时钟机器周期数进行计数,即每个机器周期寄存器加1;选择T0和T1工作在计数方式时,计数脉冲来自外部输入引脚T0和T1,用于对外部事件进行计数,当外部输入引脚上出现由1到0的跳变时,计数器的值加1(如果外接一时钟源,当然也可将其作为定时的基准源)。
定时/计数器是单片机中工作相对独立的部件,当设定好其工作方式及功能并启动后,它就会独立地进行计数,不再占用CPU的时间,直到计数溢出,才向CPU申请中断处理,它是一个工作效率高且工作灵活的部件。4.2.2定时/计数器的工作方式及控制器
定时/计数器是可编程的,因此,在使用前必须对其进行初始化,设定其工作方式、计数初值等。
1.定时/计数器方式控制寄存器TMOD(89H)
定时/计数器T0、T1都有四种工作方式,可通过程序对TMOD进行设置来选择,其各位定义如下:
TMOD的低4位用于定时/计数器T0的工作方式选择,高4位用于定时/计数器T1的工作方式选择。
GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的控制。如果GATE=1,定时/计数器T0的启动受芯片引脚(P3.2)控制,定时/计数器T1的启动受芯片引脚(P3.3)控制;如果GATE=0,定时/计数器的启动与引脚和无关。一般情况下GATE=0。
C/:定时或计数功能选择位。当=1时为计数方式;当=0时为定时方式。
M1、M0:定时/计数器工作方式选择位。MCS-51单片机的定时/计数器有四种工作方式,如表4.3所示。表4.3定时/计数器工作方式的选择
2.定时/计数器控制寄存器TCON
TCON用于控制定时/计数器的启、停、溢出标志和外部中断信号触发方式,其各位定义如下:
TCON的高4位与定时/计数器相关,其低4位与外部中断相关,其各位的定义在4.1.2节已经讲述,在此不再赘述。
3.定时/计数器的工作方式
1)方式0
方式0为13位定时/计数器。13位计数寄存器由TH0(TH1)的高8位和TL0(TL1)的低5位构成,TL0(TL1)中的高3位不用。其结构如图4.6所示。图4.6T0(或T1)方式0的结构当C/=1时,图中多路开关自动地接到下面,定时/计数器工作在计数状态,加法计数器对T0(T1)引脚上的外部脉冲计数。计数值由下式确定:
N=213-x=8192-x
式中,N为计数值,x是计数器的初值。x=8191时为最小计数值1,x=0时为最大计数值8192,即计数范围为1~8192。定时/计数器在每个机器周期的S5P2期间采样T0(T1)引脚输入信号,若一个机器周期的采样值为1,下一个机器周期的采样值为0,则计数器加1。由于识别一个高电平到低电平的跳变需两个机器周期,因此对外部计数脉冲的频率应小于fosc/24,且高电平与低电平的延续时间均不得小于1个机器周期。当C/
=0时为定时器方式,多路开关自动地接到上面,加1计数器对机器周期脉冲Tcy计数,每个机器周期计数器加1。定时时间由下式确定:
T=N×Tcy=(8192-x)Tcy
式中,Tcy为单片机的机器周期。如果振荡频率fosc=12MHz,则Tcy=1μs,定时时间范围为1~8192μs。
可用程序将0~8191的某一数送入TH0(TH1)、TL0(TL1)作为初值。TH0(TH1)、TL0(TL1)从初值开始加1计数,直至溢出。所以初值不同,定时时间或计数值也不同。必须注意的是,加法计数器溢出后,必须用程序重新对TH0(TH1)、TL0(TL1)设置初值,否则下一次加法计数器将从0开始计数。外部中断对于定时器的控制作用表现在:当GATE=0时,或门被封锁,信号无效,或门输出常1,打开与门,TR0直接控制定时器0的启动和关闭;当GATE=1时,与门的输出由的输入电平和TR0位的状态来共同决定。若TR0=1则与门打开,外部信号电平通过引脚直接开启或关断定时器T0,当为高电平时,允许计数,否则停止计数;若TR0=0,则与门被封锁,控制开关被关断,停止计数。
2)方式1
方式1是16位定时/计数器,其结构与方式0类似,唯一的区别在于计数器的位数不同。方式1的加1计数器由TH0(TH1)的8位和TL0(TL1)的8位构成。
在方式1时,计数器的计数值由下式确定:
N=216-x=65536-x
计数范围为1~65536。
定时器的定时时间由下式确定:
T=N×Tcy=(65536-x)Tcy
如果fosc=12MHz,则Tcy=1μs,定时范围为1~65536μs。
3)方式2
方式2是能自动重装计数初值的8位计数器。方式2中把16位的计数器拆成两个8位计数器,低8位作计数器用,高8位用以保存计数初值。当低8位计数产生溢出时,将溢出中断标志位置1,同时又将保存在高8位中的计数初值重新装入低8位计数器中,继续计数,循环不止。方式2的逻辑结构如图4.7所示。
在工作方式2时,计数器的计数值由下式确定:
N=28-x=256-x
计数范围为1~256。
定时器的定时值由下式确定:
T=N×Tcy=(256-x)Tcy
如果fosc=12MHz,则Tcy=1μs,定时范围为1~256μs。图4.7T0(或T1)方式2的结构
4)方式3
定时/计数器T0和T1在前三种工作方式下,其功能完全相同。但工作方式3对T0和T1是大不相同的。当T1设置为工作方式3时,它将保持初始值不变,并停止计数,其状态相当于将启停控制位TR1设为0,因此T1不能工作在方式3下。
若将T0设为方式3,TL0和TH0被分成两个互相独立的8位计数器,其逻辑结构如图4.8所示。其中,TL0用原T0的各控制位、引脚和中断源,即C/、GATE、TR0、TF0和T0(P3.4)引脚、(P3.2)引脚。TL0除仅用8位寄存器外,其功能和操作与方式0(13位计数器)、方式1(16位计数器)完全相同。TL0也可设置为定时器方式或计数器方式。图4.8T0方式3的结构
TH0只能用作定时器,对机器周期计数。它占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启停仅受TR1的控制。
当把T0设置为方式3时,T1可工作在方式0、方式1以及方式2下,但由于TH0占用了T1的启停控制位TR1和中断标志位TF1,因而此时T1只能由功能选择位C/来控制运行,不能产生溢出中断申请,这时T1适用于不需要中断控制的定时器场合,如用作串行口的波特率发生器等。4.2.3定时/计数器应用举例
单片机上电复位后,TMOD、TCON等特殊功能寄存器都处于清0状态,因而要想使定时/计数器按用户要求工作,必须先进行初始化设置和计数初值的确定等工作。
1.定时/计数器初始化
定时/计数器初始化的内容包含以下几点:
(1)确定定时/计数器的工作模式及工作方式,即给TMOD置相应的控制字。
(2)计算计数初值,送入计数器TH0、TL0或TH1、TL1中。
(3)根据使用要求确定是否需要开放中断,若使用溢出中断功能,则需要对中断允许寄存器IE以及中断优先级寄存器IP进行设置。
(4)给定时/计数器控制寄存TCON送入命令字,启动定时/计数器工作。
2.定时/计数器计数初值计算
定时/计数器T0和T1在系统复位之后均为0,若需要改变其计数值,则需要预先设置一定的计数初值。
1)定时器的初值计算
当选择定时功能时,计数器是对机器周期进行计数。设T为定时时间,x为计数器的初值,n为计数器位数,单片机系统时钟频率为fosc,则计数初值可通过如下公式计算:
2)计数功能的初值计算
选择计数功能时,计数脉冲由外部引脚引入,是对外部脉冲进行计数,计数初值可由下式确定:
x=2n-N
式中,N为计数值,其他参数的定义同定时器初值计算公式。
3.应用举例
例4.2
用定时/计数器T1进行外部事件计数,每计数1000个脉冲后,定时/计数器T1转为定时工作方式,定时10ms后又转为计数方式,如此循环不止。假定fosc为6MHz,用方式1编程。
解:将T1在定时和计数两种方式下轮换工作,首先让T1工作在方式1。
T1为定时器时初值:
T1为计数器时初值:
x+1000=216
x=64536=FC18H
CPU与外部的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。并行通信是指构成信息的二进制字符的各位数据同时传送的通信方法。并行通信的主要特点是传输速度快,在短距离通信中占优势,对长距离数据传输来说,因为信号线太多导致线路复杂,成本高。串行通信是指构成信息的二进制字符的各位数据一位一位顺序地传送的通信方式。串行通信线路简单,成本低但传输速度慢,适用于远距离传输。此处着重介绍串行通信的基础知识和MCS-51单片机的串行接口功能及其应用。4.3串行通信及其接口4.3.1串行通信的基础知识
串行通信又分为异步通信和同步通信两种方式。在单片机中,主要使用异步通信方式。
1.异步通信和同步通信
1)异步通信
在异步通信中,被传送的信息通常是一个字符代码或一个字节数据,它们都以规定的相同传送格式(字符帧格式)一帧一帧地发送或接收。发送端和接收端各有一套彼此独立、互不同步的通信机构,可以由各自的时钟来控制数据的发送和接收。
一个字符在异步传送中又称为一帧数据,字符帧也称数据帧,由起始位、数据位、奇偶校验位和停止位四部分组成,如图4.9所示。
起始位:为逻辑“0”信号,位于字符帧开头,占一位,表示发送端开始发送一帧
信息。
数据位:紧跟起始位之后就是数据位。在数据位中,低位在前(左),高位在后(右)。根据字符编码方式的不同,数据位可取5位、6位、7位或8位,数据的位数没有严格的
限制。
奇偶校验位:数据位发送或接收完之后,可发送奇偶校验位,它只有一位,用于传送数据的有限差错检测或表示数据的一种性质,是发送和接收双方预先约定好的一种检验方式。它可以是奇校验也可以是偶校验,有时也可以不用奇偶校验。
停止位:为逻辑“1”信号,此位位于字符帧末尾,表示一帧字符信息已发送完毕。停止位可以是1、1.5或2位,在实际应用中由用户根据需要确定。图4.9异步通信的字符帧格式(a)无空闲信字符帧;(b)有空闲位字符帧在串行异步传送中,通信双方必须事先约定:
(1)字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。当然停止位也可以大于1位。
(2)波特率。波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。它与字符的传送速率(字符/秒)之间有以下关系:
波特率=一个字符的二进制编码位数×字符/秒
发送端与接收端的波特率必须一致。
异步串行通信的传送速率一般为50~9600波特,常用于计算机到CRT终端和字符打印机之间的通信、直通电报以及无线电通信的数据发送等。
2)同步通信
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符,即数据块,它们都是由同步字符、数据字符和校验字符三部分组成的。一旦检测到同步字符,下面就是按顺序传送的数据块。同步通信数据传送格式如图4.10所示。
同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时除应和发送的波特率保持一致外,还要求发送时钟和接收时钟必须保持严格同步。故这种方式对硬件要求较高。图4.10同步通信的格式
3)波特率
波特率是指每秒钟传送二进制数码的位数(亦称比特数),单位是b/s。波特率是串行通信的重要指标,用于表征数据传送的速度。波特率越高,数据传输速度越快。
在异步串行通信中,接收设备和发送设备除了采用相同的字符帧格式外,还必须保持相同的传送波特率,这样才能成功地传送数据。
4)串行通信的制式
串行通信中,信息数据在通信线路两端的通信设备之间传递,按照数据传递方向和两端通信设备所处的工作状态,可将串行通信分为单工、半双工和全双工三种工作制式,如图4.11所示。图4.11串行通信数据传送的制式(a)单工传送;(b)半双工传送;(c)全双工传送
(1)单工制式。单工方式下,通信线路A端只有发送站,B端只有接收站,数据只能从A站发至B站,数据传送是单向的,不能反向传送信息,如图4.11(a)所示。
(2)半双工制式。如图4.11(b)所示,数据传送是双向的,但任一时刻数据只能从A站发至B站,或者从B站发至A站,也就是说,只能是一方发送另一方接收,不能同时发送和接收。
(3)全双工制式。全双工制式下,通信线路A、B两端都有发送器和接收器,如图4.11(c)所示,数据传送也是双向的,A、B两端可以同时发送和接收数据。因此,工作效率比前两种都要高。4.3.2MCS-51单片机的串行通信接口及其工作方式
MCS-51单片机中有一个全双工的串行口,通过软件编程,它可作异步通信串行口(UART)使用,也可作同步移位寄存器用。它的字符帧格式可以是8位、10位或11位,可以设置多种波特率,能方便地构成双机、多机串行通信接口,从而能实现51单片机系统之间点对点的单机通信、多机通信以及与系统机的单机或多机通信。
1.串行口的结构与功能
MCS-51串行口结构框图如图4.12所示。MCS-51单片机串行口主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。两个特殊功能寄存器SCON和PCON用来控制串行口的工作方式和波特率。发送缓冲寄存器SBUF只能写,不能读;接收缓冲寄存器SBUF只能读,不能写。两个缓冲寄存器共用一个地址99H,可以用读/写指令区分。图4.12MCS-51单片机串行口内部结构示意图串行发送时,通过“MOVSBUF,A”写指令,CPU把累加器A的内容写入发送缓冲器SBUF,再由TXD引脚一位一位地向外发送;串行接收时,接收端从RXD一位一位地接收数据,直到收到一个完整的字符数据后通知CPU,再通过“MOVA,SBUF”读指令,CPU从接收缓冲器SBUF读出数据,送到累加器A中。发送和接收的过程可以采用中断方式,从而可以大大提高CPU的效率。
2.与串行口相关的控制寄存器
MCS-51单片机中,与串行口工作相关的特殊功能寄存器有四个,分别为串行口控制寄存器SCON、电源控制寄存器PCON、中断允许寄存器IE和中断优先级寄存器IP。其中PCON、IE、IP在前面章节已经介绍过,在此只介绍SCON。
SCON用于串行口的工作方式选择、接收和发送控制以及串行口的状态标志,是一个可位寻址的8位特殊功能寄存器。其各位的定义如下:
SM0、SM1:由软件置位或清0,用于选择串行口四种工作方式,如表4.4所示。
SM2:多机通信控制位。在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。当SM2=0时,则不论第9位数据为0或为1,都将前8位数据装入SBUF中,并产生中断请求。在方式0时,SM2必须为0。
REN:允许串行接收控制位。若REN=0,则禁止接收;若REN=1,则允许接收。该位由软件置位或复位。表4.4串行口工作方式和波特率对照表
TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据;TB8=1为地址。TB8也可用作数据的奇偶校验位。该位由软件置位或复位。
RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。
TI:发送中断标志位。在方式0时,当发送数据第8位结束后,或在其他方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。
RI:接收中断标志位。在方式0时,当接收数据的第8位结束后,或在其他方式接收到停止位中间由内部硬件使RI置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。RI也可供查询使用。
串行发送中断标志TI和串行接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以在全双工通信时,必须由软件来判别。单片机复位时,SCON所有位均清0。
3.串行口工作方式
MCS-51单片机串行口有四种工作方式,分别为方式0、方式1、方式2和方式3。
1)方式0
方式0下,串行口用作同步移位寄存器,其波特率固定为单片机振荡频率的1/12,串行传送数据8位为一帧,由RXD(P3.0)引脚发送或接收,低位在前,高位在后。TXD(P3.1)引脚输出同步移位脉冲信号,可以作为外部扩展的移位寄存器的移位时钟,因而串行口方式0常用于扩展外部并行I/O口。方式0发送时,CPU执行一条将数据写入发送缓冲器SBUF的指令,即启动发送,TXD输出移位脉冲,串行口即将8位数据以振荡频率的1/12的波特率从RXD端串行发送出去。1帧(8位)数据发送完毕时,各控制端均恢复原状态,只有TI保持高电平,呈中断申请状态。要再次发送数据时,必须由软件将TI清0。方式0接收时,在RI=0的条件下,将REN(SCON.4)置1就启动一次接收过程。此时RXD为串行数据接收端,TXD依然输出同步移位脉冲。REN置1启动了接收控制器。TXD输出同步移位脉冲控制外接芯片逐位输入数据,波特率为fosc/12。在内部移位脉冲作用下,RXD上的串行数据逐位移入移位寄存器。当8位数据(一帧)全部移入移位寄存器后,接收控制端失效,停止输出移位脉冲,将8位数据并行送入接收数据缓冲器SBUF中保存。与此同时,接收控制器硬件置接收中断标志RI=1,向CPU申请中断。CPU响应中断后,用软件使RI=0,使移位寄存器开始接收下一帧信息,然后通过读接收缓冲器的指令,读取SBUF中的数据。
2)方式1
在方式1下,串行口为10位通用异步通信接口。一帧信息包括1位起始位(0)、8位数据位(低位在前)和l位停止位(1)。TXD是发送端,RXD是接收端。其传送波特率可变。
方式1发送时,CPU执行一条写SBUF指令便启动了串行口发送,数据从TXD输出。在指令执行期间,CPU送来“写SBUF”信号,将并行数据送入SBUF,启动发送控制器。经一个机器周期,发送控制端有效,通过输出控制门从TXD上逐位输出一帧信息。一帧信息发送完毕后,发送控制端失效,发送控制器硬件置发送中断标志TI=1,向CPU申请中断。CPU响应中断后,由软件使TI=0,可发送下一帧信息。方式1接收时,数据从RXD端输入。当REN置1后,就允许接收器接收,接收器便以波特率的16倍速率采样RXD端电平。当采样到1到0的跳变时,启动接收器接收,并复位内部的16分频计数器,以实现同步。计数器的16个状态把1位时间等分成16份,并在每位的第7、8、9个计数状态时采样RXD电平。因此,每一位的数值采样3次,至少有两次相同的值才被确认。如果起始位接收到的值不是0,则起始位无效,复位接收电路。在检测到一个1到0的跳变时,再重新启动接收器。如果接收值为0,起始位有效,则开始接受本帧的其余信息。在RI=0的状态下,接收到停止位为1(或SM2=0)时,将停止位送入RB8,8位数据进入接收缓冲器SBUF,并置中断标志RI=1。在方式1的接收器中设置有数据辨识功能,当同时满足两个条件时,接收的数据才有效,且实现装载SBUF、把RB8及RI置1,接收控制器再次采样RXD的负跳变,以便接收下一帧数据。这两个条件是RI=0和SM2=0,或接收到的停止位为1。如果这两个条件任意一个不满足,则所接收的数据无效,接收控制器不再恢复。
3)方式2与方式3
方式2、方式3都是11位异步通信接口,发送或接收的一帧信息由11位组成,其中1位起始位、9位数据位(低位在前)和1位停止位。方式2与方式3仅波特率不同,方式2的波特率为fosc/32(SMOD=1时)或fosc/64(SMOD=0时),而方式3的波特率由定时/计数器T1及SMOD决定。
在方式2、方式3时,发送、接收数据的过程与方式1的基本相同,不同之处仅在于对第9位数据的处理上。发送时,第9位数据由SCON中的TB8位提供。接收数据时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。
4.波特率设置
串行口的四种工作方式对应着三种波特率模式。
对于方式0,波特率是固定的,为fosc/12。
对于方式2,波特率由振荡频率fosc和SMOD(PCON.7)所决定,其对应公式为
波特率=
当SMOD=1时,波特率为fosc/32。
对于方式1和方式3,波特率由定时/计数器T1的溢出率和SMOD决定,即由下式确定:
波特率=
其中,溢出率取决于计数速率和定时器的预置值。当利用TI作波特率发生器时,通常选用方式2,即8位自动重装初值模式,其中TLl作计数器,THl存放自动重装的定时初值。因此,对Tl初始化时,写入方式控制字TMOD=00100000B。这样每过“256-x”个机器周期,定时器Tl就会产生一次溢出,溢出周期为
溢出率为溢出周期的倒数,因此,波特率的公式还可写成:
波特率=实际应用时,总是先确定波特率,再计算定时器T1的定时初值。根据上述波特率的公式,得出计算定时器方式2的初值x的公式为
x=256-4.3.3串行通信应用举例
MCS-51单片机的全双工串行口是可编程的,所以在应用时应先对其进行初始化,即确定串行口的工作方式以及波特率等。
1.利用串行口扩展并行I/O接口
当串行口工作于方式0时,是移位寄存器方式,此时可以利用串行口外接移位寄存器将串行口扩展为并行口。
例4.3
利用串行口方式0扩展I/O接口,接8个共阴极数码管,使片内RAM的30H~37H单元的内容依次显示在8个数码管上。
解:串行口工作在方式0,在TXD和RXD引脚连接串入并出的移位寄存器74LS164即可实现题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业6s管理学习心得体会
- 企业实习安全教育心得
- 保安员工获奖感言范文大全(33篇)
- 2026届广东惠州市惠阳区中考英语模试卷含答案
- 八年级道德与法治上册期中重点复习知识考前必看
- 会计实习总结18篇
- 保育员考试:中级保育员考试
- 体育教学工作总结15篇
- 2026 学龄前自闭症关键干预社交课件
- 一年级(下)数学第六单元拔尖测试卷《苏教版》
- DB41-T 2744-2024 农村公路建设指南
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 老年痴呆的预防和保健
- 储备成品油管理制度
- 乳房肿块护理查房课件
- 管网工程施工方案
- 第四章-无机反应机理和无机化合物的合成方法
- 氧气筒氧气吸入课件
- 房地产项目法律尽职调查报告
- 长沙理工热力发电厂课程设计
- 2023春国开社会调查研究与方法单元自测1-5试题及答案
评论
0/150
提交评论