MCS-51单片机的功能模块_第1页
MCS-51单片机的功能模块_第2页
MCS-51单片机的功能模块_第3页
MCS-51单片机的功能模块_第4页
MCS-51单片机的功能模块_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

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

文档简介

5.1MCS-51单片机并行I/O口5.2MCS-51单片机中断系统5.3MCS-51单片机定时器/计数器5.4MCS-51单片机串行接口5.5思考与练习题,第五章MCS-51单片机的功能模块,第五章MCS-51单片机的功能模块,主要内容:介绍51系列单片机主要内部功能模块:有并行I/O口、中断系统、定时/计数器和串行接口。要求:1、掌握51系列单片机的各功能模块的结构和工作原理;2、各模块应用程序的编写。,5.1MCS-51单片机并行I/O口,I/O口的作用:1实现CPU与外设间的速度匹配;2改变数据的传送方式(并行、串行);3改变信号的性质(A/D)和信号的电平(TTL电平与RS232电平)外设的编址:独立编址编址范围0000H0FFFFH,有专有的传送指令;与存储器统一编址编址范围0FF00H0FFFFH,传送指令MOVXA,DPTRMOVXDPTR,A,5.1MCS-51单片机并行I/O口,I/O数据的四种传送方式无条件传送(同步传送)条件传送(异步传送)中断传送DMA传送,5.1MCS-51单片机并行I/O口,MCS-51单片机具有4个双向的8位I/O口P0P3,P0口为三态双向口,负载能力为8个TTL电路,P1P3口为准双向口(用作输入时,口线被拉成高电平,故称为准双向口),负载能力为4个TTL电路。各口中的每一位都是由锁存器(称特殊功能寄存器SFR)、输出驱动器和输入缓冲器组成。这种结构,在数据输出时可锁存,但对输入信息是不锁存的,所以从外部输入的信息必须保持到取数指令执行完为止。,5.1.1P0口,P0口是一个三态双向口,在系统扩展时,可作为低8位地址线和数据总线的分时复用口,在其他状态下可作为通用I/O接口,其1位的结构原理如图5.1所示,P0口由8个这样的电路组成。,5.1.1P0口,图5.1,5.1.1P0口,P0口是一个多功能8位口,可以字节访问,也可位访问,字节访问地址为80H,位访问地址为80H87H。(1)P0口用于I/O口是准双向I/O口。作为I/O口使用时,控制信号应为“0”,多路开关接通输出锁存器的端。同时与门关闭,上拉FET截止,形成P0口的输出电路为漏极开路输出。需要外接上拉电阻。a)作输出口时:不需要条件,可以正确的输出b)作输入口时:当CPU复位后进行输入操作时,输入信息是正确的。当P0口的某位(或整个P0口)先进行了输出操作,而后要由输出变成输入操作方式时,必须先用输出指令将锁存器置“1”,才能保证输入信息正确。(即是准双向的含义),5.1.1P0口,(2)P0口用于地址/数据分时复用时是真正双向I/O口。当控制=1时,MUX接通地址/数据输出端。a)当地址/数据输出线置1时,“与”门输出为1,上拉FET导通,同时地址/数据输出通过反相器输出0,控制下拉FET截止,这样A点电位上拉,地址/数据输出线为1。b)当地址/数据输出线置0时,“与”门输出为0,上拉FET截止,同时地址/数据输出通过反相器输出1,控制下拉FET导通,这样A点电位下拉,地址/数据输出线为0。输入数据,控制=0,分析同(1)中的输入中的第一种情况。通过上述分析可以看出,此时的输出状态随地址/数据线而变。因此,P0口可以作为地址/数据复用总线使用(需要加地址锁存器)。此时的P0口相当一个双向口。,5.1.2P1口,P1口是一个8位口,可以字节也可按位访问,其字节地址为90H,位访问地址为90H97H。P1口是一个准双向I/O口,其1位的内部结构如图5.2所示。,5.1.2P1口,图5.2,5.1.2P1口,它在结构上与P0口的区别在于输出驱动部分,其输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出为1时,使输出驱动器中的场效应管截止,该位的输出由内部等效的上拉电阻拉成高电平,输出1。当输出为0时,输出场效应管导通则输出引脚为低电平,输出为0。不必像P0口那样需要外接上拉电阻。,5.1.2P1口,在8051/80C51单片机中,P1口只有通用I/O接口一种功能,它的每一位可以分别定义为输入或输出,其输入输出原理特性与P0口作为通用I/O接口使用时一样。P1口具有驱动4个LSTTL负载的能力。在8052/80C52单片机中,P1口P1.0与P1.1除作为通用I/O接口线外,还具有第二功能,即P1.0可作为定时器/计数器2的外部计数脉冲输入端T2,P1.1可作为定时器/计数器2的外部控制输入端T2EX。,5.1.3P2口,P2口也是一个准双向I/O口,其1位内部结构见图5.3。在访问外部存储器时,P2口作为高8位地址输出口,在其他时候作为一般I/O接口使用。,5.1.3P2口,图5.3,5.1.3P2口,当作为准双向通用I/O口使用时,控制信号为低电平无效,多路转换器MUX接通锁存器Q端,锁存器Q端经反相器3接控制场效应管V1,其工作原理与P1相同,负载能力也与P1相同。当作为外部扩展存储器的高8位地址总线使用时,控制信号应为高电平“1”有效,多路转换开关MUX接通地址信号,来自程序计数器PC的高8位地址PCH,或数据指针DPTR的高8位地址DPH经反相器3和V1反相后复原在P2.x口的引脚上,输出高8位地址A8A15。在上述情况下,口锁存器的内容不受影响,所以,取指或访问外部存储器结束后,由于转换开关又接至左侧,使输出驱动器与锁存器Q端相连,引脚上将恢复原来的数据。,5.1.4P3口,P3口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为B0H,位访问地址为B0HB7H。P3口的功能:(1)可作I/O口使用,为准双向口。这方面的功能与P1口一样。(2)每一位均具有第2功能。,5.1.4P3口,图5.4,5.1.4P3口,当P3口作为通用I/O接口时,要求第2功能输出线保持高电平,使与非门3的输出取决于口锁存器的状态。在这种情况下,P3口仍是1个准双向口,它的工作方式、负载能力均与P1、P2口相同。当P3口作为第2功能(各引脚功能见表5.1)使用时就不能再做通用输出口使用,其锁存器Q端必须为高电平,以允许第2功能输出,在做第2功能输入时,虽仍做通用输入口,但已无实际意义。,5.1.5接口的使用原则,1.I/O接口的读、写、修改每个I/O口均有两种“读”方式:读引脚和读锁存器。读引脚:是读外部接口的电平信号,读引脚信号有效。真正读引脚的指令只有MOVA,Px读锁存器:是将接口锁存器的Q端信号读回,写锁存器信号有效。读锁存器指令主要用于读修改写指令。如下列这些指令:如:ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOVPx,y、CLRPx.y和SETPx.y。,5.1.5接口的使用原则,2.使用原则MCS-51单片机中的4个I/O口在实际使用中,一般遵循以下用法:P0口一般做系统扩展地址低8位/数据复用口,P1口一般做I/O扩展口,P2口做系统扩展地址高8位和I/O口扩展的地址译码用,P3口做中断输入、串行通用口使用。在各个口的带负载能力和接口要求上,由于P0口的输出级与P1P3口的输出级在结构上不同,所以,要求也不同。P0口的每一位可驱动8个TTL输入,在做通用I/O口使用时,输出级是开漏电路,故需外部加上拉电阻。在做地址/数据总线使用时,不需要外接上拉电阻。P1P3的输出级内部有高效的上拉电阻,每一位输出可驱动4个TTL输入。,在实际使用中,一般用户在I/O扩展时,很难计算I/O的负载能力。对扩展集成芯片,如74LS系列的一些大规模集成芯片(如8155、8255、8253、8259等),都可与MCS-51直接接口。其他一些扩展用芯片,使用中可参考器件手册及典型电路。对于一些线性元件,如键盘、码盘及LED显示等输入/输出设备,由于MCS-51单片机提供不了足够的驱动电流,应尽量设计驱动部分。,5.1.5接口的使用原则,5.2MCS-51单片机中断系统,5.2MCS-51单片机中断系统一、中断的基本概念“中断”是处理事件的一个“过程”,这一过程一般是由计算机内部或外部某种紧急事件引起并向主机发出请求处理的信号,主机在允许情况下响应请求,暂停正在执行的程序,保存好“断点”处的现场,转去执行中断处理程序,处理完后恢复现场,自动返回到原断点处,继续执行原程序。这一处理过程就称为“中断”。,5.2MCS-51单片机中断系统,中断程序与子程序的区别:调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。,5.2.1中断的基本概念,图5.5中断执行过程,1.中断源:中断源就是中断请求信号的来源。2.中断响应与返回3.优先级控制图5.6二级中断嵌套的中断过程,5.2.1中断的基本概念,二、中断源和中断请求标志中断源是指在计算机系统中向CPU发出中断请求的来源,中断可以人为设定,也可以是为响应突发性随机事件而设置。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。可分为外部中断和内部中断。,5.2.2中断源和中断请求标志,5.2.2中断源和中断请求标志,图5.7中断系统结构,IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或IT1)=0,则选择外部中断为电平触发方式,低电平有效;IT0(或IT1)=1,则选择外部中断为边沿触发方式,负跳沿有效。这两位由用户用根据需要用软件编程写入“1”或“0”,进而控制外中断请求信号方式。可以使用字节操指令,也可用位操作指令:CLRIT0;定义外中断0为电平触发方式。ORLTCON,#05H;定义两外中断均为脉冲触发方式,5.2.2中断源和中断请求标志,1外部中断由P3.2、P3.3输入中断请求信号,外部中断请求有两种触发方式:电平触发及边沿触发。用户可以通过对特殊功能寄存器TCON中IT0和IT1位的编程来选择。相应位定义格式如下:,IE0(IE1):外部中断0(或1)的中断请求标志位。(硬件置位、硬件复位)IE0(IE1)=1,表示()检测到有效的中断请求信号;IE0(IE1)=0,表示()上无有效的中断请求信号。,5.2.2中断源和中断请求标志,2内部中断内部中断有:定时器/计数器T0/T1的溢出中断,串行口的发送/接收中断。T0/T1的溢出中断标志位TF0、TF1:对外部脉冲计数由P3.4、P3.5输入脉冲信号。当T0/T1计数到由全1变为全0时,由硬件自动置位TCON的TF0或TF1,向CPU申请中断。CPU响应中断后能自动撤除中断请求信号(硬件复位)。,5.2.2中断源和中断请求标志,串行口的中断标志位TI、RI:当串行口发送完或接收完一帧信息后,通过接口硬件自动置位SCON的TI或RI位向CPU申请的。当CPU响应中断后,需用户采用软件方法清零,以便撤除中断请求信号。,5.2.2中断源和中断请求标志,串行口控制器SCONTI:串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清0。RI:串行口接收中断源。接收完一帧,由硬件置位。响应中断后,必须用软件清0。,5.2.2中断源和中断请求标志,三、中断系统控制1中断允许控制寄存器MCS-51单片机对各中断源的中断开放(允许)或关闭(屏蔽)是由内部的中断允许寄存器IE的各位来进行两级控制的。所谓两级控制是指各个中断源的允许控制位与一个中断允许总控位EA配合实现对中断请求的控制。,EA(IE.7):允许禁止全部中断。当EA=0,则禁止所有中断的响应;当EA1,则各中断源的响应与否取决于各自的中断控制位的状态。,5.2.3中断系统控制,5.2.3中断系统控制,X(IE.6):保留位,无意义。ET2(IE.5):定时计数器2(8052型单片机)的溢出或捕获中断响应控制位。ET2=0则禁止中断响应(关中断);ET2=1为允许中断响应(开中断)。ES(IE.4):串行通信接收发送中断响应控制位。ES0,禁止中断响应(关中断);ES=1,允许中断响应(开中断)。ETi(IE.3,IE.1):定时器计数器i(i=0、1)的溢出中断响应控制位。ETi=0,禁止中断响应(关中断);ETi=1,则允许中断响应(开中断)。EXi(IE.2、IE.0):外部中断i()中断响应控制位。EXi=0,禁止中断响应(关中断);EXi=1则允许中断响应(开中断)。,5.2.3中断系统控制,例如:要使INT0开中(其余关中),可执行下列指令:MOVIE,#1000000lB;或者:SETBEA;SETBEX0;,5.2.3中断系统控制,2中断优先级控制CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。MCS-51单片机的中断源有两个用户可控的中断优先级,即高、低中断优先级,从而实现中断嵌套。,5.2.3中断系统控制,CPU响应中断的原则是:1)先高后低如果多个中断请求同时出现,CPU首先响应优先级别最高的中断请求;2)高可断低高优先级的中断请求可中断正在执行的低优先级中断服务程序,实现中断嵌套;3)同低不断同级或低优先级的中断请求不能中断正在执行的中断服务程序。如果有两个或两个以上的同一优先级别的中断源同时向CPU申请中断,则这些同级中断源的中断优先权按CPU对内部硬件的查询次序决定。,5.2.3中断系统控制,IP寄存器的格式如下:(可通过软件设置,定义各中断源的中断优先级别)、(IP.6、IP.7):保留位,无定义。PT2(IP.5):T2的中断优先级设置位。通过编程设置PT2=1,则定义为高优先级中断;设置PT2=0,则定义为低优先级中断。PS(IP.4):串行通信中断优先级设置位。软件设置PS=1,则定义为高优先级中断;设PS=0,则定义为低优先级中断。,5.2.3中断系统控制,PTi(IP.3、IP.1):Ti中断优先级设置位。软件设置PTi=1,则定义为高优先级中断;设置PTi=0,则定义为低优先级中断。PXi(IP.2、IP.0):外部中断i中断优先级设置位。软件设置PXi=1,则定义为高优先级中断;设置PXi=0,则定义为低优先级中断。例如:若要将INT1、串行口设置为高优先级,其余中断源设置为低优先级,可执行下列指令:MOVIP,#00010100B;,5.2.3中断系统控制,当同时有两个或两个以上优先级相同的中断请求时,则由内部按查询优先顺序来确定该响应的中断请求,其优先顺序由高向低顺序排列。优先顺序排列如下:,中断优先原则:1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级、同时中断,事先约定。,5.2.4中断处理过程,四、中断处理过程中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。1.中断请求中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。,5.2.4中断处理过程,2中断响应1)响应的条件CPU在每个机器周期的S6按照优先级查询中断标志位,当相应中断源有中断请求且满足如下条件之一时,MSC-51单片机响应中断。(1)无同级或高级中断正在处理或CPU处在非中断响应状态,CPU处于开中断(即EA=1)状态且相应中断是开放的(中断允许寄存器IE相应位置1)。(2)若CPU正在响应某一中断请求时又来了新的中断请求,则应满足高级中断可以中断低级中断,实现中断嵌套;低级中断只能等待现有中断服务完成后再被响应的原则。(3)若CPU现行执行的指令为RETI或任何访问IE、IP(如SETBEA)的指令时,则执行完该指令且紧随其后的另一条指令也已执行完毕后才响应该中断请求。,5.2.4中断处理过程,2)中断响应过程首先,根据中断源的优先级高低,对相应的优先级状态触发器置1;然后,保护断点,把当前程序计数器PC的内容压入堆栈。其次,封锁同级和低级中断,以防在响应中断期间受其他中断的干扰,清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);最后,根据中断源入口地址,转入执行相应中断服务程序,各中断服务程序的入口地址见表5.1。,5.2.4中断处理过程,表5.1中断源入口地址,5.2.4中断处理过程,3)中断响应时间所谓中断响应时间是指CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。MCS-51单片机响应中断的最短时间为3个机器周期,时间最长需要8个机器周期。,5.2.4中断处理过程,3执行中断服务程序中断服务程序应包含以下几部分:保护现场:中断时刻单片机存储单元中的数据或状态.(2)允许中断和禁止中断在CPU执行当前中断服务程序的过程中,往往又会有其它中断源的中断请求出现。(3)执行中断服务程序主体,完成相应操作(4)恢复现场,5.2.4中断处理过程,4中断返回在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:恢复断点地址。开放同级中断,以便允许同级中断源请求中断。,5.2.5中断请求的撤除,五、中断请求的撤除中断源发出中断请求,相应中断请求标志置“1”。CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。对外中断电平触发方式,需要采取软硬结合的方法消除后果。对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI。,5.2.6中断的应用及编程,六、中断的应用及编程中断初始化设置堆栈指针SP定义中断优先级定义外中断触发方式开放中断安排好等待中断或中断发生前主程序应完成的操作内容。,5.2.6中断的应用及编程,中断服务主程序在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。根据需要保护现场。中断源请求中断服务要求的操作。恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。中断返回,最后一条指令必须是RETI。,5.2.6中断的应用及编程,例5-1若要求外部中断引脚为边沿触发方式,以及处于高中断优先级,编写中断系统初始化程序。解:程序的编制有两种方法,一种是采用位操作指令进行编制,另一种是字节型指令编制。程序分别如下。方法一:SETBEASETBEX1;开INT1中断SETBPX1;令INT1为高优先级SETBIT1;令INT1为边沿触发方式方法二:MOVIE,#84H;开INT1中断ORLIP,#04H;令INT1为高优先级ORLTCON,#04H;令INT1为边沿触发方式,5.2.6中断的应用及编程,例5-2:单片机通过P1口以中断方式向外设输出数据,当外设准备好接收数据时,就发出选通信号,经触发器和非门至INT0,如下图所示。请编制相应程序。,5.2.6中断的应用及编程,解:当外设准备好接收一个数据后,发出选通信号,使触发器输出高电平后经非门至INT0引脚,向CPU发出中断请求,CPU响应这个中断请求后,在中断处理程序中先撤除中断请求信号,(通过P3.0=1,使INT0=1)再由P1口将单片机内部的数据输出到外设。ORG0000HSTART:LJMPMAINORG0003HLJMPIINT0ORG0030H;主程序MAIN:CLRIT0;低电平触发SETBEASETBEX0;开中断SETBPX0;优先级设置MOVDPTR,#1000H;外设首地址.,5.2.6中断的应用及编程,ORG0100HIINT0:PUSHPSW;中断处理程序PUSHACCCLRP3.0NOPNOPSETBP3.0;撤除INT0MOVA,P1;输入数据MOVXDPTR,A;保存数据INCDPTR.POPACC;恢复现场POPPSWRETI;返回主程序,5.3MCS-51单片机定时器/计数器,5.3MCS-51单片机定时器/计数器软件定时:循环程序,定时准确,无需硬件电路,但增加CPU开销硬件定时:硬件电路实现,不占用CPU时间,使用不够方便可编程定时/计数器:对系统时钟脉冲的计数定时,计数值通过程序设定,定时准确,使用灵活方便,5.3MCS-51单片机定时器/计数器,定时器/计数器可以是独立的集成芯片,也可以构成于单片机内部,但无论何种形式都具有以下共性:1、定时、计数器的核心部件是一个加1计数器。两种工作方式的区别在于计数脉冲来源,定时器/计数器可以工作于计数方式也可以工作于定时方式。书P812、定时器/计数器的计数值在范围内是可变的,这取决于计数器的位数。计数的最大值也就限定了定时的最大值。书P853、在到达设定的定时或计数值时发出溢出中断申请,实现定时控制。PPT5.2节,5.3MCS-51单片机定时器/计数器,在MCS-51单片机内部有两个16位定时器/计数器T0和T1,它们均可作为定时器或计数器使用,均具有4种不同的工作方式,用户可通过对特殊功能寄存器的编程,方便地选择适当的工作方式及设定T0或T1工作于定时器还是计数器。,(1):何时控制启动计数器?问题:(2):如何控制是定时还是计数?(3):如何控制定时/计数的长短?,5.3.1T0、T1的结构,一、T0、T1的结构1内部结构,外部输入脉冲,图5.8,1加法计数器的初值可以由程序设定,设置的初值不同,加法器达到溢出所需的计数值或定时时间就不同。2对定时器/计数器工作模式、工作方式的设定及控制是通过方式选择寄存器TMOD和控制寄存器TCON这两个特殊功能寄存器来完成的。,5.3.1T0、T1的结构,2定时器/计数器方式选择寄存器TMOD定时器/计数器T0、T1都有4种工作方式,可通过程序对TMOD的编程来设置。其位定义如下:,5.3.1T0、T1的结构,C/:定时或计数功能选择位,“1”时为计数方式;“0”时为定时方式。M1、M0:定时器/计数器工作方式选择位,,5.3.1T0、T1的结构,5.3.1T0、T1的结构,GATE:门控位,用于控制定时器/计数器的启动是否受外部引脚中断请求信号的影响。当GATE=0时,TRx=1,启动Tx计数;TRx=0,停止Tx计数。当GATE=1时,仅当TRx=1且=1时,才允许Tx计数,该位由软件进行设置。GATE=0TRx=1一般情况下,选用该方法,3定时器/计数器控制寄存器TCON,TF0(TF1):T0(T1)溢出中断标志位。当T0/T1启动计数后,从初值开始加1计数,当T0(T1)计数溢出时,由硬件将该位置位,并在允许中断的情况下,向CPU发出中断请求信号,CPU响应中断转向中断服务程序时,由硬件自动将该位清零,TF0(TF1)也可以由程序查询或清零。,5.3.1T0、T1的结构,5.3.1T0、T1的结构,TR0(TR1):T0(T1)运行控制位。当GATE=0时,TRx=1,启动Tx计数;TRx=0,停止计数。当GATE=1时,仅当TRx=1且=1时,才允许Tx计数,该位由软件进行设置。控制字中其余用于中断控制。,5.3.2T0、T1的4种工作方式,二、T0、T1的4种工作方式T0和T1都具有4种工作方式,当工作于方式0、1、2时,T0和T1功能相同,但工作在3时,其功能不同。下面分别介绍这4种工作方式。1工作方式0(M1M0=00)定时/计数方式0是13位计数器,即THx高8位(作计数器)和TLx的低5位(32分频的定标器)构成,TLx的高3位未用。(x=0或1)计数时,TLx的低5位溢出后向THx进位,THx溢出后将TFx置位,并向CPU申请中断。,图5.9定时/计数方式0:13位计数器示意图,5.3.2T0、T1的4种工作方式,2工作方式1(M1M0=01),由THx和TLx组成16位计数器。其组成结构与定时计数方式0完全相同,但计数范围比定时计数方式0扩大了很多。计数信号从TLx的低位输入,计数每溢出一次,THx计数器加1。当16位由全“1”变成全“0”时,最高位产生溢出,置位TFx,向主机请求中断。,图5.10定时计数方式1:16位计数器示意图,5.3.2T0、T1的4种工作方式,5.3.2T0、T1的4种工作方式,模式0、1的特点:,13位和16位的计数器模式。启动后,从某一个初值的基础上进行“加一”计数。当计到“全”时再来一个计数脉冲,计数器就会产生一个“溢出”即TFx=1,此时计数器本身为“全零”。如果需要重复性的完成某一值的定时或计数,需要在每一次计数前不断的重新预装初值,称之为“软件重装初值”。,5.3.2T0、T1的4种工作方式,3工作方式2(M1M0=10)TLx自动设置初始值,由TLx作为8位计数器,THx作为计数初值寄存器,设置初值时同时送THx和TLx。TLx进行加1计数,在计数溢出时,不仅置溢出标志TFx,还自动将THx中的内容自动送入TLx,使TLx重新从初值开始计数。THx的内容可由软件置入,且在计数器工作期间其值不变。非常适合进行重复性定时的场合,如产生连续方波信号等。编成中省去了软件重装初值的麻烦。方式2适用于产生固定时间间隔的控制脉冲,也可以做为串口波特率发生器。,5.3.2T0、T1的4种工作方式,图5.11定时/计数方式2:8位自动再装入计数器示意图,5.3.2T0、T1的4种工作方式,4工作方式3(M1M0=11)(只有T0有方式3),将定时器计数器T0分成两个独立的8位计数器,用TL0组成完整的8位定时器计数器(既可以定时,又可以计数),用TH0组成只能定时的8位定时器。TL0占用原T0的各个控制位、引脚和中断标志;TH0分别借用了定时器T1的TR1、TF1和ET1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志。T1无方式3,若硬设为方式3,则T1立即停止计数。T0为方式3时,T1可为方式02,仅用T1的C/T位进行控制,计数器溢出时,只能将输出送入串口或不用于中断的场合。适用场合:T0较少选用方式3,只在T1用作波特率发生器时,T0才选作方式3,T1常设为方式2的波特率发生器。,5.3.2T0、T1的4种工作方式,图5.12定时/计数方式3:二个8位计数器示意图,5.3.2T0、T1的4种工作方式,图5.13计数格式,5.3.3定时器/计数器应用举例,三、定时器/计数器应用举例1.初始化步骤,通常情况下设置顺序大致如下:(1)工作方式控制字(TMOD)的设置;(2)计数初值的计算及装入TLx、THx;(3)中断允许位ETx、EA的设置,使主机开放中断;(4)给中断优先级寄存器IP选送中断优先级字,以设定中断优先级;(5)启停位TRx的设置等。,5.3.3定时器/计数器应用举例,2.计数器初值计算方法,假设将计数器计满为0所需要的计数值为N,应装入的计数初值为X,n为计数器的位数,则:X=2n-N其中n与计数器工作方式有关。在方式0时n=13,在方式1时n=16,在方式2和方式3时n=8。,5.3.3定时器/计数器应用举例,3.定时器初值计算方法,假设定时时间为T,机器周期为Tp,即12/晶振频率。X为定时器的定时初值,则:T=(2n-X)TpX=2n-T/Tp(n同上),再将计算出的初值转换为二进制数TB,然后再分别送入THi、TLi(对于T0,i=0;对于T1,i=1),5.3.3定时器/计数器应用举例,例5-3:设定时时间T=5ms,机器周期Tp=2s,则可求得计数次数(T/TP)为5ms/2s=2500次。P85例5-2选用方式0:n=13,应设置计数初值X=213-(T/Tp)=8192-2500=5692,变成二进制数为(1011000111100)B,MOVTHi,#0B1H;送高8位MOVTLi,#1CH;送低5位(高3位为0),5.3.3定时器/计数器应用举例,选用方式1:n=16,设置计数初值为:X=216-(T/Tp)=65536-2500=63036,变成二进制数为(1111011000111100)B,MOVTHi,#F6H;送高8位MOVTLi,#3CH;送低8位,5.3.3定时器/计数器应用举例,在本例中,不能选方式2,因为28=2562500。假设需要计数100次,则可选方式2:256-100=156,变成二进制数为(10011100)B,变成十六进制数为9CH,MOVTHi,#9CH;送高8位MOVTLi,#9CH;送低8位,5.3.3定时器/计数器应用举例,例5-4:方式0应用:利用定时器/计数器T0在P1.0引脚输出周期为2ms的方波,设时钟频率为6MHz,编写相应的程序。P86例5-4可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。初值计算。因T=(2n-X)/Tp,则计数初值为:X=2n-T/Tp=213-500=8192-500=7692=1111000001100B则TH0=F0H,TL0=0CH。,5.3.3定时器/计数器应用举例,确定初始化控制字。主要对IP,IE,TCON,TMOD的相应位进行正确的设置,本例假设从系统复位开始。TMOD=00000000B=00H,TCON=0。程序设计:T0的中断服务程序,除了产生要求的方波外,还要注意将时间常数送入定时器中,为下一次产生中断做准备。,5.3.3定时器/计数器应用举例,ORG000BH;T0中断服务程序入口LJMPZD;转至INT处ORG2000H;主程序MOVTMOD,00H;置T0为定时方式0MOVTH0,0F0H;设置计数初值MOVTL0,0CHSETBEA;CPU开中断SETBET0;允许T0中断SETBTR0;启动T0HALT:SJMP$;暂停,等待中断ZD:CPLP1.0;输出方波MOVTH0,0F0H;重新装入计数初值MOVTL0,0CHRETI;中断返回,5.3.3定时器/计数器应用举例,例5-5方式2应用:假设,有一个周期为10ms的脉冲信号,加在引脚T0/P3.4上。现要求该引脚每发生一次负跳变,P1.0端就输出1个2ms脉宽的同步负脉冲,如图所示。假设单片机晶振频率为12MHz。,5.3.3定时器/计数器应用举例,解:可将T0设定为方式2计数方式,初值可设为FFH,即外部脉冲由P3.4口发生一次负跳变时,计数器加1即产生溢出,并向CPU发中断。程序在T0产生一次负跳变后,使P1.0产生2ms的同步负脉冲,可利用T1采用方式1产生2ms定时生成(初值计算)。程序如下(中断方式):,ORG0000HAJMPMAINORG000BH;T0中断入口地址AJMPLOOP1ORG001BH;T1中断入口地址AJMPITIPORGMAINMAIN:MOVTMOD,#16H;T0初始化程序MOVTL0,#0FFH;T0初值MOVTH0,#0FFHSETBTR0;启动T0,5.3.3定时器/计数器应用举例,SETBET0;允许T0中断SETBEA;开中断MOVTL1,#30H;T1置初值MOVTH1,#0F8HSETBP1.0;P1.0初始为高电平MOVIP,HERE:AJMPHERE;等待TL0/T1中断LOOP1:CPLP1.0;T0中断服务程序SETBTR1;启动T1SETBET1;允许T1中断RETIITIP:MOVTL1,#30H;T1中断服务程序MOVTH1,#F8HCPLP1.0;P1.0取反CLRET1;屏蔽T1中断RETI,5.3.3定时器/计数器应用举例,程序如下(查询方式):首先选T0为方式2,外部事件计数方式。当P3.4(T0)引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为2ms定时功能,采用方式1,使P1.0输出由1变为0。T0定时到产生溢出,使P1.0引脚恢复输出高电平。T0先计数,后定时,分时操作。START:MOVTMOD,#06H;T0方式2,外部计数方式MOVTH0,#0FFH;T0计数初值MOVTL0,#0FFHSETBTR0;启动T0计数MOVIE,#00H;关中断SETBP1.0;P1.0初始为高电平LOOPl:JBCTF0,PTF01;查询T0溢出标志,TF01时转移,且TF00(查P3.4负跳变),5.3.3定时器/计数器应用举例,SJMPLOOPl;等待T0计数溢出中断PTF01:CLRTR0;停止计数MOVTMOD,#01H;T0方式1,定时MOVTH0,#0F8H;T0定时2ms初值MOVTL0,#30HCLRP1.0;P1.0清0SETBTR0;启动定时2msLOOP2:JBCTF0,PTF02;查询溢出标志,定时到TF0=l转移,且TF00(第一个2ms到否?)SJMPLOOP2;等待T0定时溢出中断PTF02:SETBP1;P1.0置1(到了第一个500s)CLRTR0;停止计数SJMPSTART,5.3.3定时器/计数器应用举例,例5-6方式3应用:设晶振频率为6MHz,定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,通过TL0和TH0的中断分别使P1.0和P1.1产生400s和800s的方波。,解:当采用方式3时,对于TH0来说,需要借用定时器T1的控制信号。计算计数初值:X0=28-200/2=156=9CHX1=28-400/2=56=38H确定TMOD方式字:对定时器T0来说,M1M0=11、C/T=0、GATE=0,定时器T1不用,取为全0。则TMOD=00000011B=03H。,5.3.3定时器/计数器应用举例,程序如下:ORGMAIN;主程序MAIN:MOVTMOD,03H;T0工作于方式3MOVTL0,9CH;置计数初值MOVTH0,38HSETBTR0;启动TL0SETBET0;允许T0中断(用于TL0)SETBTR1;启动TH0SETBET1;允许T1中断(用于TH0)SETBEA;CPU开中断HALT:SJMPHALT;暂停,等待中断ORG000BH;TL0中断服务程序CPLP1.0;P1.0取反MOVTL0,9CH;重新装入计数初值RETI;中断返回ORG001BH;TH0中断服务程序CPLP1.1;P1.1取反MOVTH0,38H;重新装入计数初值RETI;中断返回,5.3.3定时器/计数器应用举例,注意:运行中读定时计数器可随时读写THx和TLx,比如实时显示计数值等,但要注意读取时由于分时读THx和TLx所带来的特殊性,例如先读THx再读TLx,由于读取过程中Tx一直在计数,可能会出现TLx向THx进位的情况,读的值就不正确。反之亦然,因此,先读THx再读TLx,然后再重读THx,若两次读取的THx一致,则正确,反之要全部重读。,5.4MCS-51单片机串行接口,5.4MCS-51单片机串行接口,基础知识,所谓通信是指计算机与计算机或计算机与外设之间的数据传输,这里的“信”是指信息,即是由数字和构成一个或一批数据。数据通信通常有两种方式,即并行通信和串行通信。并行通信的特点是所有的数据位被同时发送或接收,数据传送速度快,但并行通信需要多条(8、16条)数据线和控制线,传送成本高,传送距离短;串行通信的数据传送是按位进行传送的,只需两条线,一条用于发送数据,另一条用于接收数据,传送成本很低,且通信距离远,但比并行通信传输速度慢。,5.4.0MCS-51单片机的串行口,按数据的通路和传送方向不同,串行通信可分为单工、半双工、全双工3种方式。书P169单工方式(simplex):数据仅向一个方向传送,即一方始终为发送端,另一方始终为接收端,中需一根数据线即可完成数据传送。半双工方式(halfduplex):数据可双向传送,但在任一时刻只能由其中的一方发送数据,另一方接收数据,即发送和接收数据不能同时进行。半双工方式可用一条线或两条线实现。全双工方式(fullduplex):数据可以同时双向传送,即发送和接收数据同时进行,必须用两条线才能实现。,5.4.0MCS-51单片机的串行口,5.4.0MCS-51单片机的串行口,按传送的数据格式不同,串行通信又可分成异步串行通信和同步串行通信。,异步通信传送方式:在物理结构上,异步通信的双方只有数据线而没有时钟传输线。A、B双方都以自己的时钟源控制着发送的速率或对接收进行采样;由于通讯双方系统时钟往往不同,所以在异步通信中,要想保证通信的成功必须保证两点:通信双方必须保持相同的传送、接收速率(波特率);双方必须遵守相同的数据格式(字符帧)。,5.4.0MCS-51单片机的串行口,将要传送的数据由一个0点平的“起始位”引导,中间为8位(或9位)的数据位,后面有一个高电平的“停止位”数据帧格式。异步通信的字符帧格式由于添加了“起始位”和“停止位”,占用了传输时间,降低了传输效率,因此仅适用于远距离的数据通信。,起始位,停止位,0,1,MCS-51单片机的一个字符帧的格式,5.4.0MCS-51单片机的串行口,同步传送模式:在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的“时钟传输线clock”。由主控方提供时钟信号clock。由于有了时钟信号来“同步”发送或接收操作,所以被传送的数据不再使用“起始位”和“停止位”,因而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。由于同步通信多了一条“时钟线”,因此不太适合远距离的通信。,5.4.0MCS-51单片机的串行口,5.4.0MCS-51单片机的串行口,串行通信的传输速率:用于表征串行通信速率的参数称为“波特率”;波特率的单位为:位/秒(bit/s);波特率取值范围一般为:09600bit/s。影响波特率的主要因素取决于传输线的分布电容、通信电平标准和传送距离;,5.4.0MCS-51单片机的串行口,串行通信的电平标准:书P172为了增加串行通信的距离,可以采用RS-232、RS-485的通信标准。其中:TTL电平(05V):10英尺以内。RS-232标准(+12V-12V):50英尺。RS-485标准(差分输入输出):1000英尺以上。,5.4.0MCS-51单片机的串行口,5.4.0MCS-51单片机的串行口,MCS-51系列单片机内部有1个功能很强的全双工串行口,可同时发送和接收数据。它具有4种工作方式,可应用于所需的不同场合。串行通信所需的波特率可由片内定时/计数器或系统时钟产生并可通过软件设置波特率值。接收、发送过程均可工作在查询方式或中断方式,使用十分灵活。MCS-51的串行口既可以做UART(通过异步接收发送器)使用,也可以作为同步移位寄存器使用,方便地构成1个或多个并行输入/输出口,或作串并转换,用来驱动键盘与显示器。,5.4.1MCS-51单片机的串行口,一、串行口的基本构成,MCS-51单片机串行口的结构主要由数据发送/接收部分、波特率发生器和串行通信控制寄存器等组成。图5.14给出了串行口内部结构框图。,5.4.1MCS-51单片机的串行口,图5.14MCS-51系列单片机串行口内部结构图框图,5.4.1MCS-51单片机的串行口,图5.15串行口信号采样图P172图10.4,5.4.1MCS-51单片机的串行口,1数据发送和接收部分如图5.14所示,数据发送部分主要由发送数据缓冲寄存器“SBUF(发送)”、“零检测器”和“发送控制器”等部分组成;数据接收部分由接收数据缓冲寄存器“SBUF(接收)”、“接收移位寄存器”、“接收控制器”及“位检测器”等组成。在串行接收时,串行数据经过RXD(P3.0)引脚进入,经过接收移位寄存器将串行数据转换成并行数据后,移入SBUF(接收),此时,CPU可执行MOVA,SBUF指令,产生“读SBUF(接收)”脉冲,把“SBUF(接收)”中接收到的数据通过内部总线并行传送到累加器A中,完成数据在此部分的串入并出。数据接收部分采用双缓冲结构,避免了接收过程中出现数据重叠错误。,5.4.1MCS-51单片机的串行口,在串行发送时,串行数据通过TXD(P3.1)引脚送出,与接收不同,发送数据过程CPU是主动的,当CPU执行MOVSBUF,A指令时,产生“写SBUF(发送)”脉冲,累加器A中的字符数据写入SBUF(发送)缓冲寄存器。在发送控制器的作用下,将数据串行发出。完成数据在此部分的并入串出。为提高数据发送速度,发送器采用单缓冲结构。在接收和发送部分包含有两个SBUF,一个是“SBUF(发送)”,用于存放将要发送的字符数据;另一个是“SBUF(接收)”用于存放接收到的字符数据。它们是在物理结构上完全独立的两个8位缓冲寄存器,但共用一个端口地址SBUF(99H),这个重叠地址靠CPU执行不同指令区分。同时,串行口对外也有两条独立的收发信号线RXD和TXD,因此可以同时发送和接收数据,实现全双工传送。,5.4.1MCS-51单片机的串行口,波特率发生器主要由内部定时器/计数器、系统时钟信号及一些控制开关和分频器组成。它提供串行口的发送时钟TXC和接收时钟RXC。但值得注意的是,波特率发生器产生的采样脉冲须经16倍频,才是串行口的发送和接收移位时钟。串行口的接收过程基于采样脉冲(接收时钟的16倍)对RXD线的监视。当“1到0跳变检测器”连续8次采样到RXD线上为低电平时,则可确认RXD线上出现了接收数据的起始位。随后,接收控制器就从下一个数据位开始对第7、8、9三个脉冲即信号中央采样RXD线(图5.15),并遵守三中去二的原则来决定数据值。,5.4.1MCS-51单片机的串行口,2.串行口通信控制寄存器在MCS-51系列单片机的特殊功能寄存器中,有4个与串行通信有关,分别为SCON,PCON,IE和IP,它们对应的地址分别是98H,87H,A8H和B8H,其中SCON和PCON直接控制串行口的工作方式。串行控制寄存器SCON串行口控制寄存器SCON的格式如下:,D7D6D5D4D3D2D1D0,SM0、SM1:用于选择串行口4种工作方式,可由软件置位或清零。其状态组合与对应的工作方式见表5.2。,5.4.1MCS-51单片机的串行口,表5.2SM0、SM1,5.4.1MCS-51单片机的串行口,SM2:多机通信控制位。在方式2和方式3中,如置SM2=1,则接收到的第9位数据即RB8=0时,不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8=1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。当置SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。因多机通信只能选择工作于方式2和方式3,所以SM2主要用于这两种工作方式。在方式0时该位不用,必须设置为0。REN:允许串行接收控制位。若REN=0,则禁止接收;REN=1,则允许接收,该位由软件置位或复位。TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据(格式信息)。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。,5.4.1MCS-51单片机的串行口,RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据(格式信息),可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。TI:发送中断标志位。在方式0时,当发送数据第8位结束后,或在其他方式发送

温馨提示

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

评论

0/150

提交评论