《输入输出中断定时与串行通信.ppt》由会员分享,可在线阅读,更多相关《输入输出中断定时与串行通信.ppt(165页珍藏版)》请在三一办公上搜索。
1、1,第4章 输入/输出、中断、定时与串行通信,主要内容:介绍I/O的基本概念、I/O数据传递方式,中断的基本概念,串行通信基本概念。主要介绍单片机中断系统结构、特点及使用方法;片内定时器/计数器结构、原理及使用;片内串行口结构、原理以及双机和多机通信实现方法;PC机与单片机通信实现方法。,2,4.1 输入/输出概述,输入/输出的基本概念,输入/输出设备又称为计算机外围设备;简称外设或IO设备。单片机应用系统常用的输入设备有按钮、键盘、各种传感器等。常用的输出设备有LED(发光二极管显示器)、LCD(液晶显示器)等。二、输入输出信息种类 计算机与输入输出设备之间交换信息,有三种信息形式:数据信息
2、、控制信息和状态信息。,一、输入/输出设备,3,三、输入/输出接口与端口 CPU与外设,并不直接相连,而是通过接口电路进行连接。输入/输出设备与主机的连接部分称为输入/输出接口,简称IO接口。输入/输出接口的作用是:,2.锁存与缓冲作用:一般用D触发器进行锁存。,1.隔离与寻址作用:例如右图用三态门组成的接口。,3.信号电平或形式变换:例如A/D、D/A、232/485的变换。,4,通常接口电路中可编址并能进行读写操作的寄存器称为端口或简称口。一个接口电路中可能包括多个口,例如数据口、状态口、控制口,即包含有多个口地址。同一单片机系列中,片内集成的I/O模块各有不同,当片内I/O不能满足实际需
3、求时,可扩展外部I/O。四、I/O的分类 按照信号的传递方式,可将I/O分为串行和并行两类。按照I/O连接的信号大致可分为模拟量、数字量、脉冲量I/O三类。五、数据总线隔离技术 为了正确地进行数据的I/O传递,必须解决数据总线的隔离问题,即在任一时刻,CPU只对一个I/O进行操作。为此,对输出设备的接口电路要使用锁存器,对输入设备的接口电路,使用三态缓冲器。,5,六、单片机I/O编址方式 每一个I/O都需要编址,以便CPU分别进行寻址。常用的I/O编址方式有两种:独立编址方式和统一编址方式。独立编址方式:I/O和存储器分开编址,有各自独立的地址空间,采用不同的控制总线,使用不同的指令分别寻址。
4、统一编址方式:I/O与数据存储器在同一地址空间编址,寻址方式相同,采用相同的地址、数据、控制总线,使用相同的指令寻址。,6,4.1.2 输入输出的传送方式,单片机系统中有不同类型的I/O设备,由于I/O所连接的外设或I/O接口本身的速度与CPU的处理速度相比,通常低于CPU的速度,为了实现数据的正确传输,CPU通常采用三种控制方式,即无条件传送方式、查询方式和中断控制方式。一、无条件传送方式 I/O或与I/O连接的外设随时都处于准备好状态,这时CPU不需要测试外设状态,随时直接对其进行操作。,7,查询方式流程图,二、查询方式 查询方式是指CPU在执行输入输出指令之前,先对外围设备的状态进行检测
5、,以判别外设是否准备就绪。如果已经准备就绪,CPU就可以执行输入输出指令。如果还没有准备就绪,必须继续查询(如右图所示)。查询方式的特点:实现简单,通用性强,适合各种设备数据的输入/输出;其缺点是需要占用CPU的时间,外设速度较慢时,效率较低。,8,三、中断方式 中断方式下外设的状态信号以中断申请方式输入CPU。CPU响应中断,暂停正在执行的程序,转而执行中断服务程序,在中断服务程序中对外设进行输入/输出操作,中断返回后,再继续执行被中断的程序。中断方式可提高单片机系统的效率。,9,4.2.1 中断的概念,当CPU正在处理某件事情的时候,内部或外部发生的某一事件(如一个电平的变化,一个脉冲沿的
6、发生或定时器计数溢出等)请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转去处理所发生的事件。处理完该事件以后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。,4.2 MCS-51单片机的中断系统,10,一、中断源 中断源是指向CPU申请中断的事件来源。例如外部输入输出设备,定时/计数器,串行接口都可以作为中断源。二、中断优先权 中断优先权也叫中断排序,是用户根据中断源的性质和重要性自行排列的先后次序。在多个中断源同时提出申请时,保证优先权高的中断源首先得到响应,纵使CPU正在处理一个中断,也要暂时停止较低级的中断。响应优先权更高的中断源请求。这个过程称为中断嵌套或多重中断
7、。优先权排序可以用软件也可以用硬件实现。,11,三、中断系统的功能:(1)可实现高速CPU 与慢速外设之间的配合。因为许多外围设备的速度比CPU慢,二者间无法同步地进行数据交换。为此可通过中断方式实现CPU与外围设备之间的协调工作。(2)可实现实时处理。实时处理是自动控制系统对计算机提出的要求,各控制参量可以随时向CPU发出中断申请,而CPU也必须做出快速响应和及时处理,以便使被控对象总保持在最佳工作状态。(3)实现故障的紧急处理。当外围设备或计算机出现故障时,可以利用中断系统请求CPU及时处理这些故障。(4)便于人机联系。操作人员可以利用键盘中断等,实现人机联系,完成人的干预。,12,四、中
8、断响应过程 1)寻找中断源。(中断识别)2)将当前PC值(下一条指令的地址)压入堆栈(即保护断点),以便中断返回时使用。3)寻找中断入口,以便转向执行中断服务程序。4)保护现场。5)执行中断服务程序(中断处理)。6)执行完中断服务程序后,恢复现场并返回主程序(中断返回)。,13,4.2.2 MCS-51单片机的中断系统一、中断源与中断标志位8051/8031型单片机提供了5个中断源:两个外部中断源和三个内部中断源。每一个中断源都有一个中断申请标志,但串行口占两个中断标志位,一共六个中断标志,下表给出了它们各自的名称。,中断源和中断申请标志,14,MCS-51中断系统,MCS-51中断系统结构框
9、图,中断源,中断选择,中断标志,15,1.中断源(1)外部中断0请求,由P3.2引脚输入。可由用户设定为两种触发方式,(电平触发方式还是边沿触发方式)。一旦输入信号有效,则向CPU申请中断,并且将中断标志IE0置1。(2)外部中断1请求,由P3.3引脚输入。亦可由用户设定为电平触发方式还是边沿触发方式。一旦输人信号有效,则向CPU申请中断,并将中断标志IE1置1。,(3)片内定时器T0溢出中断请求。当定时器T0产生溢出时,T0中断请求标志TF0 置1,请求中断处理。(4)片内定时器T1溢出中断请求。当定时器T1产生溢出时,T1中断请求标志TF1置l,请求中断处理。(5)片内串行口发送接收中断请
10、求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志TI或RI置1,请求中断处理。,16,因此,与中断有关的特殊功能寄存器有:中断允许控制寄存器(IE)定时器/计数器控制寄存器(TCON)中断优先级控制寄存器(IP)串行口控制寄存器(SCON),MCS-51单片机的中断系统中,使用何种中断,采用何种触发方式,可通过定时器/计数器控制寄存器TCON和串行口控制寄存器SCON的有关位来规定。只要根据这些位的状态就能确定有无中断请求及中断的来源。在中断源与CPU之间有二级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由IE控制。中断优先级由IP控制。,17,2.中断请求标志,(1)T
11、CON的中断标志 TCON是专用寄存器,字节地址为88H,它锁存了外部中断请求标志及T0和T1的溢出中断请求标志。,IT0/IT1:外部中断请求的触发方式选择位:=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效.IE0/IE1:外部中断申请标志位:=0:没有外部中断申请;=1:有外部中断申请。TF0/TF1:定时器溢出中断申请标志位:=0:定时器未溢出;=1:定时器溢出申请中断,进中断后自动清零。TR0/TR1:定时器运行启停控制位:=0:定时器停止运行;=1:定时器启动运行。,18,(2)SCON的中断标志 SCON是串行口控制寄存器
12、,与中断有关的是它的低两位TI和RI。TI(SCON.1):串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TI必须由软件清除。RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。,SCON,19,二、MCS51的中断管理,1、中断允许寄存器IE中断的允许与开放,在中断源与CPU之间有两级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由IE控制。,20,2中断优先级寄存器IP 中断优先级控制,内部自然优先级:入口地址 INT0 高 0003H T0 000BH INT1
13、 0013H T1 001BH TI/RI 低 0023H,21,3.同一级中的5个中断源的优先顺序,中断优先原则:(概括为四句话)1)低级不中断高级2)高级不睬低级3)同级不能打断4)同级、同时中断,按自然优先级,22,MCS-51中断系统,MCS-51中断系统结构框图,中断源,中断选择,中断标志,23,中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。,三、中断响应的条件及过程,1.中断响应(1)中断响应的条件:1)有中断源发出请求信号 2)中断是开放的(总允许、源允许)3)没有封锁(受阻),受阻情况是:CPU正在执行同级或高一级的中断服务程序;现行机器周期不是正在执行的指令的
14、最后一个机器周期,即现行指令完成前不响应任何中断请求;当前正在执行的是中断返回指令RETI或访问专用寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行一条其他指令,才会响应中断请求。,24,(2)中断响应过程 进入中断响应周期。CPU在中断响应周期要完成下列操作:1)根据中断请求源的优先级高低,使相应的优先级状态触发器置1。2)清相应中断请求标志位IE0、IE1、TF0或TF1。3)保留断点,把PC内容压入堆栈保存。4)把被响应的中断源的服务程序入口地址送入PC,转入相应的中断服务程序。,25,(3)中断响应时间 从查询中断请求标志位到转向中断服务入口地
15、址所需的机器周期数。1)最快响应时间 以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL)2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,26,2.中断处理(服务)与返回 在编写中断服务程序时加注意的几点:(1)因各入口地址之间只相隔8个字节,所以通常在中断入口地址单元处存放一条无条件转移指令,使中断服务程序灵活地安排在64KB程序存储器的任何空间。(2)若要在执行当前中断程序时禁止
16、更高优先级中断,可先用软件关闭CPU中断(全局中断),或禁止某中断源中断(局部中断),在中断返回前再开放中断。(3)注意保护现场和恢复现场。(4)中断服务程序的最后一条是返回指令RETI,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入PC,使程序返回到被中断处,继续向下执行。,27,中断服务程序流程图,28,3.中断请求的撤除 CPU响应中断请求后,在中断返回(RETI)前,该中断请求信号必须撤除,否则会引起另外一次中断。注意:(1)采用边沿触发的外部中断标志IE0或IEl和定时器中断标志TF0或TFl,CPU响应中断后能用硬件自动情除;(2)在电平触发时,
17、IE0或IEl受外部引脚中断信号的直接控制,CPU无法控制IE0或IEl,需要另外考虑撤除中断请求信号的措施,如通过外加硬件电路(见下页所示),并配合软件来解决;(3)串行口中断请求标志TI和RI也不能由硬件自动清除,需要在中断服务程序中,用软件来清除相应的中断请求标志.。,29,并在中断服务程序中增加如下指令,使得的/INT0输入变为高电平。ORLP1,#01HANLP1,#0FEH,外部中断为电平触发时,如果中断响应后,管脚仍为低电平,则会重新置位中断请求,为此可以在系统中增加辅助电路解决。,30,1.在CPU已经开放了外部中断允许的前提下;2.在INT0/INT1引脚输入一个负脉冲或低电
18、平;3.TCON寄存器中的IE0/IE1标志位自动变“1”;4.检测到IE0/IE1变“1”后,将产生指令:LCALL 0003H(/0013H)执行中断服务程序;4并将IE0/IE1标志位自动清“0”或用硬件电路撤除中断请求信号,以备下次申请。,外部中断(INT0,INT1)申请过程:,31,例1 假设允许片内定时器/计数器中断,禁止其他中断。试根据假设条件设置IE的相应值。解:根据题目要求,要允许内部定时器中断,就需要将IE寄存器的EA、ET1、ET0置1,其他位清0,可分别通过字节寻址或者位寻址进行。(1)用字节操作指令:MOV IE,#8AH 或 MOV A8H,#8AH(2)用位操作
19、指令:SETBET0;定时器/计数器0允许中断 SETBET1;定时器/计数器1允许中断 SETBEA;CPU开中断,32,例2 系统要求设定8051的片外中断为高优先级中断,片内中断为低优先级。请写出相应的指令。解:根据题目要求,需要将8051的外部中断优先级控制位PX0、PX1设置为1,而内部中断优先级控制位PT0、PT1、PS清为0。(1)用字节操作指令:MOV IP,#05H(2)用位操作指令:SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1,33,4.3 MCS-51单片机的定时器/计数器,定时器/计数器的结构定时器/计数器的工作方式定时器/计数器应用
20、,34,实现定时或延时控制有三种方法:软件定时、不可编程硬件定时器、可编程硬件定时器。可编程的硬件定时器就是其工作方式、定时值和定时范围可以很方便地由软件来确定和改变。通常,一个可编程定时/计数器的主要用途有:以均匀分布的时间间隔中断分时操作系统,以便切换程序。向I/O设备输出精确的定时信号,该信号的周期由程序控制。用作可编程波特率或速率发生器。检测外部事件发生的频率或周期。统计外部事件处理过程中某一事件发生的次数。在定时或计数达到编程规定的值之后,产生输出信号,向CPU申请中断。,35,51系列单片机有两个16位的定时器/计数器:T0和T1。T0由两个8位的定时寄存器TH0和TL0构成16位
21、寄存器,同样,T1由两个8位的定时寄存器TH1和TL1构成16位寄存器,它们分别映射在特殊功能寄存器中。TH0、TL0的地址分别为8CH、8AH,TH1和TL1的地址分别为8DH和8BH。其内部还有2个8位的专用寄存器TMOD(88H)和TCON(89H)。其中TMOD是定时器的工作方式寄存器,TCON是控制寄存器,主要用于定时/计数器管理与控制。,4.3.1 定时器/计数器的结构,36,8051单片机的定时器结构,T0,T1,37,一、定时器/计数器的定时和计数功能,在TMOD中,各有一个控制位(CT),分别用于控制定时器/计数器T0和T1是工作在定时器方式还是计数器方式。,1.定时功能-计
22、数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。,2.计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。即对由T0/T1引脚输入的负脉冲进行加法计数。,定时器/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。其输入的计数脉冲有两个来源(内部时钟脉冲和外部输入引脚)。当加到计数器为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲使TCON中溢出中断标志TF0或TF1置1,并可向CPU申请中断。,38,二、定时器计数器的控制寄存器,与定时器计数器有关的控制寄存器有:,1定时器控制寄存器TCON,中
23、断请求标志,触发方式选择,启动定时器/计数器,0 低电平1 下降沿,0 停止1 启动,39,2工作方式控制寄存器TMOD,T1控制,T0控制,GATE门控位,M1 M0工作方式选择,用于选定定时/计数器的工作方式、启动方式等。,40,TMOD的高4位用于T1控制,低4位用于T0控制,符号的定义如下:(1)GATE:门控位。GATE和软件控制位TR、外引脚(/INT0、/INT1)的状态,共同控制定时器/计数器的启动和停止。GATE=0 普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制。GATE=1 门控用法 Timer的启/停由软件对TRx位写“1”/“0”和在INTx引脚上出
24、现的信号的高/低共同控制。(2)C/T:定时/计数器方式选择位。C/T 1为计数方式;C/T 0为定时方式。(3)M1 M0:工作方式选择位。M1 M000;方式0 M1 M001;方式1 M1 M010;方式2 M1 M011;方式3。,41,4.3.2 定时器的工作方式,一、方式0,定时/计数器工作于方式0时为一个13位的计数器。选择定时器(T0或T1)的高8位和低5位组成的一个13位定时器计数器。下图是T0在方式0时的逻辑电路结构。T1的模式0电路结构与T0相同。,定时器T0的方式0逻辑电路,MCS-51单片机内部的定时/计数器是一种可编程器件,可设置为四种工作方式,由两个8位专用寄存器
25、TMOD和TCON进行管理与控制。,注:此时,/INT0(须为1)不是外部中断请求信号,而只是对定时/计数器的一个附加控制信号。,42,(1)加1计数器为13位。TL0=5位,TH0=8位(2)(GATE+INT0)TR0为真则启动定时器。(3)C/T=1为计数工作方式,计数脉冲由T0引脚输入。计数个数 N=(213初值)(4)C/T=0为定时工作方式,时钟频率为fosc/12。定时时间t=(213初值)*时钟周期*12 显然:在机器周期固定的情况下,定时时间的长短与计数器事先装入的初值有关,装入的初值越大,定时越短。(5)计数器溢出,TF0置1。由硬件申请中断。,43,二、方式1 定时/计数
26、器工作于方式1时为一个16位的计数器。其逻辑结构、操作及运行控制几乎与方式0完全样,差别仅在于计数器的位数不同。在方式1中TL0和TH0均为8位,TL0和TH0一起构成了l6位计数器。定时工作方式1时,定时时间为:定时时间 t(216计数初值)机器周期用于计数器工作方式时:最大计数值为:21665536。,44,定时器T0的方式1逻辑电路,45,三、方式2 定时/计数器工作于方式2时,将两个8位计数器THx、TLx分成独立的两部分,组成一个可自动重装载的8位定时/计数器。其逻辑结构如下图所示。,方式2的控制运行与方式0、方式1相同。用于定时工作方式时,定时时间t为:t(28-计数初值X)机器周
27、期 方式2用于计数工作方式时,最大计数值(初值0时)是28。方式2特别适合于用作较精确的定时和脉冲信号发生器。还常用作串行口波特率发生器。,46,四、方式3 方式3只适用于定时器T0。在方式3下,T0被分成两个相互独立的8位计数器TL0和TH0,如下图所示。,(1)TH0和TL0变成2个分开的独立计数器。(2)TL0占用了全部的定时器控制位(C/T,GATE,TR0,TF0)。(3)TH0只能用于定时方式,运行控制位和溢出标志位则借用定 时器1的TR1和TF1。此时的定时器1用于串行口波特率发生器。注:在T0设置为方式3工作时,一般是将定时器T1作为串行口波特率发生器,或用于不需要中断的场合。
28、,47,定时器T0的方式3,(a)T0方式3时的T1方式0,(b)T0方式3时的T1方式1,48,4.3.3 定时器/计数器应用,一、定时器/计数器的计数初始化1.定时器计数器的初始化方法 初始化的主要内容是对TCON和TMOD编程,计算和装载T0和T1的计数初值。,(1)确定相关参数1)分析定时器计数器的工作方式,将方式字写入TMOD寄存器;(即确定:定/计、内/外启动、工作方式)2)计算T0或T1中的计数初值,并将其写入TH0、TL0或TH1、TL1;3)根据需要开放CPU和定时器计数器的中断,即对IE和IP寄存器编程;4)启动定时器计数器工作:若要求用软件启动,编程时对TCON中的TR0
29、或TR1置位即可启动;若由外部中断引脚电平启动,则对TCON中的TR0或TR1置位后,还需给外部引脚加启动电平。,49,(2)计算定时器/计数器的初值1)计数器方式时的计数初值 TC2MN(M为计数器位数,N为要求的计数值)方式0:M13,计数器的最大计数值2138192;方式1:M16,计数器的最大计数值21665536;方式2:M8,计数器的最大计数值28256;方式3同方式2。例如,设T0工作在计数器方式2,求计数10个脉冲的计数初值。TC28 10246(11110110)B0F6H,2)定时器方式时的计数初值 在定时器方式下,定时器T0(或T1)是对机器周期进行计数的。定时时间为:t
30、(2M计数初值X)机器周期。故:计数初值X 2M-(t/(12*T osc)=,50,注意:不同方式下,M的取值不同。若系统时钟频率fOSC12MHz。则 方式0:M13,定时器的最大定时值为:213*机器周期8192S;方式1:M16,定时器的最大定时值为:216*机器周期65536S;方式2:M8,定时器的最大定时值为:28*机器周期256S;方式3同方式2。例如:若fOSC6MHz,定时时间为10ms,使用定时器T0工作于方式1,则定时器T0的初值为:,TC0=605360EC78H,注意时钟频率(HZ)和定时时间(S)的单位换算!,51,2.定时器/计数器初始化举例编写初始化程序的步骤
31、:(1)方式控制字送TMOD;MOV TMOD,#(2)计数器的初值送TH、TL(0/1);MOV TH0,#MOV TL0,#(3)根据需要开放中断和设定优先级;即对IE和IP赋初值。(4)启动T0/T1开始工作-置位TR0/TR1;SETB TR0/TR1(5)等待溢出信号的出现(如何进入处理程序?)(有查询法或中断法),52,例1:要求定时器T1工作于方式1,定时50ms,由软件启动,允许中断。设系统时钟频率fOSC6MHz,编写初始化程序段。解:1)方式控制字为 00010000B=10H 2)计数初值为 TC1,T1初始化程序段如下:MOVTMOD,#10H;写入工作方式字 MOVT
32、H1,#9EH;写入计数初值 MOVTL1,#58H SETBET1;开放T1中断 SETBEA;开放CPU中断 SETBTR1;启动T1工作,53,例2:要求利用定时/计数器T0对T0引脚(P3.4)出现的脉冲计数,每计数100个脉冲向CPU申请中断,设由软件启动。编写初始化程序段。解:1)经分析,可设定时器T0工作于方式2计数,方式控制字为00000110B=06H 2)要求的计数值N=100,则计数初值为 28-100=156,初始化程序段如下:MOVTMOD,#06H;写入工作方式字 MOVTH0,#156;写入计数初值 MOVTL0,#156 MOVIE,#10000010B;开放T
33、0、CPU中断 SETBTR0;启动T0工作,54,二、定时器/计数器应用举例,在应用定时器计数器时,溢出标志TFx置位后既可由硬件向CPU申请中断;也可通过用户程序查询TFx的状态,因此对计数溢出信息的处理有以下两种方法:中断法:在定时器初始化时要开放对应的源允许(ET0或ET1)和总允许,在启动后等待中断。当计数器溢出中断时,CPU将程序转到中断服务程序入口,因此应在中断服务程序中安排相应的处理程序。查询法:在定时器初始化并启动后,在程序中安排指令查询TFx的状态。LP:JBC TF0,NEXT;TF0为1,转后面的处理程序,并将TF0复位 SJMPLP;TF0为0,继续查询NEXT:,5
34、5,采用查询方式时的一般编程模式为:ORG 0030HMAIN:MOV TMOD,#MOV TH0,#MOV TL0,#-SETB TR0WAIT:JBC TF0,NEXT;SJMP WAIT;NEXT:MOV TH0,#;重装 MOV TL0,#;初值-;处理程序 SLMP WAIT注意问题:1)方式0、1、3溢出后要重装初值,方式2可自动重装初值。2)方式0时TH为8位,TL为5位。,采用中断方式时的一般编程模式为:ORG 0000H SJMP MAIN ORG 000BH(001BH)LJMP T0S ORG 0030HMAIN:MOV TMOD,#MOV TH0,#MOV TL0,#S
35、ETB ET0;SETB EA;-;置其他初值 SETB TR0;SJMP$T0S:MOV TH0,#MOV TL0,#;重装初值-;处理程序 RETI,假设使用T0,则:,56,1.定时器计数器定时方式的应用例3:利用定时/计数器定时产生周期信号。要求用定时器T0定时,在P1.7引脚上输出频率为50Hz的方波。设晶振频率为12MHz。解:1)按题意分析:方波周期T=1/50=20ms,可用T0方式1定时10ms,使P1.7每隔10ms取反一次,即可得到周期为20ms的方波。设T0工作在方式1,由软件启动。2)TMOD控制字为 0000 0001 B 3)初值计算:因fosc=12MHz,则机
36、器周期为1s。初值216-10103/1=65536-10000=55536=D8F0H,即有TH0=D8H,TL0=F0H。,57,4)编程a.若采用查询法,编程如下:ORG 0030HSTAR:MOV TMOD,#01H;写方式字 MOV TH0,#0D8H;写入计数初值 MOV TL0,#0F0H SETB TR0;启动T0LP:JBC TF0,NEXT;TF0为1转NXET SJMP LP;TF0为0,继续查询NEXT:MOV TH0,#0D8H;重装初值 MOV TL0,#0F0H CPL P1.7;P1.7取反输出方波 AJMP LP;反复循环,58,b.若采用中断法,编程如下:主
37、程序:ORG 0000H SJMP STAR ORG 000BH;定义T0服务程序入口 AJMP DVT0 ORG 0030HSTAR:MOV TMOD,#01H;写入工作方式字 MOV TH0,#0D8H;写入计数初值 MOV TL0,#0F0H SETB ET0;SETB EA;开放T0和CPU中断 SETB TR0;启动T0 SJMP$;等待中断,中断服务程序:DVT0:MOV TH0,#0D8H;重装初值 MOV TL0,#0F0H;CPL P1.7;RETI,59,2.定时器计数器计数方式的应用 例4:某系统要求用定时器T1对由P3.5(T1)引脚输入的脉冲计数,每计满100个脉冲,
38、在P1.0引脚输出一个正脉冲。解:1)据题意分析,可将定时器T1设置为方式2计数,由软件启动。2)方式控制字:TMOD01100000B60H 3)计数初值:TC1281001569CH,即有 TH1TL19CH,60,4)程序如下:ORG 0000H SJMP MAIN ORG 001BH;定义T1服务程序入口 AJMP DVT1 ORG 0030HMAIN:MOV TMOD,#60H;写入工作方式字 MOV TH1,#9CH;写入计数初值 MOV TL1,#9CH SETB ET1;开放T1中断 SETB EA;开放CPU中断 CLR P1.0 SETB TR1;启动T1 SJMP$;等待
39、中断,DVT1:SETB P1.0 NOP NOP CLR P1.0;RETI,61,3.定时时间的扩展 为什么要扩展?因为晶振频率为6MHz时一个定时器最长的定时时间为:,例如,若用T0定时50ms,每次溢出后就计数一次,则计数20次就得1秒的定时。较常用的是软件计数扩展法。软件扩展是利用内存单元作溢出次数的计数器。如果定时时间长,8位计数器不够,还可采用16位计数器或用更多字节单元计数。,62,例5:要求利用软件扩展方法实现1秒定时,使得由P1口控制的8个LED指示灯每隔一秒轮流闪亮(输出为低电平时亮),设fOSC6MHz。解:1)分析:设利用定时器T0工作于方式1,定时50ms,并用R2
40、作软件计数器,取R2的初值为20,作减法计数,每次T0溢出时,R2减1,当R2减到0,则定时1秒完成。2)即有:TMOD=00000001B=01H,TH0=9EH,TL0=58H(见前PPT52例1),63,主程序:ORG 0000H SJMP MAIN ORG 000BH;定义T0服务程序入口 AJMP DVT0 ORG 0030HMAIN:MOV TMOD,#01H;置工作方式字 MOV TH0,#9EH MOV TL0,#58H;置计数初值 SETB ET0 SETB EA;开放中断 MOV R2,#20;置软件计数初值 MOV A,#0FEH MOV P1,A;从P1输出一位低电平
41、SETB TR0 SJMP$;等待中断,;中断服务程序DVT0:MOV TH0,#9EH MOV TL0,#58H;重置计数值 DJNZ R2,RTN MOV P1,A RL A;A循环左移一位 MOV R2,#20;再置计数值 RTN:RETI,若采用中断法,编程如下:,64,4.利用定时器/计数器扩展外部中断源 利用定时/计数器来扩展外部中断源。方法是将定时器/计数器设置成计数器方式2计数,计数初值设定为THx、TLx均为0FFH,并将待扩展的外部中断源接到定时器/计数器的外部脉冲计数引脚.,例如,利用定时器/计数器T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL
42、0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序段如下:MOV TMOD,#06H;置T0为计数器方式2 MOV TL0,#0FFH;置计数初值 MOV TH0,#0FFH SETB TR0;启动T0工作 SETB EA;CPU开中断 SETB ET0;允许T0中断,65,5.门控位GATE的应用,例6:利用定时/计数器T0的门控位GATE,测量引脚上出现的脉冲宽度,并将结果(机器周期数)存入内部RAM的30H和31H单元中。解:1)由题意分析,外部脉冲由引脚输入,可设T0工作于定时器方式1,计数初值为0,在一个完整的外部脉冲宽度内对机器周期计数(定时方式),显然计数值乘上机器
43、周期就是脉冲宽度。2)设定GATE1,当TR0置1时,由外部脉冲上升沿启动T0开始工作。加1计数器开始对机器周期计数;引脚变为低电平时,停止计数,这时读出TH0、TL0的值,该计数值即为被测信号的脉冲宽度对应的机器周期数。测试过程如图所示.,66,3)程序设计工作方式字:TMOD=00001001B计数初值:TH0=00H,TL0=00H,ORG 0000H LJMP MAIN ORG 0030HMAIN:MOV TMOD,#09H;GATE1 MOV TH0,#00H;置计数初值 MOV TL0,#00H MOV R0,#30HWAIT1:JB P3.2,WAIT1;等待变低 SETB TR
44、0;预启动T0,WAIT2:JNB P3.2,WAIT2;等待 INT0变高、启动计数 WAIT3:JB P3.2,WAIT3;等待 INT0再变低 CLR TR0;停止计数 MOV R0,TL0;读取计数值,存入指定单元 INC R0,MOV R0,TH0 AJMP DATA;转数据处理程序,67,主要内容:串行通信基础;MCS-51单片机串行通信接口的结构;MCS-51单片机串行通信的工作原理及其工作方式;MCS-51单片机串行接口应用编程。,重点:MCS-51单片机串行接口的工作原理及工作方式;MCS-51单片机串行接口应用程序设计方法。,4.4单片机的串行通信,68,串行通信优点:便于
45、长距离传送 缺点:传送速度较慢,计算机与外界信息交换称为通信。,通信的基本方式可分为并行通信和串行通信:,并行通信是数据的各位同时发送或同时接收;,串行通信是数据的各位依次逐位发送或接收。,并行通信优点:传送速度快 缺点:不便长距离传送,69,(a)并行通信(b)串行通信通信的两种基本方式,70,异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收,但因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低,在单片机中主要采用异步通信方式。,4.4.1 串行通信基础,串行通信有两种基本通信方式:异步通信和同步通信。在此,只介绍异步通信。,一、异步串行通信的
46、字符格式,异步通信依靠起始位、停止位保持通信同步。异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。,71,异步串行通信以字符为单位,即一个字符一个字符的传送。,72,(b)有空闲位串行异步通信的帧格式,(a)无空闲位,73,奇偶效验位用于对字符的传送作正确性检查,因此奇偶效验位是可选择的,共有3种可能,即奇效验、偶效验和无效验,由用户根据需要选定。,起始位开始一个字符的传送的标志位。起始位使数据线处于“0”状态。,数据位起始位之后传送的数据信号位。在数据位中,低位在前(左)高位在后(右)。由于字符编码方式的不同,数据位可以是5、6、7或8位。,停止位用以标志一个字符的结束
47、,它对应于“1”状态。停止位在一帧的最后,它可能是1、1.5或2位,在实际中根据需要确定。,74,位时间一个格式位的时间宽度。,帧(frame)从起始位开始到停止位结束的全部内容称之为一帧。帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。,二、异步串行通信的信号形式,1、近程通信,近程通信又称本地通信。,近程通信采用数字信号直接传送形式,即在传送过程中不改变原数据代码的波形和频率。这种数据传送方式称之为基带传送方式。,75,计算机内部的数据信号是TTL电平标准,而通信线上的数据信号却是RS232C电平标准。然而,尽管电平标准不同,但数据信号的波形和频率并没有改变。近程串行
48、通信只需用传输线把两端的接口电路直接连起来即可实现,既方便又经济。,76,2、远程通信,在远程串行通信中,应使用专用的通信电缆,但出于经济上的考虑也可以使用电话线作为传输线。,远距离直接传送数字信号,信号会发生畸变,因此要把数字信号变为模拟信号再进行传送。信号形式的转变通常使用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态。这种数据传送方式就称为频带传送方式。,77,波特率对于CPU与外界的通信是很重要的。相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。在通信中发、接双方有两次约定:字符格式帧格式 传送速率波特率,三、串行通信波特率,波特率bps(bi
49、t per second)为数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。即:,1波特=1位/秒(1bps),作用:1.反映串行通信的速率;2.反映对传输通道的要求:波特率越高,要求的传输通道的频带宽度就越宽。,78,假如数据传送的速率是120个字符秒,每一个字符规定包含10个位(一个起始位、8个数据位和1个停止位),则传送的波特率为:101201200位秒1200波特(bps)每一位的传送时间即为波特率的倒数。,注意:时钟频率和波特率不是同一个概念,时钟频率比波特率高得多。,79,四、串行通信的制式,串行通信按照数据传送方向可分为三种制式:,单工制式是指甲乙双方通信时只能单
50、向传送数据,发送方和接收方固定。,1、单工制式(Simplex),80,半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。,2、半双工制式(Half Duplex),81,三、EIA-232-D端口的直接连接,两台计算机可通过调制解调器(Modem),由电话线连接实现长距离通信。在工业数据通信中,常直接将两台计算机的EIA-232端口连接。在通信过程中,不需要握手时,只需要3根连接线,DB-9连接器的接线如图(a)所示。在需要握手时,还需要将请求发送、允许发送、准备就绪等信号端形成如图(b)所示的交叉连接形式。,(a)无握手(b