单片机原理第四章输入输出中断定时与串行通信课件_第1页
单片机原理第四章输入输出中断定时与串行通信课件_第2页
单片机原理第四章输入输出中断定时与串行通信课件_第3页
单片机原理第四章输入输出中断定时与串行通信课件_第4页
单片机原理第四章输入输出中断定时与串行通信课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 输入/输出、中断、定时与串行通信 4.1 I/O概述 4.2 MCS-51单片机的中断系统 4.3 定时器/计数器 4.4 单片机串行通信 4.5 PC机与单片机的通信本章内容提要 介绍I/O的基本概念、I/O数据传递方式,中断的基本概念,串行通信基本概念。主要介绍单片机中断系统结构、特点及使用方法;片内定时器/计数器结构、原理及使用;片内串行口结构、原理以及双机和多机通信实现方法;PC机与单片机通信实现方法。4.1 I/O概述4.1.1 I/O的概念 在单片机内部结构中,除了CPU之外,单片机集成有内部数据寄存器、程序存储器、定时器/计数器、并行I/O口、串行口、中断控制系统等。CP

2、U通过内部总线与片内的I/O连接,通过片内I/O,单片机可与外设或单片机系统交换信息。此外,单片机可以由P0、P2和P3口构成外部总线,扩展外部I/O,构成更加复杂的系统,满足实际应用的需求。 1. 接口与端口 接口是CPU与外设之间交换信息的连接部件,也称为接口电路。接口电路通常包含有数据寄存器用来保存输入/输出数据、状态寄存器保存接口的状态信息、控制寄存器保存单片机的控制命令等。数据的I/O操作通过数据寄存器的操作完成。 通常接口电路中可编址并能进行读写操作的寄存器称为端口或简称口。一个接口电路中可能包括多个口,例如数据口、状态口、控制口,即包含有多个口地址。同一单片机系列中,片内集成的I

3、/O模块各有不同,当片内I/O不能满足实际需求时,可扩展外部I/O。 2. I/O的分类 按照信号的传递方式,可将I/O分为串行和并行两类。 按照I/O连接的信号大致可分为模拟量、数字量、脉冲量I/O三类。 3. 数据总线隔离技术 为了正确地进行数据的I/O传递,必须解决数据总线的隔离问题,即在任一时刻,CPU只对一个I/O进行操作。为此,对输出设备的接口电路要使用锁存器,对输入设备的接口电路,使用三态缓冲器。 4 单片机I/O编址方式 每一个I/O都需要编址,以便CPU分别进行寻址。常用的I/O编址方式有两种:独立编址方式和统一编址方式。 独立编址方式: I/O和存储器分开编址,有各自独立的

4、地址空间,采用不同的控制总线,使用不同的指令分别寻址。 统一编址方式: I/O与数据存储器在同一地址空间编址,寻址方式相同,采用相同的地址、数据、控制总线,使用相同的指令寻址。 4.1.2 输入/输出的传递方式 单片机系统中有不同类型的I/O,由于I/O所连接的外设或I/O接口本身的速度与CPU的处理速度相比,通常低于CPU的速度,为了实现数据的正确传输,CPU通常采用三种控制方式,即无条件传送方式、查询方式和中断控制方式。 1. 无条件传送方式 I/O或与I/O连接的外设随时都处于准备好状态,这时CPU不需要测试外设状态,随时直接对其进行操作。 2. 查询方式 I/O接口或外设的状态以适当的

5、方式输入CPU,CPU通过对状态信号的查询,在判别外设准备好之后,对其进行输入/输出操作。 查询方式的特点:实现简单,通用性强,适合各种设备数据的输入/输出;其缺点是需要占用CPU的时间,外设速度较慢时,效率较低。 图4.1 查询方式流程图 4.2 MCS-51单片机的中断系统 中断是一项重要的计算机技术。当CPU正在处理某件事时,外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件。处理完后再回到原来被中断的位置,继续原来的工作,这一过程称为中断,实现这种功能的部件称为中断系统。当多个中断源同时向CPU申请中断时,CPU将根据每个中断源的优先级,优先响应级别最高的中断请求

6、。 当中断系统有多个中断优先级时,CPU暂停较低级的中断服务程序,转而处理优先级更高的中断请求源,处理完后再处理较低级的中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统。 51系列单片机的中断系统有5个中断源:2个外部中断源、2个定时器中断源和一个串行口中断源,具有两个中断优先级,可实现两级中断服务程序嵌套。 图4.2 二级中断嵌套 4.2.1 中断系统的结构 单片机中断控制系统的结构如图4.3,中断控制系统由中断源、中断选择、中断标志、中断允许寄存器(中断源允许、全局中断允许)、中断优先级寄存器和查询电路组成。 图4.3 中断控制系统的结构 TCON每一位的功能如下: (

7、1) IT0(TCON.0)和IT1(TCON.2):外部中断中断触发方式控制位。IT0(IT1)=0,电平触发方式,低电平触发;IT0(IT1)=1,脉冲触发方式,下降沿触发。 (2) IE0(TCON.1)和IE1(TCON.3):外部中断请求标志位。IE0(IE1)=0,无中断请求;IE0(IE1)=1,有中断请求。当中断触发信号为下降沿有效时,IE0(IE1)由硬件置位为“1”,中断响应时,硬件自动复位为“0”;电平触发方式下,IE0(IE1)标志由外部触发信号控制,不由片内硬件控制。当中断触发信号为低电平信号时,IE0(IE1)=1,当中断触发信号为高电平信号时,IE0(IE1)=0

8、。 (3) TF0(TCON.5)和TF1(TCON.7):定时器/计数器0和定时器/计数器1溢出中断请求标志位。TF0(TF1)=0,无中断请求;TF0(TF1)=1,有中断请求。当定时器/计数器0 (定时器/计数器1)溢出时,硬件置位TF0(TF1)=1,中断响应时片内硬件自动复位TF0(TF1)=0。查询TF0(TF1)时,需用软件复位TF0(TF1)=0。 (4) TR0(TCON.4)和TR1(TCON.6):定时器/计数器0和定时器/计数器1运行控制位。TR0(TR1)=0,关闭定时器/计数器;TR0(TR1)=1,打开定时器/计数器 。 2. 中断允许寄存器IE 中断允许寄存器I

9、E为两级允许控制(如图4.3所示):第一级为局部中断允许,可选择某个或几个中断源允许中断,第二级为全局允许。只有当全局中断允许有效时,局部中断允许的中断信号才可以申请中断。IE在特殊功能寄存器中,可位操作。字节地址为0A8H,位地址由低位到高位为A8HAFH。IE的格式如下: IE寄存器的每个位信号定义为: (1) EX0(IE.0)和EX1(IE.2):外部中断允许控制位。EX0(EX1)=0,外部中断禁止;EX0(EX1)=1,外部中断允许。 (2) ET0(IE.1)和ET1(IE.3):定时器/计数器0和定时器/计数器1中断允许控制位。ET0(ET1)=0,定时器/计数器禁止中断;ET

10、0(ET1)=1,定时器/计数器允许中断。 (3) ES(IE.4):串行口中断允许控制位。ES=0,串行口禁止中断;ES=1,串行口允许中断。 (4) EA(IE.7):全局中断允许控制位。EA=0,禁止全局中断;EA=1,允许全局中断。 (5) IE.5、IE.6:保留位。 3. 串行口控制寄存器SCON 串行口控制寄存器SCON在特殊功能寄存器中,可位操作。字节地址为98H,位地址由低位到高位为98H9FH。SCON的格式如下: 与中断有关的控制位有2位: (1) RI(SCON.0):串行口接收中断标志位。当接收完一帧数据后,由硬件置位为“1”。中断响应后,在中断服务程序中须用软件复位

11、为“0”。 (2) TI(SCON.1):串行口发送中断标志位。当发送完一帧数据后,由硬件置位为“1”。中断响应后,在中断服务程序中须用软件复位为“0”。 4. 中断优先级控制寄存器IP 每个中断源有两个优先级,可用程序对中断优先级控制寄存器IP的控制位置位或复位来选择。特殊功能寄存器IP的字节地址为B8H,位地址由低位到高位为B8HBFH。IP的格式如下: 与中断优先级有关的控制位有5位: (1) PX0(IP.0)和PX1(IP.2):外部中断0和外部中断1中断优先级控制位。PX0(PX1)=0,低优先级;PX0(PX1)=1,高优先级。 (2) PT0(IP.1)和PT1(IP.3):定

12、时器/计数器0和定时器/计数器1中断优先级控制位。PT0(PT1)=0,低优先级;PT0(PT1)=1,高优先级。 (3) PS(IP.4):串行口中断优先级控制位。PS=0,低优先级;PS=1,高优先级。 (4) IP.5IP.7:保留位。 51系列单片机中,两个优先级的结构可实现中断嵌套服务,中断优先级的控制原则: (1) 高优先级中断请求可以打断低优先级中断服务形成中断嵌套 (2) 同级中断之间不能形成中断嵌套 (3) 同级中断源有多个同时向CPU请求中断时,CPU的响应顺序为:外部中断0定时中断0外部中断1定时中断1串行口中断 4.2.2 中断系统的初始化与中断控制寄存器的设置 中断控

13、制系统中,系统上电或复位时,控制寄存器均被复位,所有中断均被禁止。因此,用户需根据自己的需要对上述4个控制寄存器赋值,即通过程序对中断系统进行初始化设置,以便使用中断系统。例如,外部中断初始化包括:外部中断触发方式设定、外部中断允许、全局中断允许,以及中断优先级控制。假设对外部中断0的初始化使用如下指令: MOVIE,#81H 或使用位操作指令: SETBEA SETBEX0 则结合复位时控制寄存器的状态,外部中断0被设置为低电平触发的低级中断源。4.2.3 中断响应过程 1. 中断采样 单片机在每个机器周期的S5P2对中断标志进行采样,在下一个机器周期根据优先级顺序查询中断标志。如果中断标志

14、在前一个机器周期的S5P2被置位,则后一个周期中断系统就可以发现这个中断请求信号。 外部中断源为脉冲触发时,若INT0(INT1)管脚在一个机器周期为高电平,另一个机器周期为低电平,则TCON寄存器的中断请求标志IE0(IE1)将置位,标志位IE0(IE1)请求中断。由于外部中断管脚每个机器周期采样一次,因此,管脚上的高电平和低电平至少都要持续一个机器周期以上,以保证下降沿被采样到。 2. 中断响应 中断系统查询到有中断请求时,如果处于以下情形,系统将阻止长调用LCALL指令的执行而不运行中断服务程序 : (1) 同级或高优先级的中断响应正在执行中 (2) 正在执行的指令未到指令最后一个周期,

15、即当前指令未执行完 (3) 当前指令是RETI或访问IE、IP寄存器 条件(2)保证在得到中断向量之前,运行指令必须完整执行。条件(3)保证执行RETI或访问IE、IP寄存器后,至少还要执行一条指令才能响应中断。在上述情形之外,当CPU查询到有效中断请求时,系统硬件将产生一条长调用指令LCALL,即将程序计数器值PC压入堆栈,把相应的中断入口地址装入PC,转到相应中断服务程序中去执行。各中断源的入口地址是: 由于各中断入口地址之间仅相隔8个字节,不能存储较长的中断服务程序,通常在中断入口地址开始的单元中,安排一条转移指令,转移到相应中断源的中断服务程序中。 3. 中断响应时间 外部中断电平有效

16、时,在机器周期的S5P2采样后锁存到IE0(IE1),IE0(IE1)在下一个机器周期由电路查询,如果中断请求立刻响应,则中断服务程序成为下一条执行的指令。长调用指令自身需要2个机器周期,因此,从外部中断触发到中断服务程序第一条指令开始执行最少需要3个完整的机器周期。 当前面所述的三个条件不满足,则中断响应需要更长的时间。如果指令是RETI或对寄存器IE和IP操作,则附加的等待时间不会多于5个周期,即最多一个周期完成当前指令,下一条指令为MUL或DIV再加4个周期。所以,一个中断发生时,中断响应时间为38个周期。 4. 中断请求的撤销 中断请求标志在中断响应后应当清除,以免一次中断申请被多次重

17、复查询和响应。 串行口中断请求标志需要在中断服务程序中用软件清除,定时器和外部中断的中断标志在响应后硬件自动复位清除。但外部中断为电平触发时,如果中断响应后, 管脚仍为低电平,则会重新置位中断请求,为此可以在系统中增加辅助电路解决。 图4.4 电平方式外部中断请求的撤销电路 4.3 定时器/计数器 定时器/计数器通常用于定时采样、顺序控制、数字时钟等。51系列单片机有两个16位的定时器/计数器:T0和T1。T0由两个8位的定时寄存器TH0和TL0构成16位寄存器,同样,T1由两个8位的定时寄存器TH1和TL1构成16位寄存器,它们分别映射在特殊功能寄存器中。TH0、TL0的地址分别为8CH、8

18、AH,TH1和TL1的地址分别为8DH和8BH。(1)定时功能,定时寄存器每个机器周期自动加1,可以看作是机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以计数频率为振荡频率的1/12。(2)计数功能,定时寄存器在单片机外部引脚T0或T1有“1”到“0”的跳变时自动加1。外部输入在每个机器周期的S5P2被采样,当前一个机器周期采样为高电平,后一个机器周期采样为低电平时,计数器在下一个机器周期S3P1进行计数。由于一个下降沿的识别需要2个机器周期,故计数器最高计数频率为振荡频率的1/24。4.3.1 工作方式 无论作为定时器还是计数器,T0和T1都有4种工作方式:方式0、方式1、方式2

19、和方式3。其中,T0和T1的前三种工作方式相同,方式3不同。下面以定时/计数器1为例分述四种工作方式的特点和用法。 1方式0 13位计数方式。在方式0中,时间寄存器配置为13位寄存器,是为与MCS-48兼容而设置,由TH1的全部8位和TL1的低5位构成,TL1的高三位弃之不用,当寄存器中所有13位中的全“1”翻转为“0”时,设置定时器中断标志TF1。图4.5是定时器/ 计数器1在工作方式0的逻辑结构图。 图4.5 定时器/计数器1方式0:13位计数器 C/T:定时/计数选择,由定时器工作方式特殊功能寄存器TMOD的位设置选择 C/T=0,T1为定时器,计数器对机器周期进行计数实现定时 C/T

20、=1,T1为计数器,计数来自引脚T1的外部脉冲数 定时器/计数器是否启动受TR1、GATE和 引脚的控制,GATE和TR1由定时器工作方式控制寄存器TMOD和控制寄存TCON中相应的位状态确定。由图4.5中的逻辑电路可知:要启动定时/计数器,必须TR1=1,同时GATE=0或 引脚=1。通常设置GATE=0,用TR1的状态控制T1的工作。 当GATE=1,TR1=1时,T1能否计数由引脚的输入状态控制,可以对INT1输入高电平脉冲宽度进行测量。 3工作方式2 8位计数器带时间常数自动重装功能。如图4.7。 工作方式2与工作方式0、1的功能相同,只是由TL1构成8位计数器,TH1用来存放时间常数

21、。 图4.7 定时器/计数器1方式2:8位自动重装 启动时,TL1和TH1均装入相同的时间常数,当TL1计数器溢出时,中断标志TF1置“1”,同时,控制将TH1中的时间常数重新装入TL1中。与方式0和方式1相比,方式2采用的硬件重装时间常数,提高了定时精度,操作简便。缺点是定时/计数范围较小 。4工作方式3 当T0为工作方式3时,TL0和TH0分别作为两个独立的8位计数器,其硬件逻辑框图如图4.8。TL0既可作定时器也可作计数器,并使用定时器0的控制位:C/T、GATE、TR0、 和TF0。TH0锁定为定时器功能,并使用定时器1的控制位TR1和TH1,这时,TH0控制了“定时器1”的中断。 图

22、4.8 定时器/计数器0方式3:两个8位计数器 当定时器0工作于方式3时,单片机可看作有3个定时/计数器,这时定时器1只能工作于方式0、1或2,并且可以通过设置它是否为工作方式3来控制其计数器的启动和停止。由于这时的定时器1的中断请求标志已被定时器0占用,因而定时器1不能产生中断请求,故一般用于不要求产生中断的串行口的波特率发生器。 4.3.2 定时器/计数器控制寄存器 1定时器控制寄存器TCON TCON寄存器既参与中断控制又参与定时控制。定时器通过设置控制TR位的状态控制定时器/计数器的启、停。TF标志定时/计数器是否溢出而请求中断。 2工作方式控制寄存器TMOD TMOD在特殊功能寄存器

23、中,字节地址89H,不能位寻址。TMOD的格式为: TMOD的高4位用于T1,低4位用于T0,符号的定义如下: (1) GATE:门控位。GATE和软件控制位TR、外引脚( )的状态,共用控制定时器/计数器的启动和停止。(2) C/T:定时/计数器方式选择位。 C/T 1为计数方式; C/T 0为定时方式。(3) M1 M0:工作方式选择位。 M1 M000;方式0 M1 M001;方式1 M1 M010;方式2 M1 M011;方式3。 3定时/计数器初值的求取 51系列单片机定时器/计数器采用增量式计数,其内部的计数器在定时器方式下对机器周期加“1”计数,在计数器方式下对外部引脚上的脉冲计

24、数,计数器加满回零溢出时,置中断请求标志TF。在不同的工作方式下,定时器/计数器初值的计算方法基本相同,只是采用了不同长度的计数器,设置时间常数时略有不同。 方式0,计数范围:18192(213)定时工作方式时,定时时间=(213-计数初值)晶振周期12 或 定时时间=(213-计数初值)机器周期 例4.1设单片机晶振频率fosc=6MHz,用定时器1以方式0、查询方式产生周期为500s的等宽方波脉冲,由P1.0输出。 (1) 确定计数初值X本题可在P1.0以250s交替输出高、低电平实现所需的脉冲,定时时间为250s。晶振频率6MHz对应的机器周期为2s。则:(213-X)210-6=250

25、10-6 求得X=8067对应二进制X=1111110000011。高8位放入TH1,即TH1=11111100=FCH;低5位放入TL1,即TL1=00011=03H。 (2) 寄存器初始化 包括定时器初始化和中断系统初始化,主要对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器。本例中,IE、TCON、TMOD均应初始化为00H。 (3) 程序设计本例假设系统是从复位开始运行,则IE、TCON、TMOD均不需要操作。MOVTH1, #0FCH;T1置初值MOVTL1, #03HSETBTR1;启动T1LOOP:JBCTF1, LOOP1;T1溢出转LOOP1 S

26、JMPLOOP;T1未溢出,继续查询LOOP1:MOVTH1, #0FCH;T1重新置初值MOVTL1, #03HCLRTF1 ;清T1溢出标志位CPLP1.0;输出取反SJMPLOOP;继续查询(3) 程序设计本例假设系统是从复位开始运行,则IE、TCON、TMOD均不需要操作。MOVTH1, #0FCH;T1置初值MOVTL1, #03HSETBTR1;启动T1LOOP:JBCTF1, LOOP1;T1溢出转LOOP1 SJMPLOOP;T1未溢出,继续查询LOOP1:MOVTH1, #0FCH;T1重新置初值MOVTL1, #03HCLRTF1 ;清T1溢出标志位CPLP1.0;输出取反

27、SJMPLOOP;继续查询方式1,计数范围:165536(216)定时工作方式时,定时时间=(216-计数初值)晶振周期12 或 定时时间=(216-计数初值)机器周期 4.4 单片机串行通信 本节在介绍串行通信基础知识之后,介绍单片机串行口的结构、特点、工作方式以及单片机双机、多机、单片机与PC机之间的通信技术。 4.4.1 串行通信基础 通常把计算机与外界的数据传输称为通信,计算机的数据通信方式有两种:并行通信和串行通信。 并行通信是将数据以成组的方式在两条以上的并行通道上传输。它可以同时传输一组数据位,每个数据位使用单独的一条导线。因此,并行通信的物理信道为并行内总线或并行外总线。并行通

28、信的特点是:硬件上有多根数据线,各数据位同时传送,速度快,效率高,传送距离通常小于30米。如计算机和外围设备之间的通信,CPU、存储器模块和设备控制器之间的通信等。 串行通信中,数据流以串行方式逐位地在一条信道上传输,每次只能发送或接收一个数据位。串行通信的特点是:硬件上最少只需要一对传输线即可完成,数据传送按位进行,适用于数据位数多、远距离传输场合。串行通信使得设备之间的连线大为减少,但也带来了数据的串/并转换、并/串转换以及位计数等问题。 串行通信有两种基本通信方式:同步通信和异步通信。 1. 串行异步通信帧格式 异步串行通信以字符为单位,以相同的帧格式传送。每一帧信息由起始位,数据位,奇

29、偶校验位和停止位组成。如图4.9所示。 图4.9 串行异步通信帧格式(1) 起始位。通信线在没有数据传输时处于逻辑“1”状态,当发送器要发送一个字符的数据时,首先发送一个逻辑“0”信号,表示其后所传输的为数据。起始位表示字符传输开始。(2) 数据位。起始位之后为数据位。数据位的个数是5、6、7或8位,低位在前,高位在后。(3) 奇偶校验位。奇偶校验用于有限差错检测,是通信双方约定一致的检错方式。奇偶校验位为冗余位,可由用户根据需要选择使用。(4) 停止位。在奇偶位或数据位(当无奇偶校验时)之后是停止位。可以是1位、 位或2位,表示一个字符传输的结束。在发送的间隙,即空闲时,通信线路总处于逻辑“

30、1”状态。 3波特率 通信线上的数据按位传送,每一位量度(位信号持续时间)由数据传送速率决定。每秒传送的位数量称之为波特率(baud rate)。如每秒传送一位就是1波特,即: 1波特1位/秒(1bps) 串行通信中常用的标准波特率有:600、1200、2400、4800、9600、19200等。 4.4.2 EIA-232-D接口标准 EIA-232-D是由美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机之间、计算机与外设之间的数据通信。EIA-232-D总线接口适用于设备之间距离不大于15米,传输速度最大20kb/s。 1EIA-232-D信号引脚定义

31、EIA-232-D定义了22根线,采用标准25芯 (DB-25) 插头座,在EIA-232中描述的连接器还有DB-9。如表4.1和4.2所示。 2电气特性 EIA-232-D采用负逻辑,即:逻辑“1”:-3V-15V 逻辑“0”:+3V+15V EIA-232-D的逻辑电平与TTL电平不兼容,为了与TTL器件相连必须进行电平转换。 3. EIA-232-D端口的直接连接 两台计算机可通过调制解调器(Modem),由电话线连接实现长距离通信。在工业数据通信中,常直接将两台计算机的EIA-232端口连接。在通信过程中,不需要握手时,只需要3根连接线,DB-9连接器的接线如图4.13(a)所示。在需

32、要握手时,还需要将请求发送、允许发送、准备就绪等信号端形成如图4.13(b)所示的交叉连接形式。 (a) 无握手 (b) 全握手 图4.13 EIA-232端口的直接连接 4.4.3 MCS-51单片机串行口 MCS-51单片机内部有一个全双工的串行口,有两个独立的接收、发送缓冲器SBUF(地址都是99H,属于特殊功能寄存器),可同时发送和接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,用读、写指令加以区分。由于串口接收部分由输入移位寄存器和接收缓冲器构成双缓冲结构,所以在接收缓冲器读出数据之前,串行口可以开始接收第二个字节。但是如果第二个字节已接收完毕时,第一个字节还没有读

33、出,则将丢失其中一个字节。MCS-51串行口除了用于数据通信之外,还可以非常方便地构成一个或多个并行输入/输出口,或作为串并转换,用来驱动键盘或显示器。 1串行口控制寄存器 串行口有四种工作方式,串行口的控制寄存器有两个,即特殊功能寄存器SCON和PCON。(1)串行口控制寄存器SCON SCON为特殊功能寄存器,字节地址为98H,可位寻址,位地址从98H到9FH,SCON的格式为: SCON控制寄存器的定义: SM0、SM1:控制串行口工作方式。定义如表4.3 表4.3 串行口工作方式 SM2:为多机通信设置的控制位,允许工作在方式2和方式3的单片机实现多机通信。在工作方式2或方式3,若SM

34、2=1,当接收到的第9位数据(RB8)为0时,RI=0,接收的数据丢弃; 当RB8=1时,置RI1,接收数据有效。在工作方式1,若SM21,当接收有效停止位时,置RI1,数据有效;没有接收到有效停止位时,RI0,数据无效。在方式0时,SM2应为0。 REN:接收允许控制位。通过软件置“1”/清零使得串行口允许/禁止接收数据。 TB8:在方式2和方式3中要发送的第9数据位,可根据需要置“1”或清零。 RB8:在方式2和方式3中接收的第9数据位。在方式1,SM2=0,RB8 接收的是停止位。在方式0,RB8不用。 TI:发送中断标志。在串行发送时,在方式0发送完第8位数据时由硬件置位TI, 在其他

35、方式下,开始发送停止位时硬件置位TI。必须由软件清零。 RI:接收中断标志。在串行接收(不考虑SM2)时,在方式0接收完第8位数据时由硬件置位RI, 在其他方式下,接收停止位中硬件置位RI。必须由软件清零。 (2)电源控制寄存器PCON PCON其字节地址为87H,无位地址。其中与串行口有关的只有D7位。 SMOD:波特率加倍位。在计算串行方式1、2、3的波特率时,SMOD0,波特率不加倍;SMOD1,波特率加倍。 2串行口工作方式 (1) 方式0在方式0下,串行口为同步移位寄存器方式,波特率固定,为fosc/12。数据由RxD(P3.0)端出入,同步移位脉冲由TXD(P3.1)端输出,发送、

36、接收都是8位数据,低位在前,高位在后。图4.14为串行口在方式0下的功能框图。 图4.14 串行口在方式0下的功能框图 发送阶段CPU在S6P2时刻向缓冲器SBUF写操作时,“1”被装入发送移位寄存器的第9位,并告之发送控制模块开始发送。当写有效后,相隔一个机器周期发送控制端SEND有效(高电平),允许移位寄存器的输出从RxD(P3.0)引脚发送,同时允许移位时钟SHIFT CLOCK从TxD(P3.1)引脚输出。每个机器周期的S6P2时刻,SEND有效时,发送移位寄存器向右移一位。每向右移一位,从左边向最高位移入一个“0”位。当数据的最高位到达移位寄存器的输出位后,最初装入在第9位的“1”移

37、到了最高位的左边,并且其左边所有的位都为“0”,这一条件标志发送控制模块在将最高位移出后将使SEND无效,并置TI=1。 接收的初始化的条件为:REN=1和RI=0。在下个周期S6P2时刻,接收控制单元将11111110写入接收移位寄存器,相隔一个机器周期使接收控制RECEIVE有效。RECEIVE允许移位时钟SHIFT CLOCK从TxD(P3.1)引脚输出,当RECEIVE有效时,每个机器周期的S6P2时刻,接收移位寄存器的内容左移一位,右边进来的值是S5P2 时刻从P3.0引脚采样的值。当初始化装入的值11111110左边的“1”逐步移出,“0”到达移位寄存器的最左边时,标志着接收控制模

38、块再作最后一次左移,并将移位寄存器的结果装入SBUF,在第10个机器周期置RI=1,使RECEIVE无效。 图4.15为相应的时序。在方式0中,SCON中的TB8位没有用,SM2位(多机通信控制位)必须为“0”,由TI和RI标志向CPU申请中断,CPU需通过TI和RI标志位判断是发送还是接收中断,因而不通过硬件清零,在程序中用指令清零。 图4.15 串行口在方式0下发送、接收时序图 (2) 方式1 当SM0 SM1=01时,串行口工作在方式1,为8位异步通信接口,一帧的信息为10位,通过TxD发送或RxD接收:1位起始位、8位数据位(低位在前)和1位停止位。在接收时,停止位进入SCON的RB8

39、。波特率由定时器1的溢出率决定。 与方式0相似,发送阶段CPU向SBUF写数据的同时将“1”装入发送移位寄存器的第9位,并向发送控制单元标志请求发送。发送由SEND控制信号有效,并将起始位发送到TxD开始。一个位时间之后,数据有效,允许移位寄存器的输入位发送到TxD。当最后一位发送完,发送控制单元使SEND无效,在计数的第10次翻转时置TI1。图4.16为串行口在方式1下的功能框图。 图4.17为串行口在方式1下发送和接收相应的时序图。当检测到RxD引脚发生“1”到“0”跳变时启动接收,接收控制器以16倍波特率速率对RxD引脚采样,同时计数器立刻复位,并将1FFH写入输入移位寄存器。每个位时间

40、被16等分,在第7、8、9时刻对RxD的位信息进行采样,将其中两次以上相等的值作为采样值,以防止噪声干扰。若第一位采样值不是“0”,则不是起始位,接收电路复位,控制电路重新检测下一个“1”到“0”的跳变;若是起始位,则将其移位进入移位寄存器,并接收本帧的其他信息。 图4.16 串行口在方式1下的功能框图 图4.17串行口在方式1下发送、接收时序图 数据位从右边进入,“1”从左边移出。当起始位到达移位寄存器的最右边时(方式1是9位寄存器),接收控制单元需再作最后一次移位。只有当最后一次移位时,如果同时满足以下条件: RI=0 SM2=0或收到的停止位为“1” 则接收的数据有效,8位数据装入SBU

41、F,停止位进入RB8,置RI=1。接收控制器再次采样RxD引脚的负跳变。如果上述条件之一不满足,接收的信息将丢弃。(3) 方式2 当SM0 SM1=10时,串行口工作在方式2,为9位异步通信接口。一帧的信息为11位,通过TxD发送或RxD接收:1位起始位、8位数据位、1位可编程第9数据位和1位停止位。发送时,第9数据位TB8根据需要设置为“0”或“1”。TB8既可作为多机通信中的地址、数据标志位,又可作为数据的奇偶校验位;在接收时,第9数据位进入SCON的RB8。 方式2发送:数据由TxD输出,附加的第9位数据为SCON中的TB8。当CPU执行写SBUF指令后,发送随着SEND信号有效开始,送

42、完一帧信息后,使SEND无效并置TI=1。图4.18为串行口在方式2下发送和接收相应的时序图。 图4.18 串行口在方式2下发送、接收时序图 下面是一个发送中断服务程序,TB8为奇偶校验位,R0为发送数据区地址指针。SEND:PUSHPSW;保护现场PUSHACLRTI;发送中断标志位清零MOVA, R0;取数据MOVC, P;奇偶位送TB8MOVTB8, CMOVSBUF, A;数据写入发送缓冲器,启动发送INCR0;数据指针加1POPA;恢复现场POPPSWRETI;中断返回方式2接收:当REN=1时,与方式1相同,检测到RxD引脚发生“1”到“0”跳变时启动接收,采样到起始位后,数据位依

43、次进入移位寄存器,当最后一位数据进入移位寄存器时,只有以下两个条件同时满足:RI=0SM2=0或收到的第9位数据为“1”则接收的数据有效,接收控制块控制8位数据装入SBUF,第9位数据进入RB8,并置RI=1。如果上述条件之一不满足,则将接收的数据丢弃。 下面是一个接收中断服务程序实例,程序有奇偶校验,R1为接收数据缓冲区地址指针。RECEIVE:PUSHPSW;保护现场PUSHACLRRI;接收中断标志位清零MOVA, SBUF;接收数据MOVC, P;取奇偶位JNCL1;JNBRB8, ER;奇偶校验错则转错误处理SJMPL2;奇偶校验转L2 L1:JBRB8, ER;奇偶校验错则转错误处

44、理L2:MOVR1, A;接收数据存数据缓冲器INCR1;数据指针加1POPA;恢复现场POPPSWLJMPENDER:;错误处理(略)END:RETI (4) 方式3 当SM0 SM1=11时,串行口工作在方式3,为波特率可变的9位异步通信方式。除波特率可变之外,方式3与方式2相同。 3串行口通信波特率的设置 方式0:波特率=系统振荡频率fosc/12 方式2:波特率=2SMOD fosc/64 方式1、3:波特率=2SMOD 定时器1的溢出率/32 作为波特率时,定时器1不允许中断,典型的应用是工作在定时器方式,时间常数自动重装,这时的波特率计算公式为: 例如,系统时钟频率fosc=6MH

45、z,当SMOD=1,波特率选择为2400时,时间常数为: 定时器初始化程序如下: MOVTMOD,#20H;定时器T1方式2,定时方式MOVTH1,#0F3H;置时间常数MOVTL1,#0F3HMOVPCON,#80H;SMOD=1 MOVSCON,#50H;串行口工作方式1SETBTR1;启动定时器T1 4双机通信程序举例 例4.3设甲、乙两单片机时钟频率为6MHz,通信波特率为2400,甲发送数据,已接收数据。开始通信时,由甲发送呼叫信号“00”,询问乙是否可以接收数据。乙收到呼叫信号后,如同意接收数据则发送“00”给甲,否则发送“FF”暂不接收数据。甲收到乙回复信号,如果是“00”,向乙

46、发送数据;如果是“FF”,则继续向乙呼叫,直到收到“00”并发送数据。发送数据格式为: 累计校验和为字节数、数据1,数据n,这(n+1)个字节内容的和。乙机根据接收到的校验和判别乙收到的数据是否正确。若正确,向甲发送“0F”,否则发送“F0”给甲。甲在收到信号“0F”后,返回被调用程序。(1) 甲发送子程序 初始化设置:定时器T1工作方式2,时间常数F3H,SMOD=1;串行口工作方式1,允许接收。内部RAM和工作寄存器设置:31H和30H存放数据首地址,2FH存放数据长度,R6为累加和。发送程序框图如图4.19。 图4.19 发送程序框图发送程序:FMT_T_S:MOVTMOD, #20H;

47、波特率设置MOVTH1, #0F3HMOVTL1, #0F3HSETBTR1MOVSCON, #50H;串行口初始化MOVPCON,#80H;置SMOD=1FMT_RAM:MOVDPH, 31H;设置DPTR指针MOVDPL, 30HMOVR7, 2FH;字节数送R7MOVR6, #00H;累加和寄存器清零TX_ACK:MOVA, #00H;发送“00”MOVSBUF, AWAIT1:JBCTI, RX_YES;等待发送完一个字节SJMPWAIT1RX_YES:JBCRI, NEXT1;等待乙机回答SJMPRX_YESNEXT1:MOVA, SBUF;乙机不同意接收时继续呼叫CJNEA, #0

48、0H, TX_ACKTX_BYTES:MOVA, R7;发送字节数MOVSBUF, A(2) 乙接收子程序 初始化设置:定时器T1工作方式2,时间常数F3H,SMOD=1;串行口工作方式1,允许接收。内部RAM和工作寄存器设置:31H和30H存放接收数据缓冲区首地址,R7存放数据长度,R6为累加和。接收程序框图如图4.20。 图4.20 接收程序框图 接收程序:FMT_T_S:MOVTMOD, #20H;波特率设置MOVTH1, #0F3HMOVTL1, #0F3HSETBTR1MOVSCON, #50H;串行口初始化MOVPCON,#80H;置SMOD=1FMT_RAM:MOVDPH, 31

49、H;设置DPTR指针MOVDPL, 30HMOVR6, #00H;累加和寄存器清零RX_ACK:JBCRI, IF_00H;接收呼叫信号SJMPRX_ACKIF_00H:MOVA, SBUF;判断呼叫信号是否正确CJNEA, #00H, TX_FFHTX_00H:MOVA,#00H;向甲发送同意接收信号MOVSBUF, AWAIT1:JBCTI, RX_BYTES;等待应答信号发送完SJMPWAIT1TX_FFH:MOVA, #0FFH;向甲发送呼叫信号不正确MOVSBUF, A 图4.20 接收程序框图 WAIT2:JBCTI, HAVE1SJMPWAIT2HAVE1:LJMPRX_ACK;

50、返回接收呼叫信号RX_BYTES:JBCRI, HAVE2;接收数据长度SJMPRX_BYTESHAVE2:MOVA, SBUF;存入长度寄存器MOVR7, AMOVR6, A;累加和RX_NEWS:JBCRI, HAVE3;接收数据存入外部RAMSJMP RX_NEWSHAVE3:MOVA, SBUFMOVXDPTR, AINCDPTRADD A, R6;累加和计算MOVR6, ADJNZR7, RX_NEWS;数据是否接收完?RX_SUM:JBCRI, HAVE4;接收校验和SJMPRX_SUMHAVE4:MOVA, SBUF;判断校验和CJNEA, R6, TX_ERRTX_RIGHT:

51、MOVA, #0FH;向甲发送接收正确信号MOVSBUF, ATX_ERR:MOVA, #0F0H;向甲发送接收错误信号MOVSBUF, AWAIT4:JBCTI, AGAINSJMPWAIT4AGAIN:LJMPFMT_RAM;重新接收数据GOOD:RET 5单片机多机通信原理 51系列单片机具有多机通信功能,可构成各种分布式系统,图4.21为主从式多机通信方式。 图4.21 单片机主从多机通信 图4.21中,一台主机与多台从机通信,主机的TxD和RxD分别与从机的RxD和TxD相连,主机可与所有从机通信,但从机之间不能通信,从机之间的信息交换必须通过主机进行。 多机通信原理:串行口的SM2

52、是为多机通信而设置。当串行口以方式2或方式3工作时,发送或接收的每一帧信息都是11位,其中第9位数据是可编程位,若从机的SM2=1,则当接收到的RB8=1时,数据有效;当接收到的RB8=0时,数据无效。当SM2=0时,无论RB8=0还是RB8=1,数据都有效,这样,可以按如下方式实现多机通信。 主机控制通信,发送一帧地址信息,其中SBUF中的内容为从机的地址号,TB8=1标志发送的是地址。 所有从机的SM2=1,只接收地址帧信息。当收到的从机地址号与自己的地址号不同时,继续接收地址帧信息;地址号相同时,设置自己的SM2=0。 主机发送数据信息,其中SBUF中的信息为数据,TB8=0标志发送的是

53、数据。这时,只有SM2=0的从机可以接收数据信息。通信完毕,从机置本机的SM2=1,回到步骤1,主机选择与其他的从机通信。 与双机通信一样,单片机的多机通信中,主机和从机之间的通信必须采用同一个通信协议,设计者根据需要设计或选择合适的通信协议,并按照协议的规定编写主机和从机的通信程序。 4.5 PC机与单片机的通信 在许多应用场合,需要由PC机与单片机组成分布式计算机系统,单片机完成数据的采集与过程控制,PC机完成数据的显示、管理,以及控制模型的优化等。本节讨论PC机与单片机的通信问题。 4.4.1 异步通信适配器 PC系列微机利用异步通信适配器可实现串行通信。异步通信适配器的核心是通用异步接

54、收发送器UART(Universal Asynchronous Receiver Transmitter),常见UART主要有INS8250、PC16450和PC16550等,配以电平转换电路和控制逻辑电路,其端口地址范围为3F8H3FFH或2F8H2FFH。异步通信适配器可以与调制解调器配合进行远距离通信。 1异步通信芯片INS8250 INS8250是使用单一+5V电源的40引脚LSI芯片,由国家半导体公司在1978年首先推出专用于支持异步通信的串行接口芯片。它主要完成的功能是把计算机输出的并行数据转换成异步通信所需的串行码输出,以及将收到的串行输入码转换成计算机所需的并行数据。INS82

55、50的主要功能有: 传输速率可在509600bps范围内编程选择。 传输的数据格式可以有3种选择:5、6、7或8位字符;奇校验、偶校验或无校验位;1、1+1/2或2位停止位。 具有完整的调制解调器控制功能。 具有线路隔离、故障模拟等内部诊断功能。 具有中断控制和优先权判决能力。 无论是发送器还是接收器,都对数据实行两级缓存。 可以支持半双工或全双工工作。 INS8250的引脚和内部结构框图如图4.22(a)所示。INS 8250的内部具有双缓冲结构的接收器(接收缓冲寄存器、接收移位寄存器)和发送器(发送保持寄存器、发送移位寄存器),波特率发生器为发送器和接收器提供所需的同步控制时钟信号;还有实

56、现与MODEM连接的MODEM控制逻辑,以及实现中断控制和优先权判断的中断控制逻辑,另外还有与CPU连接必不可少的数据缓冲器和选择控制逻辑。图4.22(a) INS8250的引脚 图4.22(b) INS8250的内部结构框图 1.引脚的含义与说明 :(1)并行数据I/O及其控制线(CPU侧) D7D0;CS0,CS1和CS2;ADS;DISTR和DISTR;DOSTR和DOSTR;A0,A1和A2;CSOUT;DDIS。(2)串行数据I/O线 SOUT;SIN;BAUDOUT;RCLK;(接口侧)XTAL1;XTAL2。(CPU侧)(3)和MODEM的握手信号线(接口侧) DSR;DTR;R

57、I;RLSD;RTS;CTS。(4)中断请求、复位输入及其他信号线(CPU侧) INTPRT;MR;OUT1和OUT2。 芯片内部可供处理器访问的十个寄存器,可由这三个信号和线路控制寄存器最高位DLAB共同选择,选择情况如表4.4所示。 DLAB A2A1A0 寄存器 0 000接收缓冲器(读)、发送保持寄存器(写)0001中断允许X010中断识别(只读)X011通信线路控制X100调制解调器控制X101通信线路状态X110调制解调器状态X111无用1000除数锁存器(低字节)1001除数锁存器(高字节)表4.4 INS8250内部寄存器选择 2INS8250的内部寄存器 8250内部有10个

58、寄存器。由于这10个寄存器是由8250的引脚A2A0选择,而三位二进制只能表示8个寄存器,所以其中有两个口地址分别由两个寄存器共用,访问这两对寄存器时,由通信线控制寄存器的最高位,即除数锁存器访问位(DLAB)来识别。表4.5列出了异步通信适配器各寄存器的名称和相应的端口地址。表4.5 8250寄存器的端口地址 * 表示通信线路控制寄存器第7位(DLAB)=0;* 表示DLAB=0。(1) 通信线控制寄存器(3FBH,只写) 主要用于指定串行异步通信的数据格式,例如数据位数、停止位数、奇偶校验的选择等,如图4.23。 I/O地址 IN/OUT 寄存器名称 I/O地址 IN/OUT 寄存器名称

59、3F8H* OUT 数据发送保持寄存器 3FAH IN 中断识别寄存器 3F8H* IN 数据接收缓冲寄存器 3FBH OUT 通信线控制寄存器 3F8H* OUT 除数锁存器(低字节) 3FCH OUT MODEM控制寄存器 3F9H* OUT 除数锁存器(高字节) 3FDH IN 通信线状态寄存器 3F9H*OUT 中断允许寄存器 3FEH IN MODEM状态寄存器 图4.23 通信线控制寄存器 (2) 通信线状态寄存器(3FDH,只读) 通信线状态寄存器用于为CPU提供8250芯片的内部状态信息,主要是说明在通信过程中8250接收和发送数据情况。当寄存器的某位为“1”时,表示存在该状态

60、,如图4.24。图4.24 通信线状态寄存器 (3) 数据发送保持寄存器(3F8H,只写) 发送数据时处理器将数据写入该寄存器,只要发送移位寄存器空,该数据发送保持寄存器的数据便会由8250硬件自动并行送到发送移位寄存器中,以便串行移出。(4) 数据接收缓冲寄存器(3F8H,只读) 当8250接收到一个完整的字符时,会将该字符由接收移位寄存器传送到数据接收寄存器。即该寄存器存放的为接收到的数据。(5) 除数锁存器(3F8H/3F9H,只写) 该锁存器为16位,外部时钟被除数锁存器中的除数相除,可以获得所需的波特率。如果外部时钟频率f已知,而8250所要求的波特率F也已规定。那么,就可以由下式求

温馨提示

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

评论

0/150

提交评论