1、第四章第四章 中断、定时中断、定时/计数器与串行通计数器与串行通信信第一节第一节 中断系统中断系统第二节第二节 定时器定时器/计数器及应用计数器及应用第三节第三节 串行口通信系统串行口通信系统第四节第四节 I/O口的扩展技术口的扩展技术第一节第一节 中断系统中断系统一、中断功能的概述一、中断功能的概述所谓中断是指中央处理器所谓中断是指中央处理器CPU在处理某件事情的时候,外部在处理某件事情的时候,外部又发生了某一事件(如一个电平的变化,一个脉冲沿的发生,又发生了某一事件(如一个电平的变化,一个脉冲沿的发生,定时器计数溢出等)请求定时器计数溢出等)请求CPU迅速处理,于是,迅速处理,于是,CPU
2、暂时中暂时中断当前的工作,转入处理所发生的事情;中断服务处理完以断当前的工作,转入处理所发生的事情;中断服务处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断,如程称为中断,如图图4-1所示。实现这种功能的部件称为中断所示。实现这种功能的部件称为中断系统,产生中断的请求称为中断源。如果在进行中断处理的系统,产生中断的请求称为中断源。如果在进行中断处理的过程中,又有新的中断到来,则我们称这种情况为中断嵌套。过程中,又有新的中断到来,则我们称这种情况为中断嵌套。下一页返回第一节第一节 中断系统中断系统二、二、MCS-51单片机
3、的中断系统单片机的中断系统MCS-51单片机的中断系统是单片机的中断系统是8位单片机中功能较强的一种,位单片机中功能较强的一种,可以提供可以提供5个中断请求源(个中断请求源(表表4-1),具有两个中断优先级。),具有两个中断优先级。可实现两级中断服务程序嵌套。可实现两级中断服务程序嵌套。MCS-51的中断系统结构示的中断系统结构示意图如意图如图图4-2所示。所示。外中断是由外部原因引起的,共有两个中断源,即外部中断外中断是由外部原因引起的,共有两个中断源,即外部中断0和外部中断和外部中断1.它们的中断请求信号分别由引脚它们的中断请求信号分别由引脚 (P3.2)和)和 (P3.3)引入。外部中断
4、请求有两种信)引入。外部中断请求有两种信号方式,即电平方式和脉冲方式。号方式,即电平方式和脉冲方式。上一页 下一页返回第一节第一节 中断系统中断系统定时中断是为满足定时或计数的需要而设置的。在单片机芯定时中断是为满足定时或计数的需要而设置的。在单片机芯片内部有两个定时器片内部有两个定时器/计数器,以对其中的计数结构进行计计数器,以对其中的计数结构进行计数的方法,来实现定时或计数功能。当计数结构发生计数溢数的方法,来实现定时或计数功能。当计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位
5、,作为单片机接信号作为中断请求,去置位一个溢出标志位,作为单片机接受中断请求的标志。这种中断请求是在单片机芯片内部发生受中断请求的标志。这种中断请求是在单片机芯片内部发生的,依次无需在芯片上设置引入端。的,依次无需在芯片上设置引入端。串行中断是为串行数据传送的需要而设置的。每当串行口接串行中断是为串行数据传送的需要而设置的。每当串行口接收或发送完一组串行数据时就产生一个中断请求。因此串行收或发送完一组串行数据时就产生一个中断请求。因此串行中断请求也是在单片机芯片内部自动发生的,同样不需在芯中断请求也是在单片机芯片内部自动发生的,同样不需在芯片上设置引入端。片上设置引入端。上一页 下一页返回第一
6、节第一节 中断系统中断系统每一个中断源对应一个中断请求标志位,它们设置在特殊寄每一个中断源对应一个中断请求标志位,它们设置在特殊寄存器存器TCON和和SCON中。当这些中断源请求中断时,分别由中。当这些中断源请求中断时,分别由TCON和和SCON中相应位来锁存。中断的允许和禁止是由片中相应位来锁存。中断的允许和禁止是由片内的中断允许控制寄存器内的中断允许控制寄存器IE来控制的。来控制的。上一页 下一页返回第一节第一节 中断系统中断系统TF1:定时器定时器/计数器计数器1(T1)溢出中断请求标志位。)溢出中断请求标志位。TF0:定时器定时器/计数器计数器0(T0)溢出中断请求标志位。)溢出中断请
7、求标志位。IT1:外部中断:外部中断1触发方式选择位。触发方式选择位。IE1:外部中断:外部中断1中断请求标志位。中断请求标志位。IT0:外部中断外部中断0触发方式选择位。触发方式选择位。IE0:外部中断:外部中断0中断请求标志。中断请求标志。RI:串行口接收中断请求标志位。:串行口接收中断请求标志位。TI:串行口发送中断请求标志位。:串行口发送中断请求标志位。上一页 下一页返回第一节第一节 中断系统中断系统EA:中断总允许位。:中断总允许位。EA=0,CPU禁止所有中断,屏蔽所禁止所有中断,屏蔽所有的中断请求;有的中断请求;EA=1,CPU开放中断。但每个中断源的中开放中断。但每个中断源的中
8、断请求允许还是禁止分别由各自的允许位确定。断请求允许还是禁止分别由各自的允许位确定。ET2:定时器:定时器2中断允许位。中断允许位。ET2=0,禁止定时器,禁止定时器2中断;中断;ET2=1,允许定时器,允许定时器2中断。中断。ES:串行口中断允许位。:串行口中断允许位。ES=0,禁止串行口中断;,禁止串行口中断;ES=1,允许串行口中断。允许串行口中断。上一页 下一页返回第一节第一节 中断系统中断系统ET1:定时器定时器1中断允许位。中断允许位。ET1=0,禁止定时器,禁止定时器1中断;中断;ET1=1,允许定时器,允许定时器1中断;中断;EX1:外部中断:外部中断1中断允许位。中断允许位。
9、EX1=0,禁止外部中断,禁止外部中断1中中断;断;EX1=1,允许外部中断,允许外部中断1中断。中断。ET0:定时器:定时器0中断允许位。中断允许位。ET0=0,禁止定时器,禁止定时器0中断;中断;ET0=1,允许定时器,允许定时器0中断。中断。EX0:外部中断:外部中断0中断允许位。中断允许位。EX0=0,禁止外部中断,禁止外部中断0中中断;断;EX0=01,允许外部中断,允许外部中断0中断。中断。上一页 下一页返回第一节第一节 中断系统中断系统MCS-51有两个中断允许优先级,对于每一个中断请求源可有两个中断允许优先级,对于每一个中断请求源可编程为高优先级中断或低优先级中断,可实现二级中
10、断嵌套,编程为高优先级中断或低优先级中断,可实现二级中断嵌套,一个正在执行的低优先级中断程序能被高优先级的中断源所一个正在执行的低优先级中断程序能被高优先级的中断源所中断,但不能被另一个低优先级的中断源所中断。若中断,但不能被另一个低优先级的中断源所中断。若CPU正正在执行高优先级的中断,则不能被任何中断源所中断,一直在执行高优先级的中断,则不能被任何中断源所中断,一直执行到结束,直到返回指令执行到结束,直到返回指令RETI,返回主程序后再执行一,返回主程序后再执行一条指令后才能响应新的中断请求。以上所述可以归纳为下面条指令后才能响应新的中断请求。以上所述可以归纳为下面两条基本规则:两条基本规
11、则:1)低优先级可被高优先级中断,反之不能;)低优先级可被高优先级中断,反之不能;2)任何一种中断,一旦得到响应,不会再被它的同级中断)任何一种中断,一旦得到响应,不会再被它的同级中断所中断。所中断。上一页 下一页返回第一节第一节 中断系统中断系统PT2:定时器:定时器2中断优先级设定位。中断优先级设定位。PT2=1,定时器,定时器2定义定义为高优先级中断源;为高优先级中断源;PT2=0,定时器,定时器2定义为低优先级中定义为低优先级中断源。断源。PS:串行口中断优先级设定位。:串行口中断优先级设定位。PS=1,串行口定义为高优,串行口定义为高优先级中断源;先级中断源;PS=0,串行口定义为低
12、优先级中断源;,串行口定义为低优先级中断源;PT1:定时:定时/计数器计数器1中断优先级设定位。中断优先级设定位。PT1=1,定时,定时/计数器计数器1定义为高优先级中断源;定义为高优先级中断源;PT1=0,定时,定时/计数器计数器1定义为低优先级中断源;定义为低优先级中断源;上一页 下一页返回第一节第一节 中断系统中断系统PX1:外部中断:外部中断1中断优先级设定位。中断优先级设定位。PX1=1,外部中断,外部中断1定义为高优先级中断源;定义为高优先级中断源;PX1=0,外部中断,外部中断1定义为低优定义为低优先级中断源。先级中断源。PT0:定时:定时/计数器计数器0中断优先级设定位。中断优
13、先级设定位。PT0=1,定时,定时/计数器计数器0定义为高优先级中断源;定义为高优先级中断源;PT0=0,定时,定时/计数器计数器0定义为低优先级中断源。定义为低优先级中断源。PX0:外部中断:外部中断0中断优先级设定位。中断优先级设定位。PX0=1,外部中断,外部中断0定义为高优先级中断源;定义为高优先级中断源;PX0=0,外部中断,外部中断0定义为低优先定义为低优先级中断源;级中断源;上一页 下一页返回第一节第一节 中断系统中断系统计算机中断处理过程可分为三个阶段:中断响应、中断处理计算机中断处理过程可分为三个阶段:中断响应、中断处理和中断返回。各计算机系统的中断硬件系统各有不同,中断和中
14、断返回。各计算机系统的中断硬件系统各有不同,中断的响应和方式也有所不同。对于的响应和方式也有所不同。对于MCS-51单片机,中断处理单片机,中断处理过程如下:过程如下:1.中断响应的条件中断响应的条件中断源向中断源向CPU发出中断请求,发出中断请求,CPU响应中断应满足下列条件:响应中断应满足下列条件:(1)有中断源发出中断请求;)有中断源发出中断请求;(2)中断总允许位)中断总允许位EA=1,即,即CPU开放中断;开放中断;(3)申请中断的中断源的中断允许位为)申请中断的中断源的中断允许位为1,即没有被屏蔽。,即没有被屏蔽。上一页 下一页返回第一节第一节 中断系统中断系统2.中断响应中断响应
15、如果中断响应条件满足,则如果中断响应条件满足,则CPU响应中断,在响应中断的三响应中断,在响应中断的三个周期内个周期内CPU必须做以下几件事:必须做以下几件事:(1)关闭中断:)关闭中断:CPU首先使被响应中断的相应首先使被响应中断的相应“优先级激优先级激活活”触发器置位,以阻断同级和低级的中断。触发器置位,以阻断同级和低级的中断。(2)断点保护:把中断点的地址(断点地址),也就是当)断点保护:把中断点的地址(断点地址),也就是当前程序计数器前程序计数器PC中内容压入堆栈,以便中断返回时继续原程中内容压入堆栈,以便中断返回时继续原程序。序。(3)清楚相应的中断请求标志位)清楚相应的中断请求标志
16、位IE0、IE1、TF0、TF1。(4)将对应的中断源的矢量地址装入计数器)将对应的中断源的矢量地址装入计数器PC,使程序转,使程序转至中断服务程序的入口地址。至中断服务程序的入口地址。上一页 下一页返回第一节第一节 中断系统中断系统3.中断处理中断处理在中断服务程序中,在中断服务程序中,CPU完成指定的任务。从中断服务程序完成指定的任务。从中断服务程序的第一条指令到返回指令为止,这个过程称中断处理或中断的第一条指令到返回指令为止,这个过程称中断处理或中断服务。服务。4.中断返回中断返回中断服务程序的最后一条指令必须是中断返回指令中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行
17、这条指令时,把响应中断时置位的优先级触发器复执行这条指令时,把响应中断时置位的优先级触发器复位,再从堆栈中弹出断点地址送入程序位,再从堆栈中弹出断点地址送入程序PC,以便从断点处重,以便从断点处重新执行被中断的主程序。新执行被中断的主程序。上一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用一、定时器功能概述一、定时器功能概述在工业检测、控制中,许多场合都要用到计数或定时功能。在工业检测、控制中,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数、产生精确的定时时间、作串行例如,对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发生器。口的波特率发生器。MCS-51单片机
18、内有两个可编程的定时单片机内有两个可编程的定时器器/计数器,以满足这方面的需要。它们具有两种工作模式计数器,以满足这方面的需要。它们具有两种工作模式及四种工作方式,其控制字均在相应的特殊功能寄存器中,及四种工作方式,其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,用户可方便地选择适当通过对它的特殊功能寄存器的编程,用户可方便地选择适当的工作模式和工作方式。作为基本组成内容,的工作模式和工作方式。作为基本组成内容,MCS-51单片单片机共有两个可编程的定时器机共有两个可编程的定时器/计数器,分别称定时器计数器,分别称定时器/计数器计数器0和定时器和定时器/计数器计数器1.它们
19、都是十六位加法计数结构,分别由它们都是十六位加法计数结构,分别由TH0和和TL0及及TH1和和TL1两个两个8位计数器组成。位计数器组成。下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用二、定时器二、定时器/计数器的控制寄存器计数器的控制寄存器MCS-51单片机内部的定时器单片机内部的定时器/计数器的结构如图计数器的结构如图4-3所示,所示,定时器定时器T0由特殊功能寄存器由特殊功能寄存器TL0(低(低8位)和位)和TH0(高(高8位)位)构成,定时器构成,定时器T1由特殊功能寄存器由特殊功能寄存器TL1(低(低8位)和位)和TH1(高(高8位)构成。特殊功能能寄存器位)构成。特
20、殊功能能寄存器TMOD用于控制定时寄用于控制定时寄存器的工作方式,存器的工作方式,TCON用于控制定时器用于控制定时器T0和和T1的启动和的启动和停止计数,停止计数,TCOM还用于管理定时器还用于管理定时器T0和和T1的溢出标志等。的溢出标志等。程序开始时需对程序开始时需对TL0、TH0、TL1和和TH1进行初始化编程,进行初始化编程,以定义它们的工作方式和控制以定义它们的工作方式和控制T0和和T1的计数器。的计数器。TMOD和和TCON这两个特殊功能寄存器的格式如下。这两个特殊功能寄存器的格式如下。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用定时器定时器/计数器的工
21、作方式控制字计数器的工作方式控制字TMOD,字节地址为,字节地址为89H;1.GATE门控位门控位GATE=0 以运行控制位以运行控制位TR0(TR1)启动定时器;)启动定时器;GATE=1 以外部中断请求信号(以外部中断请求信号(INT0和和INT1)启动定)启动定时器。时器。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用2.C/T定时方式或计数方式选择位定时方式或计数方式选择位C/T=0 定时工作方式;定时工作方式;C/T=1 记数工作方式。记数工作方式。3.M1M0工作方式选择工作方式选择M1M0=00 方式方式0;M1M0=01 方式方式1;M1M0=10 方式
22、方式2;M1M0=11 方式方式3;定时器控制寄存器定时器控制寄存器TCON,字节地址为,字节地址为88H,位地址为,位地址为88H8FH:上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用4.TF0(TF1)计数溢出标志计数溢出标志当计数器计数溢出时,该位置当计数器计数溢出时,该位置1.使用查询方式时,此位作状使用查询方式时,此位作状态位供查询,但应注意查询有效后应以软件方法及时将该位态位供查询,但应注意查询有效后应以软件方法及时将该位清清0;使用中断方式时,此位作中断标志位,在转向中断服;使用中断方式时,此位作中断标志位,在转向中断服务程序时由硬件自动清务程序时由硬件自
23、动清0.5.TR0(TR1)定时器运行控制位定时器运行控制位TF0(TF1)=0 停止定时器停止定时器/计数器工作;计数器工作;TF0(TF1)=0 启动定时器启动定时器/计数器工作;计数器工作;上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用三、工作方式三、工作方式通常,通常,MCS-51单片机有四种工作方式,如下:单片机有四种工作方式,如下:1.工作方式工作方式0定时器定时器/计数器计数器0(1)的工作方式是)的工作方式是13位计数结构的工作方位计数结构的工作方式,其计数器由式,其计数器由TH的全部的全部8位和位和TL的低的低5位构成,位构成,TL的高的高3位没有使用
24、。当位没有使用。当 时,多路开关接通振荡脉冲的时,多路开关接通振荡脉冲的12分频输出,分频输出,13位计数器依次进行计数,这就是定时工作方式;位计数器依次进行计数,这就是定时工作方式;当当 时,多路开关接通计数引脚(时,多路开关接通计数引脚(T0),外部计数),外部计数脉冲由引脚脉冲由引脚T0输入,当计数脉冲发生负跳变时,计数器加输入,当计数脉冲发生负跳变时,计数器加1,这就是我们常称的计数工作方式。这就是我们常称的计数工作方式。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用在工作方式在工作方式0下,计数器的计数范围是:下,计数器的计数范围是:18192(213)当为定
25、时工作方式时,定时时间的计算公式为:当为定时工作方式时,定时时间的计算公式为:(213-计数初值)计数初值)晶振周期晶振周期12或(或(213-计数初值)计数初值)机器周期,机器周期,其时间单位与晶振周期或机器周期相同。其时间单位与晶振周期或机器周期相同。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用2.工作方式工作方式1当当M1M0=01时,定时器时,定时器/计数器处于工作方式计数器处于工作方式1,方式,方式0和方式和方式1的区别仅在于计数器的位数不同,方式的区别仅在于计数器的位数不同,方式0为为13位,位,而方式而方式1则为则为16位,由位,由TH0作为高作为高8位
26、,位,TL0为低为低8位,有位,有关控制状态字(关控制状态字(GATE、TF0、TR0)和方式)和方式0相同。相同。在工作方式在工作方式1下,计数器的计数值范围是:下,计数器的计数值范围是:165536(216)上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用当为定时工作方式当为定时工作方式1时,定时时间的计算公式为:时,定时时间的计算公式为:(216-计数初值)计数初值)晶振周期晶振周期12或(或(216-计数初值)计数初值)机器周期,机器周期,其时间单位与晶振周期或机器周期相同。其时间单位与晶振周期或机器周期相同。3.工作方式工作方式2当当M1M0=10时,定时器时,
27、定时器/计数器处于工作方式计数器处于工作方式2.工作方式工作方式0和工作方式和工作方式1的最大特点就是计数溢出后,计数器全为的最大特点就是计数溢出后,计数器全为0,因而循环定时或循环计数应用时就存在反复设置初值的问题,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。这给程序设计带来许多不便,同时也会影响计时精度。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用工作方式工作方式2就是针对这个问题而设置的,它具有自动重装载就是针对这个问题而设置的,它具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重功能,即
28、自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式下,加载工作方式。在这种工作方式下,16位计数器分为两部分,位计数器分为两部分,即以即以TL0为计数器,以为计数器,以TH0作为预置寄存器,初始化时把计作为预置寄存器,初始化时把计数初值分别加载至数初值分别加载至TL0和和TH0中,当计数溢出时,不再像工中,当计数溢出时,不再像工作方式作方式0和工作方式和工作方式1那样需要那样需要“人工干预人工干预”,由软件重新赋,由软件重新赋值,而是由预置寄存器值,而是由预置寄存器TH以硬件方法自动给计数器以硬件方法自动给计数器TL0重新重新加载。加载。上一页 下一页返回第二节第二节 定
29、时器定时器/计数器及应用计数器及应用程序初始化时,给程序初始化时,给TL0和和TH0同时赋以初值,当同时赋以初值,当TL0计数溢计数溢出时,置位出时,置位TF0的同时把预置寄存器的同时把预置寄存器TH0中的初值加载给中的初值加载给TL0,TL0重新计数。如此反复,这样省去了程序不断需给重新计数。如此反复,这样省去了程序不断需给计数器赋值的麻烦,而且计数准确度也提高了。但这种工作计数器赋值的麻烦,而且计数准确度也提高了。但这种工作方式也有不利的一面,就是这样一来的计数结构只有方式也有不利的一面,就是这样一来的计数结构只有8位,位,计数值有限,最大只能到计数值有限,最大只能到255.所以这种工作方
30、式很适合于那所以这种工作方式很适合于那些重复计数的应用场合。些重复计数的应用场合。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用4.工作方式工作方式3当当M1M0=11时,定时器时,定时器/计数器处于工作方式计数器处于工作方式3.在工作方在工作方式式3模式下,定时器模式下,定时器/计数器计数器0和定时器和定时器/计数器计数器1的工作方式的工作方式不同,下面我们分别讨论。不同,下面我们分别讨论。在工作方式在工作方式3模式下,定时器模式下,定时器/计数器计数器0被拆成两个独立的被拆成两个独立的8位计数器位计数器TL0和和TH0.其中其中TL0既可以作为计数器使用,也既可以作
31、为计数器使用,也可以作为定时器使用,定时器可以作为定时器使用,定时器/计数器计数器0的各控制位和引脚符的各控制位和引脚符号全归它使用,其功能和操作与工作方式号全归它使用,其功能和操作与工作方式0或工作方式或工作方式1完全完全相同。相同。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用TH0就没有那么多就没有那么多“资源资源”可利用了,只能作为简单的定时可利用了,只能作为简单的定时器使用,而且由于定时器器使用,而且由于定时器/计数器计数器0的控制位已被的控制位已被TL0占用,占用,因此只能借用定时器因此只能借用定时器/计数器计数器1的控制位的控制位TR1和和TF1,也就是,
32、也就是以计数溢出去置位以计数溢出去置位TF1,TR1则负责控制则负责控制TH0定时的启动和定时的启动和停止。由于停止。由于TL0既能作为定时器也能作为计数器使用,而既能作为定时器也能作为计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在工作方只能作定时器使用而不能作计数器使用,因此在工作方式式3模式下,定时器模式下,定时器/计数器计数器0可以构成两个定时器或者一个可以构成两个定时器或者一个定时器和一个计数器。定时器和一个计数器。上一页 下一页返回第二节第二节 定时器定时器/计数器及应用计数器及应用如果定时器如果定时器/计数器计数器0工作于工作方式工作于工作方式3,那么定时器,那么定
33、时器/计数计数器器1的工作方式就不可避免的受到一定的限制,因为自己的的工作方式就不可避免的受到一定的限制,因为自己的一些控制位已被定时器一些控制位已被定时器/计数器借用,只能工作在工作方式计数器借用,只能工作在工作方式0、工作方式工作方式1和工作方式和工作方式2下。在这种情况下,定时器下。在这种情况下,定时器/计数器计数器1通常作为串行口的波特率发生器使用,以确定串行通信的通常作为串行口的波特率发生器使用,以确定串行通信的速率,因为已没有速率,因为已没有TF1被定时器被定时器/计数器计数器0借用了,只能把计借用了,只能把计数溢出直接送给串行口。当做波特率发生器使用时,只需设数溢出直接送给串行口
34、。当做波特率发生器使用时,只需设置好工作方式,即可自动运行。如果停止它的工作,需送入置好工作方式,即可自动运行。如果停止它的工作,需送入一个把它设置为工作方式一个把它设置为工作方式3的方式控制字即可,这是因为定的方式控制字即可,这是因为定时器时器/计数器本身就不能工作在工作方式计数器本身就不能工作在工作方式3,如硬把它设置为,如硬把它设置为工作方式工作方式5,自然会停止工作。,自然会停止工作。上一页返回第三节第三节 串行口通信系统串行口通信系统一、串行通讯的基本原理一、串行通讯的基本原理MCS-51单片机内部有一个全双工的串行通信口,即串行接单片机内部有一个全双工的串行通信口,即串行接收和发送
35、缓冲器(收和发送缓冲器(SBUF),这两个在物理上独立地接收发),这两个在物理上独立地接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为地址为99H。这个通信口既可以用于网络通信,亦可实现串。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准口的输入输出引脚上加上电平转换器,就可方便
36、地构成标准的的RS-232接口。接口。下一页返回第三节第三节 串行口通信系统串行口通信系统常用于数据通信的传输方式有单工、半双工、全双工和多工常用于数据通信的传输方式有单工、半双工、全双工和多工方式。单工方式:数据仅按一个固定方向传送。半双工方式:方式。单工方式:数据仅按一个固定方向传送。半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收种协议实现收/发开关转换。全双工方式:允许双方同时进发开关转换。全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复行数据双向传送,但一般全双工传输方式的线
37、路和设备较复杂。多工方式:以上三种传输方式都是用同一线路传输一种杂。多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分和码分复用技术,即可实器或多路集线器,采用频分、时分和码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。现在同一线路上资源共享功能,我们称之为多工传输方式。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统串行数据通信两种形式分为异步通信和同步通信。在异步通串行数据通信两种形式分为异步通信和同步通信。在异步通信方式中
38、,接收器和发送器有各自的时钟,它们的工作是非信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位。在同步通信格式中,发个起始位,仅接着是若干个数据位。在同步通信格式中,发送器和接收器由同一个时钟源控制,用于克服在异步通信中,送器和接收器由同一个时钟源控制,用于克服在异步通信中,没传输一帧字符都必须加上起始位和停止位,占用了传输时没传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传间,在要求传送数据量较大的场合,
39、速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。出一个同步头(字符)标志即可。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统二、二、MCS-51的串行口结构与控制寄存器的串行口结构与控制寄存器MCS-51单片机串行口寄存器只要有单片机串行口寄存器只要有SCON和和PCON。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通器,其中包含了接收器和发送器寄存器,可以实现全双工通信
40、。但这两个寄存器具有同一地址(信。但这两个寄存器具有同一地址(99H)。)。MCS-51的串的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数行数据传输很简单,只要向发送缓冲器写入数据即可发送数据,而从接收缓冲器读出数据即可接收数据。据,而从接收缓冲器读出数据即可接收数据。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统此外,接收缓冲器前还加上一级输入移位寄存器,此外,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠现象,以这种结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。发送数据时免出
41、错,部分文献称这种结构为双缓冲器结构。发送数据时就不需要这样设置,因为发送时,就不需要这样设置,因为发送时,CPU是主动地,不可能出是主动地,不可能出现这种现象。现这种现象。我们来分析串行通信控制寄存器,首先看我们来分析串行通信控制寄存器,首先看SCON控制寄存器,控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是单元地址是98H,其结构格式如下,其结构格式如下:上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统SM0、SM1:串行口工作方式控制位。串行口工作方式控制位。上一页 下一页返回第三节第三节 串行口
42、通信系统串行口通信系统SM2:多机通信控制位:多机通信控制位多机通信是工作于方式多机通信是工作于方式2和方式和方式3,SM2位主要用于方式位主要用于方式2和和方式方式3.接收状态,串行口工作于方式接收状态,串行口工作于方式2或方式或方式3,当,当SM2=1时,只有当接收到第时,只有当接收到第9位数据为位数据为1时,才把接收到的前时,才把接收到的前8位数位数据送入据送入SBUF,且置位,且置位RI发出中断申请,否则会将接受到的发出中断申请,否则会将接受到的数据放弃,当数据放弃,当SM2=02时,就不管第时,就不管第9位数据是位数据是0还是还是1,都使得数据送入都使得数据送入SBUF,并发出中断申
43、请。工作于方式,并发出中断申请。工作于方式0时,时,SM2必须必须0.REN:允许接收位。允许接收位。REN用于控制数据接收的允许和禁止,用于控制数据接收的允许和禁止,REN=1时,允许接时,允许接收,收,REN=0时,禁止接收。时,禁止接收。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统TB8:发送接收数据位:发送接收数据位8.在方式在方式2和方式和方式3中,中,TB8是要发送的第是要发送的第9位数据位。在多机位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的是地址或数通信中同样亦要传输这一位,并且它代表传输的是地址或数据,据,TB8=0为数据,为数据,TB8=1时为地
44、址。时为地址。RB8:接收数据位接收数据位8.在方式在方式2和方式和方式3中,中,RB8存放在接收到的第存放在接收到的第9位数据,用以位数据,用以识别接收到的数据特征。识别接收到的数据特征。TI:发送中断标志位。:发送中断标志位。可寻址标志位。方式可寻址标志位。方式0时,发送完第时,发送完第8章数据后,由硬件置位,章数据后,由硬件置位,其他方式下,在发送或停止位之前由硬件置位,其他方式下,在发送或停止位之前由硬件置位,TI=1表示表示帧发送结束,帧发送结束,TI可由软件清可由软件清“0”。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统RI:接收中断标志位。:接收中断标志位。可寻址
45、标志位。方式可寻址标志位。方式0时,接收完第时,接收完第8位数据后,由硬件置位,位数据后,由硬件置位,其他方式下,在接收或开始位之前由硬件置位,其他方式下,在接收或开始位之前由硬件置位,RI=1表示表示帧接收完成。帧接收完成。PCON主要是为主要是为CHMOS型单片机的电源控制而设置的专用型单片机的电源控制而设置的专用寄存器,单元地址是寄存器,单元地址是87H,其结构格式如下:,其结构格式如下:上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统在在CMOS型单片机中,除型单片机中,除SMOD位外,其他位均为虚设的,位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当是串行口波特率
46、倍增位,当SMOD=1时,串行口波时,串行口波特率加倍,系统复位默认为特率加倍,系统复位默认为SMON=0。ES为串行中断允许为串行中断允许控制位,控制位,ES=1允许串行口中断;允许串行口中断;ES=0,禁止串行中断。,禁止串行中断。三、三、MCS-51的串行工作方式的串行工作方式MCS-51共有四种串行通讯方式,其工作特性如下:共有四种串行通讯方式,其工作特性如下:上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统1.串行工作方式串行工作方式0串行口的工作方式串行口的工作方式0为移位寄存器输入输出方式,可外接移为移位寄存器输入输出方式,可外接移位寄存器,以扩展位寄存器,以扩展I/
47、O口,也可外接同步输入输出设备。当口,也可外接同步输入输出设备。当一个数据写入串行口发送缓冲器时,串行口即将一个数据写入串行口发送缓冲器时,串行口即将8位数据以位数据以fosc/12的固定波特率从的固定波特率从RXD引脚输出,低位在先。发送引脚输出,低位在先。发送完完8位数据置位数据置“1”中断标志位中断标志位TI。REN为串行口接收器允为串行口接收器允许接收控制位,许接收控制位,REN=0,禁止接收;,禁止接收;RNE=1,允许接收。,允许接收。当串行口置为方式当串行口置为方式0,并置,并置“1”REN位,串行口处于方式位,串行口处于方式0输入。引脚输入。引脚RXD位数据输入端,位数据输入端
48、,TXD为移位脉冲信号输出为移位脉冲信号输出端,接收器也以端,接收器也以fosc/12的固定波特率采样的固定波特率采样RXD引脚的数引脚的数据信息,当接收器接收到据信息,当接收器接收到8位数据时置位数据时置“1”中断标志中断标志RI。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统2.串行工作方式串行工作方式1方式方式1常用于串行发送或接收,为常用于串行发送或接收,为10位通用异步接口。位通用异步接口。TXD与与RXD分别用于发送与接收数据,收发一帧数据的格式为:分别用于发送与接收数据,收发一帧数据的格式为:1位起始位、位起始位、8位数据位(低位在前)、位数据位(低位在前)、1位停
49、止位,共位停止位,共10位。位。在接收时,停止位进入在接收时,停止位进入SCON的的RB8,此方式的传送波特率,此方式的传送波特率可调。方式可调。方式1发送时,数据从引脚发送时,数据从引脚RXD(P3.1)端输出,当)端输出,当执行数据写入发送缓冲器执行数据写入发送缓冲器SBUF的命令时,就启动了发送器的命令时,就启动了发送器开始发送。方式开始发送。方式1接收时,数据从引脚接收时,数据从引脚RXD(P3.0)端输入。)端输入。接收是在接收是在SCON寄存器中寄存器中REN位置位置1的前提下,并检测到起的前提下,并检测到起始位而开始的。接收时,定时信号有两种:一种是接收移位始位而开始的。接收时,
50、定时信号有两种:一种是接收移位时钟(时钟(RX时钟),另一种是位检测器采样脉冲。时钟),另一种是位检测器采样脉冲。上一页 下一页返回第三节第三节 串行口通信系统串行口通信系统3.串行工作方式串行工作方式2方式方式2是是11位为一帧的串行通信方式,即位为一帧的串行通信方式,即1个起始位,个起始位,9个数个数据位和据位和1个停止位。在方式个停止位。在方式2下,字符还是下,字符还是8个数据位,第个数据位,第9数据位既可作奇偶校验位使用,也可作控制位使用,其功能数据位既可作奇偶校验位使用,也可作控制位使用,其功能由用户确定,发送之前应先在由用户确定,发送之前应先在SCON的的TB8位中准备好。方位中准