




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章MCS-51单片机的内部资源3.1单片机的中断系统3.2单片机的定时器/计数器3.3单片机的串行通信本章小结
3.1单片机的中断系统
3.1.1单片机中断系统的概念当CPU正在处理某事件的时候,外部或者内部发生的某一事件请求CPU迅速去处理时,CPU暂时中止当前的工作,转到中断服务处理程序去处理所发生的事件。中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作,这样的过程称为中断。中断过程如图3-1所示。图3-1中断响应过程
3.1.2单片机中断系统的结构和组成
MCS-51系列单片机的中断系统有5个中断源,且有2个中断优先级(高优先级和低优先级),每个中断源的优先级都可以由软件来设定,也可实现两级中断服务程序嵌套。MCS-51单片机中断系统的组成:4个与中断有关的特殊功能寄存器(TCON、SCON的相关位作中断源的标志位)、中断允许控制寄存器IE、中断优先级管理(IP寄存器)和中断顺序查询逻辑电路等。
1.中断系统的组成
MCS-51系列单片机的中断系统结构示意图如图3-2所示。中断系统共有5个中断源,其中,中断入口地址是固定的,详见表3-1。图3-2MCS-51系列单片机的中断系统结构示意图
TCON为定时器/计数器的控制寄存器,字节地址为88H,可位寻址,该寄存器中既包括了定时器/计数器T0和T1的溢出中断请求标志位TF0和TF1,也包括了两个外部中断请求的标志位IE1和IE0。寄存器TCON的格式如图3-3所示。图3-3TCON中的中断请求标志位
寄存器TCON中与中断系统有关的各标志位的功能如下:
(1) IT0:选择外部中断请求0为跳沿触发方式还是电平触发方式。
(2) IE0:外部中断请求0的中断请求标志位。
(3) IT1:外部中断请求1为跳沿触发方式还是电平触发方式,功能与IT0类似。
(4) IE1:外部中断请求1的中断请求标志位,功能与IE0类似。
(5) TF0:定时器/计数器T0的溢出中断请求标志位。
(6) TF1:定时器/计数器T1的溢出中断请求标志位,功能和TF0类似。
SCON为串行口控制寄存器,字节地址为98H。SCON的低二位锁存串行口的发送中断和接收中断的中断请求标志为TI和RI,其格式如图3-4所示。图3-4SCON中的中断请求标志位
(1) TI:发送中断请求标志位。
CPU将一个字节的数据写入发送缓冲器SBUF时,就启动一帧串行数据的发送,串口每发送完一帧串行数据后,硬件自动置TI标志位为“1”。CPU响应该中断时,TI标志并不自动清零,必须在中断服务程序中用软件对TI标志清零。
(2) RI:接收中断请求标志位。
在串口接收完一个数据帧后,硬件自动对RI标志位置“1”。CPU响应中断时,RI标志并不自动清零,必须在中断服务程序中用软件对RI标志位清零。
3.1.3中断控制
MCS-51的CPU对中断源的开放或屏蔽由片内的中断允许寄存器IE控制,字节地址为A8H,可位寻址,中断允许寄存器IE的格式格式如图3-5所示。图3-5中断允许寄存器IE的格式
1.中断允许寄存器IE
中断允许寄存器IE对中断的开放和关闭为两级控制,有一个总的中断控制位EA(IE.7位)。当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求控制位的状态来决定。IE中各位的功能如下:
(1) EA:中断允许总控制位。
EA=0:CPU屏蔽所有的中断请求(CPU关中断)。
EA=1:CPU开放所有的中断请求(CPU开中断)。
(2) ES:串行口中断允许位。
ES=0:禁止串行口中断。
ES=1:允许串行口中断。
(3) ET1:定时器/计数器T1的溢出中断允许位。
ET1=0:禁止T1溢出中断。
ET1=1:允许T1溢出中断。
(4) EX1:外部中断1中断允许位。
EX1=0:禁止外部中断1中断。
EX1=1:允许外部中断1中断。
(5) ET0:定时器/计数器T0的溢出中断允许位。
ET0=0:禁止T0溢出中断。
ET0=1:允许T0溢出中断。
(6) EX0:外部中断0中断允许位。
EX0=0:禁止外部中断0中断。
EX0=1:允许外部中断0中断。
MCS-51复位后,IE清零,所有中断请求被禁止。IE中与各个中断源相应的位用指令置“1”或清零,即可允许或禁止各中断源的中断申请。若使某一个中断源被允许中断,除了IE相应的位被置“1”外,还必须使EA位置“1”。
2.中断优先级寄存器IP
MCS-51的中断请求源有两个中断优先级,每一个中断请求源可由软件定为高优先级中断或低优先级中断,也可实现两级中断嵌套。所谓两级中断嵌套,就是MCS-51正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,处理完毕高优先级中断后,再返回低优先级服务程序继续执行的过程。
关于各中断源的中断优先级的关系,可归纳为下面两条基本规则:
(1)低优先级可被高优先级中断,反之则不能。
(2)同级中断不会被它的同级中断源所中断。若CPU正在执行高优先级的中断,则不能被任何中断源所中断。
MCS-51的片内有一个中断优先级寄存器IP,其字节地址为B8H,可位寻址,可以用程序改变其内容,即可进行各中断源中断优先级的设置。IP寄存器的格式如图3-6所示。图3-6中断优先级寄存器IP的格式
中断优先级寄存器IP各位的含义:
(1) PS:串行口中断优先级控制位。
PS=1:高优先级中断。
PS=0:低优先级中断。
(2)PT1:定时器T1中断优先级控制位。
PT1=1:高优先级中断。
PT1=0:低优先级中断。
(3) PX1:外部中断1中断优先级控制位。
PX1=1:高优先级中断。
PX1=0:低优先级中断。
(4) PT0:定时器T0中断优先级控制位。
PT0=1:高优先级中断。
PT0=0:低优先级中断。
(5) PX0:外部中断0中断优先级控制位。
PX0=1:高优先级中断。
PX0=0:低优先级中断。
中断优先级控制寄存器IP的各位都可由软件置“1”和清零,以改变各中断源的中断优先级。
MCS-51复位后,IP的内容为0,各个中断源均为低优先级中断。
MCS-51的中断系统有两个不可寻址的“优先级激活触发器”,一个用来指示某高优先级的中断正在执行,所有后来的中断均被阻止;另一个用来指示某低优先级的中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。
若同时收到几个同一优先级的中断请求时,优先响应哪一个中断取决于内部的查询顺序。查询顺序如下:外部中断0、T0溢出中断、T1溢出中断、串口中断的中断优先级依次降低,即外部中断0的中断优先级最高,串口中断的中断优先级最低。
3.1.4响应中断的条件
一个中断请求如果要被响应,需满足以下必要条件:
(1) IE寄存器中的中断允许总控制位EA=1。
(2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。
(3)该中断源的中断允许位=1,即该中断没有被屏蔽。
(4)无同级或更高级中断正在被服务。
各个中断的中断入口地址如表3-2所示。
中断响应是有条件的,并不是查询到所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁。
(1) CPU正在处理同级的或更高优先级的中断。
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期,只有在当前指令执行完毕后,才能进行中断响应。
(3)正在执行的指令是RETI或是访问IE或IP的指令,需要再去执行完一条指令,才能响应新的中断请求。
如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。
3.1.5外部中断的响应时间
以外部中断为例,在每个机器周期的S5P2期间,INT0和INT1引脚的电平被锁存到TCON的IE0和IE1标志位,CPU在下一个机器周期才会查询这些值,这时如果满足中断响应条件,下一条要执行的指令将是一条硬件长调用指令,使该程序转至中断源矢量地址入口。硬件长调用指令本身要花费2个机器周期,这样从外部中断请求有效到开始执行中断服务程序的第一条指令,中间要隔3个机器周期,这是最短的响应时间,如果遇到中断受阻的情况,则中断响应时间会更长一些。
3.1.6外部中断的触发方式
1.电平触发方式
当IT=0时,外部中断为电平触发方式。该方式下CPU在每个机器周期的S5P2期间对引脚采样,若测得为低电平,则认为有中断申请,随即使IE相应标志位置位;若测得为高电平,认为无中断申请或中断申请已撤除,随即清除IE相应标志位。在电平触发方式中,CPU响应中断后不能自动清除IE标志位,也不能由软件清除IE标志位,所以在中断返回前必须撤消引脚上的低电平,否则将再次中断造成出错。
所有电平方式适合于外中断以低电平输入且中断服务程序能清除外部中断请求(即外部中断输入电平又变为高电平)的情况。
2.下降沿触发方式
当IT=1时,外部中断设置为边沿触发方式。CPU在每个机器周期的S5P2期间采样INT引脚,若在连续两个机器周期采样到先高后低的电平变化,则将IE相应标志置“1”,此标志一直保持到CPU响应中断时,才由硬件自动清除,这样不会丢失中断,但输入的负脉冲宽度至少保持1个机器周期(若晶振频率为12MHz,则为1μs),才能被CPU采样到。外部中断的跳沿触发方式适合于以负脉冲形式输入的外部中断请求。
3.1.7单片机中断请求的撤销
CPU响应某中断请求后,在中断返回(RETI)之前,该中断请求应该撤消,否则会引起另一次中断。单片机各中断源请求撤消的方法各不相同,分别如下:
(1)定时器0和定时器1的溢出中断,CPU在响应中断后,就由硬件自动清除TF0或TF1标志位。
(2)外部中断请求的撤消与设置的中断触发方式有关。对于边沿触发方式的外部中断,CPU在响应中断后,也是由硬件自动将IE0或IE1标志位清除的。对于电平触发方式的外部中断请求的撤销,除了标志位清零之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,电平方式外部中断请求的撤销电路如图3-7所示。图3-7电平方式外部中断请求的撤销电路
(3)串行口的中断。CPU响应后,无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。硬件不能自动清除TI和RI标志位,因此CPU响应中断后,须在中断服务程序中用软件清除相应的中断标志位,以撤消中断请求。
3.1.8单片机中断服务子程序的设计
中断系统的运行必须与中断服务子程序相配合才能正确使用。
1.中断服务子程序设计的任务
中断服务子程序的基本任务有如下四个:
(1)设置中断允许控制寄存器IE,允许相应的中断请求源中断。
(2)设置中断优先级寄存器IP,确定并分配所使用的中断源的优先级。
(3)对于外部中断源,还要设置中断请求是采用电平触发还是跳沿触发。
(4)编写中断服务程序,处理中断请求。
2.中断服务子程序的处理
CPU响应中断结束后即转至中断服务程序入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或称为中断服务。一般情况下,中断处理包括两部分:一是保护现场;二是中断源服务。
3.中断服务子程序的返回
中断处理程序的最后一条指令是中断返回指令,它的功能是将断点弹出送回PC中,使程序能返回到原来被中断的程序继续执行。
3.1.9单片机外部中断扩充方法
MCS-51单片机为用户提供了两个外部中断请求输入端。在实际的应用系统中,两个外部中断请求源往往不够用,需对外部中断源进行扩充。
1.利用定时器扩充外部中断源法
单片机系统中有两个定时器、两个内部中断标志和外部计数输入引脚。
2.中断和查询结合法
利用单片机的两根外部中断输入线,每一根中断输入线可以通过线或的关系连接多个外部中断源,同时利用输入端口线作为各中断的识别线。多外部中断连接法电路见图3-8中的多外部中断源连接方法。
图3-8多外部中断连接法电路
3.2单片机的定时器/计数器
实现定时/计数有软件延时、数字电路硬件定时和可编程定时/计数器三种主要方法:(1)软件定时是让机器执行一个程序段,这个程序段本身没有具体的执行目的,通过正确的挑选指令和安排循环次数实现软件延时。由于执行每条指令都需要时间,执行这一段程序所需要的时间就是延时时间。这种软件定时占用CPU的执行时间,降低了CPU的工作效率。
(2)数字电路硬件定时可采用小规模集成电路器件555,外接定时部件(电阻和电容)构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,且在硬件连接好后,修改不方便。
(3)可编程定时/计数器是为方便微机系统的设计和应用而研制的,它即可硬件定时,又可以通过软件编程来确定定时时间。MCS-51单片机内部有两个16位的定时/计数器T0
和T1。
3.2.1定时器/计数器的结构与工作原理
定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,用于确定工作方式和功能;TCON是控制寄存器,用于控制T0、T1的启动和停止及设置溢出标志。
1.定时器/计数器的结构
MCS-51单片机内部定时器的逻辑结构如图3-9所示。图3-9MCS-51单片机定时器/计数器逻辑结构框图
2.定时器/计数器的工作原理
定时/计数器对内部的机器周期个数计数就实现了定时,对片外脉冲个数的计数就是计数功能。
在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对单片机机器周期个数的计数器,当晶体振荡器连接确定后,机器周期的时间也就确定了,这样就实现了定时功能。
3.2.2T0和T1定时器/计数器的控制
MCS-51系列单片机的定时/计数器是一种可编程序的部件,在定时/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入该定时/计数器,这个过程称为定时/计数器的初始化。在初始化程序中,要将工作方式控制字写入模式控制寄存器TMOD,工作状态控制字(或相关位)写入控制寄存器TCON。
1.定时器/计数器的模式控制寄存器TMOD
特殊功能寄存器TMOD为定时器的模式控制寄存器,占用的字节地址为89H,不可以进行位寻址,该寄存器TMOD的定义格式如图3-10所示。如果要定义定时器的工作方式,需要采用字节操作指令赋值,其中高4位用于定时器T1,低4位用于定时器T0。系统复位时TMOD所有位均为0。图3-10模式控制寄存器TMOD的定义格式
2.控制寄存器TCON
TCON的字节地址为88H,可进行位寻址(位地址为88H~8FH),用于控制定时器的启、停及定时器的溢出标志和外部中断触发方式等,控制寄存器TCON的定义格式如图3-11
所示。图3-11控制寄存器TCON的定义格式
其中低4位与外部中断有关,在前面已经详细介绍,高4位的功能如下:
(1) TF0、TF1:分别为定时器T0、T1的计数溢出标志位。
(2) TR0、TR1:分别为定时器T0、T1的运行控制位,可由软件置“1”或清零。
3.2.3T0和T1定时器/计数器的工作方式
定时/计数器可以通过特殊功能寄存器TMOD中的控制位的设置来选择定时器方式或计数器方式;通过M1、M0两位的设置选择4种工作方式,分别为方式0、方式1、方式2和方式3。现以定时/计数器T0为例加以说明。
1.方式0
当M1M0为00时,定时器选定为方式0工作。在这种方式下,16位寄存器(由特殊功能寄存器TL0和TH0组成)只用了13位,TL0的高3位未用,由TH0的8位和TL0的低5位组成一个13位的定时/计数器,其最大的计数次数为213次。如果单片机采用6MHz晶振,机器周期为2 μs,则该定时器的最大定时时间为214μs。定时/计数器工作方式0的逻辑结构图如图3-12所示。
图3-12定时/计数器工作方式0的逻辑结构图
2.方式1
当M1M0为01时,定时器选定为方式1工作。在这种方式下,16位寄存器由特殊功能寄存器TL0和TH0组成一个16位的定时/计数器,其最大的计数次数应为216次。如果单片机采用6MHz晶振,机器周期为2μs,则该定时器的最大定时时间为217μs。定时/计数器工作方式1的逻辑结构图如图3-13所示。除了计数位数不同外,方式1与方式0的工作过程相同。图3-13定时/计数器工作方式1的逻辑结构图
3.方式2
方式2是自动重装初值的8位定时/计数器。方式0和方式1当计数溢出时,计数器变为全0,因此再循环定时的时候,需要反复重新用软件给TH和TL寄存器赋初值,这样会影响定时精度。方式2就是针对此问题而设置的。
当M1M0为10时,定时器选定为方式2工作。在这种方式下,8位寄存器TL0作为计数器,TL0和TH0装入相同的初值,当计数溢出时,在置1溢出中断标志位TF0的同时,TH0的初值自动重新装入TL0。在这种工作方式下其最大的计数次数应为28次。如果单片机采用6MHz晶振,机器周期为2μs,则该定时器的最大定时时间为29μs。定时/计数器工作方式2的逻辑结构图如图3-14所示。图3-14定时/计数器工作方式2的逻辑结构图
4.方式3
当M1M0为11时,定时器选定为方式3工作。方式3只适用于定时/计数器T0,定时/计数器T1不能工作在方式3。
定时/计数器T0分为两个独立的8位计数器:TL0和TH0,定时/计数器工作方式3的逻辑结构图如图3-15所示。图3-15定时/计数器工作方式3的逻辑结构图
3.2.4计数器模式对输入信号的要求
T0(P3.4)和T1(P3.5)两个引脚作为计数输入端,外部输入的脉冲在出现从1到0的负跳变时有效,计数器进行加1。计数方式下,单片机在每个机器周期的S5P2时对外部计数脉冲进行采样。如果前一个机器周期采样为高电平,后一个机器周期采样为低电平,则为一个有效的计数脉冲,在下一个机器周期的S3P1进行计数。由于采样计数脉冲需要两个机器周期,即24个振荡周期,因此计数脉冲的频率最高为振荡脉冲频率的。
3.2.5定时器/计数器的初始化编程
MCS-51定时/计数器的初始化编程过程如下。
1.初始化的步骤
(1)确定工作方式、操作模式、启动控制方式:写入TMOD、TCON寄存器。
(2)设置定时或计数器的初值:可直接将初值写入TH0、TL0或TH1、TL1中。16位计数初值必须分两次写入对应的计数器。
(3)根据要求是否采用中断方式:直接对IE位赋值。开放中断时,对应位置“1”;采用程序查询方式时,IE相应位清零进行中断屏蔽。
(4)启动定时器工作:可使用TR0=1或者TR1=1启动。T0或T1若设置为软启动,即GATE设置为0时,以上指令执行后,定时器即可开始工作。
2.计数初值的计算
若设最大计数值为2n,n为计数器位数,各操作模式下的2n值为:
模式0:2n=8192,n=13。
模式1:2n=65536,n=16。
模式2:2n=256,n=8。
模式3:2n=256,n=8,定时器T0分成两个独立的8位计数器,所以TH0、TL0的最大计数值均为256。
单片机中的T0、T1定时器均为加1计数器,当加到最大值(00H或0000H)时产生溢出,将TF0或者TF1位置“1”,可发出溢出中断,因此计数器初值X的计算式为:X=2n - 计
数值。
(1)计数工作方式时,对外部脉冲进行计数,其计数初值为:X=2n-计数值。
(2)定时工作方式时,对机器周期进行计数,故计数脉冲频率为fcont=fosc/6,计数周期T=1/fcont,定时工作方式的计数初值X=2n-计数值=2n-t/T=2n-(fosc×t)/(12或6)。
3.3单片机的串行通信3.3.1串行口的结构与功能MCS-51系列单片机有一个可编程的全双工串行通信接口,它既可作为UART,也可作为同步移位寄存器,其帧格式可为8位、10位或11位,并可以设置各种不同的波特率,通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。该接口不仅能同时进行数据的发送和接收,还可作为一个移位寄存器使用。MCS-51系列单片机串行口的结构框图如图3-16所示,主要由发送控制器、接收控制器和串行控制寄存器组成。图3-16MCS-51串行口结构框图
由图3-16可知,发送电路由发送SBUF和发送控制器等组成;接收电路由接收SBUF、接收移位寄存器和接收控制器等组成。发送SBUF和接收SBUF都是8位数据缓冲寄存器:发送SBUF用于存放将要发送的数据,接收SBUF用于存放串行口接收到的数据。CPU可以通过执行读取和接收指令对它们进行存取,具体过程如下:
(1)两个在物理上独立的接收、发送缓冲器SBUF,占用同一地址99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。
(2)串行发送与接收的速率与移位时钟同步,定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)又经16分频作为串行发送或接收的移位时钟。移位时钟的速率即波特率。
(3)接收器是双缓冲结构,在前一个字节被接收缓冲器读出之前,第二个字节即开始被接收,但当第二个字节接收完毕而前一个字节CPU未读取时,就会丢失前一个字节
内容。
(4)串行口的发送:SBUF=temp,一帧数据发送完毕,TI=1。
(5)串行口的接收:当一帧数据接收完毕,RI=1,temp=SBUF。
(6)串行口是一个可编程接口,由串行口控制寄存器SCON和电源控制寄存器PCON设置。
3.3.2串行口的控制寄存器
要控制单片机的串口必须对相应的控制寄存器进行设置,和串口相关的寄存器有串行口控制寄存器(SCON)和串行口电源控制寄存器(PCON)。
1.串行口控制寄存器(SCON)的格式
串行口控制寄存器(SCON)用于设置串行口的工作方式、监视串行口工作状态、发送与接收的状态控制等,它是一个既可字节寻址又可位寻址的特殊功能寄存器,地址为98H。串行口控制寄存器(SCON)的格式如图3-17所示。图3-17串行口控制寄存器(SCON)的格式
SCON各位的定义:
(1)SM0、SM1:工作方式选择位。串行口工作方式选择详见表3-4。
(2) SM2:方式2、方式3多机通信控制位。在方式2、3处于接收时,若SM2=1,且接收到第9位数RB8为0,则不能置位接收中断标志RI,接收数据失效;在方式1接收时,若SM2=1,则只有接收到有效的停止位,才能置位RI;在方式0时,SM2应为0。
(3) REN:串行口接收控制位,由软件置位或清零。REN=1,允许接收;REN=0,禁止接收。
(4) TB8:发送数据的第9位。在方式2和方式3中,要发送的第9位数据存放在TB8位,可用软件置位或清零。它可作为通信数据的奇偶校验位。在单片机的多机通信中,TB8常用来表示是地址帧还是数据帧,“1”表示地址帧,“0”表示数据帧。
(5) RB8:在方式2和方式3中,接收到的第9位数据就存放在RB8。它可以是约定的奇偶校验位。在单片机的多机通信中用它作为地址或数据标识位。在方式1中,若SM2=0,则RB8存放已接收的停止位;在方式0中,该位未用。
(6) TI:发送中断请求标志。在一帧数据发送完后被置位。在方式0时,发送第8位结束时由硬件置位;在方式1、2、3中,在停止位开始发送时由硬件置位。置位TI意味着向CPU提供“发送缓冲器已空”的信息,CPU响应后发送下一帧数据。在任何方式中,TI都必须由软件清零。
(7) RI:接收中断请求标志。在接收到一帧数据后由硬件置位。在方式0时,当接收第8位结束时由硬件置位;在方式1、方式2、方式3中,在接收到停止位的中间点时由硬件置位。RI=1,表示请求中断,CPU响应中断后,从SBUF取出数据。但在方式1中,当SM2=1时,若未接收到有效的停止位,则不会对RI置位。在任何方式中,RI都必须由软件清零。
由图3-16可知,串行口的中断无论是接收中断还是发送中断,当CPU响应中断时都进入0023H程序地址,执行串行口的中断服务子程序,这时由软件来判别是接收中断,还是发送中断。而中断标志必须在中断服务子程序中加以清除,以防出现一次中断多次响应的现象。
2.串行口电源控制寄存器(PCON)的格式
PCON为电源控制寄存器,是特殊功能寄存器,地址为87H。PCON中的第7位与串行口有关。串行口电源控制寄存器(PCON)的格式如图3-18所示。图3-18串行口电源控制寄存器(PCON)的格式
3.3.3串行口的工作方式
MCS-51单片机串行口有方式0、方式1、方式2和方式3四种工作方式,现对每种工作方式下的特点作进一步的说明。
1.方式0
方式0即同步移位寄存器输入/输出工作方式。8位串行数据的输入或输出都是通过RXD端,而TXD端用于输出同步移位脉冲。波特率固定为单片机振荡频率(fosc)的1/12。
串行传送数据8位为一帧(没有起始、停止、奇偶校验位),由RXD(P3.0)端输出或输入,低位在前,高位在后。TXD(P3.1)端输出同步移位脉冲,可以作为外部扩展的移位寄存器的移位时钟,因而串行口方式0常用于扩展外部并行I/O口。方式0的帧格式如图3-19所示。
图3-19方式0的帧格式
(1)方式0发送。
串行口可以外接串行输入/并行输出的移位寄存器,如74LS164,用以扩展并行输出口,方式0扩展并行输出口电路如图3-20所示。当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,逐位移入74LS164。8位全部移完,TI=1。如要再发送,必须先将TI清零。串行发送时,外部可扩展一片(或几片)串入/并出的移位寄存器,方式0的发送时序如图3-21所示。图3-20方式0扩展并行输出口图3-21方式0的发送时序
(2)方式0接收。
串行接收时,串行口可以扩展一片(或几片)并入/串出的移位寄存器,方式0扩展并行入口电路如图3-22所示,利用74LS165,用以扩展并行输入口。向串口的SCON写入控制字(置为方式0,并置“1”REN位,同时RI=0)时,产生一个正脉冲,串行口即开始接收数据。RXD为数据输入端,TXD端输出的同步移位脉冲将74LS165逐位移入RXD端。8位全部移完,RI=1,表示一帧数据接收完。如要再发送,必须先将RI清零,方式0的接收时序如图3-23所示。图3-22方式0扩展并行输入口图3-23方式0的接收时序
2.方式1
方式1时,一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位,其帧格式如图3-24所示。图3-24方式1的帧格式
方式1时,其波特率是可变的,由定时器T1的计数溢出率决定。在串行通信中,常用定时器T1作为波特率发生器使用。通常选用定时方式2,避免因为重装时间常数而带来的定时误差,其波特率由下式确定:
其中,SMOD为PCON寄存器最高位的值(0或1)。
T1溢出率为1s内T1发生溢出的次数,它与T1的工作方式有关。
T1溢出率的计算方法:
(1)方式1发送。
在TI=0时,当执行一条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号变为有效,然后发送电路自动在8位发送字符前、后分别添加1位起始位和1位停止位,并在移位脉冲作用下,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD按照从低位到高位输出一个数据位。8位数据位全部发送完毕后,TI也由硬件在发送停止位时置位,即TI=1,向CPU申请中断。方式1的发送时序如图3-25所示,图中TX时钟的频率就是发送的波特率。图3-25方式1的发送时序
(2)方式1接收。
接收操作可在RI=0和REN=1的条件下进行。多接收器接收时,接收器以所选波特率的16倍速率采样RXD端电平,检测到RXD端输入电平发生负跳变时(起始位),开始接收数据。内部16分频计数器的16个状态把传送每一位数据的时间16等分,在每个时间的7、8、9这三个计数状态,位检测器采样RXD端电平,接收的值是3次采样中至少有两次相同的值,这样可以防止外界的干扰。位检测采样的频率为RX时钟频率的16分频。方式1的接收时序如图3-26所示,图中RX时钟的频率就是接收的波特率。图3-26方式1的接收时序
当一帧数据接收完毕,须同时满足以下两个条件,接收才真正有效:
①RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。
②SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入停止位),且置中断标志RI为“1”。
若上述两个条件不能同时满足,则收到的数据将丢失。
3.方式2和方式3
方式2和方式3下,串行口工作在11位异步通信方式。一个帧信息包含一个起始位(0)、8个数据位、一个可编程第9数据位和一个停止位(1)。其中可编程位是SCON中的TB8位,在8个数据位之后,可作奇偶校验位或地址/数据帧的标志位使用,方式2和方式3的帧格式如图3-27所示。方式2和方式3两者的差异仅在于通信波特率有所不同:方式2的波特率是固定的,由主频fosc经32或64分频后提供,方式3的波特率是可变的。图3-27方式2和方式3的帧格式
方式2的波特率由下式确定:
方式3的波特率由下式确定:
(1)方式2(或3)发送。
发送前,先根
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省安阳市文峰区2024-2025学年九年级上学期1月期末化学试题(含答案)
- 2019-2025年军队文职人员招聘之军队文职政治学能力检测试卷B卷附答案
- 临床急救知识培训课件
- 酒吧员工禁止恋爱合同(2篇)
- 2025年反电信网络诈骗法测试题库及参考答案
- 自体输血知识培训课件
- 农资产品经销代理合作协议
- 共享单车租赁服务协议
- 睡前故事故事解读
- 辽宁省大连市2024-2025学年高一上学期1月期末考试生物学试题(含答案)
- 加强物料提升机施工现场安全管理
- 第15课《我是记忆小能手》课件
- 重症肺炎护理查房文献参考
- 小红书经典营销案例分析
- 企业战略与绩效管理
- 虚拟货币交易合同
- 操作系统课程设计报告
- 静脉输液的不良反应及处理原则考核试题及答案
- 档案袋密封条格式范本(可直接打印,可自行编辑)
- 2022年深圳市南山区教育系统招聘公办幼儿园园长考试真题
- 2023年全国《军事理论》教育知识竞赛试题与答案
评论
0/150
提交评论