




已阅读5页,还剩211页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章:单片机内部主要功能模块工作原理及应用,本章主要内容:MCS-51单片机并行端口的结构特点;定时/计数器、串行口的工作原理;“查询”及“中断”两种编程方法及对定时器、串行口进行编程。,本章目录,MCS-51单片机的8位并行输入输出端口MCS-51单片机的定时/计数器MCS-51单片机的串行接口MCS-51的中断系统,2019/12/2,3.28位并行输入输出端口,CPU,输入输出端口,外部设备,内总线,MCS-51,并行I/O端口是实现单片机与外部进行并行数据交换的通道。,2019/12/2,MCS-51单片机的并行端口具备三种工作方式,通用I/O方式:直接与外部设备连接,实现数据的并行交换。常用于“最小系统”模式的设计;总线方式:当系统要与外部ROM、RAM或ADC等器件进行连接时,采用类似于微机系统的三总线结构进行设计,部分端口承担总线的功能。此时系统称为“扩展系统”;第二功能方式:由于引脚的限制,内部信号无法正常输入输出。因此借用I/O端口引脚作为内部信号通道也是一种不得已的方法。当端口作为总线或第二功能时,就不能再做I/O。,2019/12/2,MCS-51单片机的四个并行端口P0、P1、P2和P3都是具有输出锁存功能的“准双向”端口,这些锁存器的位置都在SFR中,其地址分别为:80H、90H、A0H、B0H。出于系统功能的考虑,在硬件设计上对端口功能都有不同的要求,所以它们又具有不同的结构和特点。,2019/12/2,3.1.1P0口,3.1.2P1口,3.1.3P2口,3.1.4P3口,3.1.5并行端口在使用时应注意的几个问题,3.1.6单片机与继电器等大电流负载的接口,2019/12/2,3.1.1P0口,【特点】具有两种工作方式“通用数据I/O双向端口”;“地址、数据复用总线”。,2019/12/2,在作为通用数据I/O端口时,具有较强的输出驱动能力(8个TTL负载)。因输出是“开漏”结构,所以与MOS负载连接时,需要外接一个上拉电阻。作为“地址、数据复用总线”使用时,P0口首先输出存储器的低八位地址信号,然后变为数据总线进行数据的输入输出,所以称“分时复用总线”(注意:此时P0口不能再作为通用I/O口)。,2019/12/2,P0口的位结构图,DQ锁存器CL/Q,P0.x引脚,Vcc,地址/数据1/0,控制(=0时),读锁存器,读引脚,内部总线,写锁存器,MUX(控制=0时),Vcc,返回前一次,参见讲义235页,2019/12/2,硬件组成:,1,一个输出锁存器(D型触发器);2,二个三态门(控制读引脚或读锁存器);3,与门和MUX等元件组成的输出控制电路;4,一对场效应晶体管FET构成的输出电路.,2019/12/2,P0口的工作原理,普通I/O模式下的输出与输入原理;扩展(总线)方式下的工作原理,2019/12/2,1.P0口的I/O操作(通用I/O端口),在P0口作为通用I/O端口时,控制电路中的“控制”端为“0”电平:此时多路开关MUX接入下方的锁存器的/Q端。因与门的一个输入端为“0”,所以它使上端的FET截止。这就是P0口在做I/O口时输出为“漏极开路”结构的原因。,返回结构图,2019/12/2,数据经内总线送到锁存器的“D”端,经“/Q”端送场效管应输出极。总线送“0”时:锁存器的/Q=1,使下端的FET导通(上面的FET截止),端口呈现“0”电平;总线送“1”时:锁存器/Q=“0”,使下端的FET截止,输出极的两个FET全部截止。在这种情况下,必须通过上拉电阻的作用使端口为高电平。,返回结构图,(一)输出操作:MOVP0,A,2019/12/2,输入操作实际上有两种(参见结构图):读引脚:用于真正的外部数据输入的通道;读锁存器:在端口作输出时常使用的操作。a.读引脚:当外部信号通过端口引脚输入时,读引脚上的电平实现信号的输入。如指令:MOVA,P0;AP0此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线。,返回结构图,(二)输入操作MOVA,P0,2019/12/2,在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入。如:原来锁存器的状态为“0”态,电路将不能正确读入.要解决的方法就是让下端的FET截止,即事先向端口写一个“1”。,返回结构图,读引脚操作前要事先向该端口写“1”,2019/12/2,请注意下面的一段程序:MOVP0,#0FFH;0FFH送P0(“写1”)MOVA,P0;从P0口引脚输入数据到A你能正确的分析出指令的操作吗?上述指令执行后P0=?,返回结构图,2019/12/2,b,读锁存器:端口作输出时的一种操作在这种情况下,读入的数据不是来自引脚,而是端口内部的锁存器的内容。,P0.X,单片机的引脚设计为输出时,返回结构图,2019/12/2,当端口输出时(MOVP0,A),往往要再将前面输入的状态取回来,进行再处理然后重新输出。如:ORLP0,A将P0口前次输出的数据与累加器A的内容相“或”后在送回P0口(输出)。此时P0口的数据是从锁存器中读回的,而不是从引脚输入。上述的过程也称之谓“读修改写”操作。,为什么端口作输出时还要读入操作?,2019/12/2,凡是这种“读修改写”操作,读到的数据都是锁存器的数据而不是读引脚数据。这种“读修改写”的操作有:ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOVPx,y、CLRPx,y和SETPx,y。而真正读引脚的指令只有MOVA,P0,2019/12/2,为什么要读锁存器而不去读引脚?,为什么“读修改写”操作不是从引脚回取信号?因为:引脚信号与外部设备连接,易受外界干扰;引脚上的电平往往不能正确反映前次的输出结果。,负载,Vcc,2019/12/2,【举例】在当前状态下,将P0.2的电平变“1”,其余位不变。MOVA,#00000100BORLP0,A这里,ORL指令就是先将P0口的锁存器数据取出,与A相或,结果送回P0口。【思考】:直接使用:MOVA,#00000100BMOVP0,A是否可以?,P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7,2019/12/2,2,P0口的总线方式,控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号.在这种情况下,输出极的两个FET都处于正常的工作状态。地址、数据信息通过“地址/数据”线经反相器送至FET的输入,并输出。由于上部FET管不再被“控制”信号关闭,所以此时口线可以输出高电平,即不用外加上拉电阻。,返回结构图,2019/12/2,只要CPU执行MOVX、MOVC(外ROM)指令,P0、P2口就自动变为数据/地址总线。在进行硬件系统的设计中,如果使用了外部存储器时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口。,2019/12/2,做通用数据I/O端口并与MOS器件连接时,必须外接“上拉电阻”,否则不能正确的输出高电平;在输入操作前,必须先向端口“写1;“读引脚”与“读锁存器”是不同的两个数据通道;在总线方式时,P0口不能再做通用的I/O端口。它分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。,返回,返回结构图,P0口特点小结:,2019/12/2,特点:单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。,3.1.2P1口的位结构图,DQ锁存器CL/Q,P1.x引脚,Vcc,读锁存器,读引脚,内部总线,写锁存器,内部上拉电阻,返回,返回前一次,2019/12/2,3.1.3P2口特点:“通用数据I/O端口”和“高八位地址总线”端口,DQ锁存器CL/Q,P2.x引脚,Vcc,地址/数据1/0,控制,读锁存器,读引脚,内部总线,写锁存器,MUX(地址/数据=0),内部上拉电阻,返回上一次,2019/12/2,注意:使用外数据存储器时,P2口分两种情况:1,使用256B的外部RAM时,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,所以在这种情况下,P2口仍然可以做通用I/O端口。如:movxa,r0或movxa,r12,如果访问外部ROM或使用大于256BRAM时,P2口必须作为外存储器的高八位地址总线。如:movxa,dptr;访问外部数据存储器movca,a+dptr;访问外部程序存储器这里使用了16位的寄存器DPTR,上一页,返回,2019/12/2,3.1.4P3口特点:通用I/O端口、多用途端口,DQ锁存器CL/Q,P3.x引脚,第二输出功能,读锁存器,读引脚,内部总线,写锁存器,Vcc,返回,第二输入功能,2019/12/2,在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。在通用I/O模式下,“替代输出功能”端为“1”电平,以保证与门打开。原则上在进行系统设计时,P3口不做通用I/O口,以充分利用单片机的内部模块资源。,2019/12/2,P3口各位的第二功能,2019/12/2,3.1.5并行端口使用中应注意的问题,如何使用并行端口来直接驱动电流比较大的负载(如:LED)?是采用“拉电流”还是“灌电流”?,Px.y,Vdd,Px.y,Vdd,Vdd,灌电流方式输出”0”点亮LED,拉电流方式输出高电平点亮LED,返回,2019/12/2,使用灌电流的方式与电流较大的负载直接连接时,MCS-51的端口可以吸收约20mA的电流而保证端口电平不高于0.45V(见右上图),但驱动逻辑并不符合人们的日常习惯。采用拉电流方式连接负载时,MCS-51所能提供“拉电流”仅仅为80A,否则输出的高电平会急剧下降.如果我们采用右下图的方式,向端口输出一个高电平去点亮LED,会发现端口输出的电平不是“1”而是“0”!【注意】:现在已出现如PIC等单片机可以提供较大的“拉电流”,具体问题灵活掌握。,2019/12/2,3.1.6单片机与大电流负载的接口,为了提高系统的可靠性和安全性。在一般设计中并行端口不是直接与负载连接,往往使用驱动电路(如74LS244等)做缓冲、驱动。可以采用通向驱动也可以采用反向驱动。,Px.y,Vcc,Px.y,Vcc,同相驱动,反相驱动,2019/12/2,为了保证单片机系统的安全,减少外部电路对系统的干扰,采用管电隔离是一种有效的方法。,J,Vcc,Vdd,Px.y,A,B,更安全的驱动方式光电隔离,注意:Vcc与Vdd是两套独立的电源系统,2019/12/2,作业(二):,单片机时序中的时钟周期由什么因素确定?指令执行的快、慢与什么有关?单字节的指令一定就比双字节指令快吗?举例在执行MOVX、MOVC(片外)指令时,外部存储器如何获得地址、数据信息?MOVXA,R0与MOVXA,DPTR在端口使用上有何区别?,2019/12/2,端口如果做输入口时,要注意什么?P0口做输出时,要注意什么?MCS-51的端口可以采用“拉电流”的方式输出较大的电流吗?写出P0、P1、P2和P3口在SFR中的地址。,返回本节,返回本章目录,2019/12/2,3.2MCS-51单片机的定时/计数器,本节内容:了解定时/计数器的作用;定时和计数两种方式的区别;定时/计数器的结构与工作原理;利用相关寄存器对定时计数器初始化及编程。,2019/12/2,定时、计数是计算机经常要处理的操作。如:利用单片机产生某一频率的方波(定时);利用单片机作工业生产线上的产品数量统计、电机转速的测量(计数)等。,2019/12/2,以定时为例:通常有两种方法实现。软件延时法:利用指令(延时子程序)运行所消耗的时间实现所需的定时时间。特点:由CPU控制,占用CPU的资源;硬件法:利用一个硬件电路实现所需的时间定时,一旦时间到边产生一个标志信号通知CPU。特点:由CPU控制定时的启动,但定时过程由专用模块实现,CPU不参与其过程。所以提高了CPU的工作效率。,2019/12/2,定时/计数器就是专用于产生延时和计数的外围模块,是单片机内部重要的铸成部分。定时计数器还可以构成“输入捕捉”、“输出比较”和“脉宽调制”简称CCP模块。这是新一代单片机内部结构的一个标志。使单片机的应用更加灵活和方便。不难看出,作为一个嵌入式控制器,其内部所包含的定时/计数器的数量已经成为衡量其功能的重要指标。,2019/12/2,本章目录,3.2.0定时/计数器工作方式与原理:3.2.1定时/计数器的四种工作模式3.2.2MCS-51定时/计数器的控制和状态寄存器3.2.3定时计数器的初值TC计算3.2.4:定时/计数器应用,继续,2019/12/2,定时/计数器工作方式与原理,产生延时的硬件逻辑电路,它可以完成两种不同的方式工作-“定时”、“计数”;使用硬件电路延时,可以提高CPU的工作效率。,2019/12/2,定时:产生一个标准的时间间隔;如20mS,100mS或1000mS等.单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。,20mS,40mS,MCS-51Px.y,输出波形,2019/12/2,计数:对外部的事件(脉冲)进行统计。外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但可以进行统计(计数)。当达到所要求的计数值时,单片机进行相应的操作。,MCS-51T0(T1)端口,外部脉冲,外部设备,2019/12/2,单片机检测产品数量示意图,P0口MCS-51T0,红外线扫描发射器,红外线接收电路,产品包装控制器,产品生产线,产品,传送带,2019/12/2,定时/计数器的基本模型,CY,计数脉冲CP,溢出标志,8位的加一计数器,定时、计数器的核心部件是一个计数器。两种工作方式的区别在于计数脉冲来源;,2019/12/2,3,MCS-51单片机定时/计数器的工作原理,N位增量计数器,TF,N位初值寄存器,系统内部时钟fosc,启动控制TR,外部脉冲T0或T1引脚,定时/计数控制C/T,计数器溢出中断信号,计数脉冲CP,C/T=0,C/T=1,定时、计数时间到标志,(1):何时控制启动计数器?问题:(2):如何控制是定时还是计数?(3):如何控制定时/计数的长短?,2019/12/2,TR.定时计数器的启动控制开关。TR=1:计数器开始计数;TR=0:计数器停止计数。C/T.计数器输入脉冲选择开关,决定着计数器的“定时”或“计数”的两种工作方式。C/T=0:计数器接收内部时钟信号fosc-定时方式;C/T=1:计数器接收引脚上的外部信号-计数方式。TF.计数器溢出标志。TF=1:定时或计数时间到,可以采用查询或中断方式处理;初值寄存器:预装用来决定计数器产生溢出周期的参数,此参数决定着定时或计数的周期。通常要预算并送入初值寄存器中。,2019/12/2,3.2.1定时/计数器的四种工作模式,在MCS-51单片机内部,具有两个完全相同的定时计数器T0、T1。它们都具有两种工作方式:定时和计数;无论是定时或计数方式,又都有具备四种工作模式,以根据实际要求达到最佳的工作状态。定时计数器的工作方式、工作模式是由SFR中的TMOD内容来决定的。因此对其方式、模式的设定是靠对TMOD的初始化编程实现的。,2019/12/2,1,模式0:13位计数器模式,TH1,TL1,震荡器,1/12,(8位),(低5位),TF1,中断,启动控制,T1引脚,TR1,GATE,INT1,高三位弃用,C/T=0,C/T=1,13位加1计数器,在某一个初值的基础上加1计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”TF1=1。由于低8位计数器中的高三位没有参与工作,故填装初值时应“避开”此三位。,2019/12/2,类同于模式0。由于两个计数器为完整的8位,故将计算好的16位初值可直接填装到TH、TL中。,TL1,TH1,震荡器,1/12,(8位),(8位),TF1,中断,启动控制,T1引脚,TR1,GATE,INT1,C/T=0,C/T=1,2,模式1:既16位计数器模式,16位加1计数器,返回上一次,2019/12/2,模式0、1的特点,13位和16位的计数器模式。启动后,从某一个初值的基础上进行“加一”计数。当计到“全”时再来一个计数脉冲,计数器就会产生一个“溢出”即TF=1,此时计数器本身为“全零”。如果需要重复性的完成某一值的定时或计数,需要在每一次计数前不断的重新预装初值,称之为“软件重装初值”。,2019/12/2,TL做计数器,TH做初值寄存器,工作前TL1,TH1分别预置相同的初值。TL1计数时,产生溢出的同时,将TH1中的初值自动重装TL1。TL1继续计数。,TL1(8位),TH1(8位),震荡器,1/12,TF1,中断,控制,T1引脚,TR1,GATE,INT1,C/T=1,C/T=0,3,模式2:8位自动重装初值模式,8位加1计数器,8位初值寄存器,2019/12/2,模式2的特点及应用,8位计数器的模式,定时或计数的范围远远小于模式0和模式1;具备初值“硬件自动重装”功能,非常适合进行重复性定时的场合,如产生连续方波信号等。编成中省去了软件重装初值的麻烦;在MCS-51单片机中,T1设定成此模式用于做串行口波特率发生器。,2019/12/2,将T0和T1重新进行“拆分、组合”。将T0变为由TH0,TL0组成的两个独立的8位定时/计数器。,TL0,震荡器,1/12,TF0,中断,控制,T0引脚,TR0,GATE,INT0,C/T=0,C/T=1,TH0,TF1,中断,控制,TR1,Fosc/12,4,模式3组合扩展模式(仅适用于T0),2019/12/2,【注意】:TH0,TL0及T1的各自特点:1,TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式;2,TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志;3,此时,由于T1缺少了启动控制信号TR1和溢出标志TR1,那么在模式3时,T1是如何启动和工作?4,模式3就是将单片机原有的T0、T1两个计数器变成三个独立的计数器。其中T1要事先设定为模式2(串行口的波特率发生器)并启动起来。,返回结构图,2019/12/2,在模式3时T0,T1的电路结构图,TL0八位定时/计数器,TH0八位定时器,TL1,TF0,TF1,将T0分解为两个计数器TL0:8位定时/计数器;TH0:8位定时器(借用TR1和TF1),T1(模式2)做波特率发生器。此种方式不用反复启动和查询标志,返回结构图,TH1,2019/12/2,GATE信号的作用,GATE=0时:当TR1=1时,启动定时/计数工作。一种定时计数器通常的工作方式;GATE=1且TR=1时:INT1=1时,开始工作;INT=0时,计数器停止计数。此方式用于测量INT1脚上输入的正脉冲的脉宽。,TR0=1,GATE=1,/INT0,0,1,1,0,0,启动计数器,2019/12/2,定时/计数器4种模式比较(计数方式),2019/12/2,定时/计数器4种模式比较(定时方式),T=(M-TC)t其中,T:定时时间,M:计数器的模,TC:计数初值,t:计数器计数脉冲的周期(t=fosc/12)。,2019/12/2,3.2.2定时/计数器的控制和状态寄存器,GATE选通门:GATE=0时,只要TR=1,计数器就开始工作;GATE=1时,只有INT=TR=“1”时,计数器工作(用来测量INT脚高电平脉冲的宽度)。C/T计数、定时方式选择位:C/T=1时,计数方式。C/T=0时:定时方式。M1、M0模式选择:确定四种工作模式.,定时/计数器1,定时/计数器0,1.模式控制寄存器TMOD(SFR的地址:89H),结构图,2019/12/2,TF0定时器T0的溢出标志:计数器溢出时硬件自动置位,即TR=1。进入中断后再由硬件自动清除(TF0=0);TR0计数器T0的控制位:由软件设定:TR0=1计数器开始工作;TR0=0计数器停止计数。TF1、TR1同上。,2,控制寄存器TCON(SFR地址:88H),返回前一次,2019/12/2,IE1,IE0外部中断INT1,INT0的请求标志:当单片机检测到INT引脚上有下降沿时,IE=1申请中断.进入中断服务程序时,硬件自动清除IE标志.IT1,IT0外中断触发类型控制:IT=1时,外中断信号的下降沿触发IE标志;IT=0时,外中断信号的低电平触发IE标志。,控制寄存器TCON(SFR地址:88H),返回前一次,2019/12/2,3.2.3定时计数器初值TC的计算,计数器TH、TL中的初值TC决定着计数器溢出的时间。根据具体的实际应用的需要,计算出对应的TC值是对定时/计数器初始化的重要步骤;初值TC的大小与系统的工作频率fosc和定时计数器的工作模式有关。,2019/12/2,(一)计数器工作方式下的TC计算,TC=M-C其中;M-计数器的模模式0:M=213=8192模式1:M=216=65536模式3:M=28=256C-要求的计数值,2019/12/2,(二)定时工作方式下的TC计算,TC=M-T/T计数其中;M-计数器的模模式0:M=213=8192模式1:M=216=65536模式3:M=28=256T计数-计数器计数脉冲周期=(1/fosc)12T-要求的定时时间值,2019/12/2,TC计算举例(一),计数方式:要求每计100个脉冲定时器产生一次溢出。【解1】选择模式2。TC=256-100=156=9CHMOVTH0,#9CHMOVTL0,#9CH【解2】选择模式1。TC=65536-100=65436=FF9CHMOVTH0,#0FFHMOVTL0,#9CH【思考题】若选用模式0,TC=?,如何编写指令?,2019/12/2,TC计算举例(二),定时方式:要求T0产生50mS的定式。【解1】选择模式1。TC=M-T/T计数TC=65536(50mS*1000)/1S=6553650000=15536=3CB0HMOVTH0,#3CHMOVTL0,#0B0H【思考题】为什么选择模式1?,2019/12/2,3.2.4:定时/计数器应用,学习定时/计数器的编程方法:首先,根据实际应用,确定:工作方式的选择(定时或计数?);工作模式的确定(取决于定时或计数的范围);计算初值并装载TH、TL寄存器中;启动定时器开始工作。上述操作主要体现在对TMOD、TCON的初始化。,2019/12/2,(一)定时器方式1应用举例,利用单片机的P1.0产生一个频率为50HZ的对称方波。【解】:使用T0。确定工作方式、工作模式和定时初值。1.选择定时方式(C/T=0);2.选择模式1(M2、M1=01),3.计算初值TC。TC=65536-5ms/1us=60536=EC78H即TH=0ECH,TL=78H。4.试编程。,10ms,5ms,5ms,2019/12/2,用单片机设计一个方波发生器示意图,MCS-51P1.0,TMOD00000001,TCON,2019/12/2,ORG1000HSTRAT:MOVTMOD,#01H;设定时器为定时,模式1SETBTR0;启动定时器T0LOOP:MOVTH0,#0ECH;设定时初值MOVTL0,#78HJNBTF0,$;定时时间到?CLRTF0;清T0标志CPLP1.0;P1.0取反SJMPLOOP;循环继续END,程序清单(查询法),返回本节目录,2019/12/2,程序流程图(查寻法),设定T0的模式,启动T0,设定定时初值,TF0=1,清标志,CPLP1.0,N,Y,2019/12/2,思考题:若采用模式0如何编程?,模式0时(13位模式):TC=8192-5ms/1us=3193=0C78H=0000110001111000B=0110001111000B,高8位TH0低5位TL0,MOVTH0,#60HMOVTL0,#18H【注意】低8位中的高三位用0来填充,即00011000,2019/12/2,(二)定时器方式1应用举例,利用P1.0口线输出周期为2S的方波。【解】如何产生1S(1000ms)的定时?1000ms的定时由50ms累计20次。1,选择T0且设定为定时方式,模式1。2,TC=65535-50ms/1us=3CB0H3,TMOD控制字为:00000001B=01H4,T0采用中断方式,既每50ms产生一次中断,中断20次便是1S。,软件重装初值,R0=0?,N,Y,CPLP1.0,2S,1S,1S,P1.0,20R0,R0-1R0,RETI,BRT0,中断服务程序,2019/12/2,ORG0000HLJMPSTARTORG1000HSTART:MOVTMOD,#01H;设T0为定时方式,模式1MOVTH0,#3CH;50mS定时初值MOVTL0,#0B0HSETBTR0;启动定时器T0MOVR0,#14H;计数器R0赋初值20LOOP:JNBTF0,$;等待50mS定时BRT0:DJNZR0,NEXT;定时到计数器R0减一,R00Z转NEXTCPLP1.0;P1.0输出取反MOVR0,#14H;计数器R0重赋初值20NEXT:MOVTH0,#3CH;软件重装初值MOVTL0,#0B0HSJMPLOOP;返回LOOP继续END,TMOD寄存器,查询方式编程,2019/12/2,(三)定时器门控位GATE的应用,如果GATE=1,TR=1时电路是否计数取决于/INT0:/INTE0=1时开始计数;/INTE0=0,电路停止计数。利用这一特点,可以实现测量外部脉冲的宽度。,计数器,震荡器,1/12,TF0,中断,计数控制,T0引脚,TR0,GATE,INT0,C/T=0,C/T=1,MCS-51INT0,2019/12/2,解题步骤:将外部脉冲接到P3.2(/INT0)上,使用T0且C/T=0,且令GATE=1;计数器TH0、TL0原始初值为00H,且设为模式1(16位);在/INT0=0时启动T0计数器(TR0=1);当/INT0=1时,定时器T0自动开始计数;当/INT0=0时计数自动停止计数,此时TH0、TL0中的计数值就是与脉冲宽度相对应得数据。,MCS-51INT0,SETBTR0T0开始计数计数停止(TR0=1)(/INT0=1)(/INT0=0)准备阶段计数阶段完成计数,外部脉冲,2019/12/2,MOVTMOD,#09H;设定T0为模式1且GATE0=1MOVTH0,#00HMOVTL0,#00H;计数器原始清零MOVR0,#20H;设置数据区指针并原始赋初值JBINT0,$;等待P3.2引脚上的脉冲变低,寻找准备阶段SETBTR0;INT0变低后,TR0置一(但不计数)JNBINT0,$;若INT0低电平则等待,准备计数阶段JBINT0,$;若INT0高电平则等待(硬件开始计数)CLRTR0;INT0变低后,关闭T0(停止计数)MOVR0,TH0INCR0MOVR0,TL0;保存计数器T0的计数值,MCS-51INT0,SETBTR0T0开始计数计数停止(TR0=1)(/INT0=1)(/INT0=0)准备阶段计数阶段完成计数,外部脉冲,2019/12/2,程序流程图,设定T1模式模式1,GATE=1,TH1、TL1原始清零,数据指针R0赋初值,INT1=0?,SETBTR1,INT1=0?,INT1=1?,CLRTR1,取TH、TL值,N,N,N,等待低电平,Y,准备计数,等待高电平,高电平是自动计数并等待低,Y,Y,低电平时完成计数,返回本节目录,设fosc=12MH,则脉宽T=(THL、TL0)1,2019/12/2,3.3MCS-51单片机的串行接口,本节内容:串行通讯的基本概念;MCS-51单片机串行接口的工作模式;串行接口应用及编程。,2019/12/2,本节目录,3.3.0单片机系统中的串行接口及特点,3.3.1数据缓冲寄存器SBUF,3.3.2串行口控制寄存器SCON,3.3.3串行口的模式0,3.3.4串行口模式1,3.3.5串行口模式2、3,3.3.6波特率及定时器T1的设定,返回上一页,继续,2019/12/2,单片机系统中的串行接口及特点,串行接口有两种工作方式:异步通信方式:两台微处理器之间或远距离低成本数据传输的有效方法。同步方式:在嵌入式系统硬件设计中,采用同步串行接口实现系统内部单片机与外围模块之间新的接口形式而越来越多的被采用。,2019/12/2,当前嵌入式系统流行的串行接口,异步串行UART、同步串行USRT总线接口;SPI(Microwire)总线接口-MOTOROAL、NS;I2C总线接口-PHILIPS;1-Wire总线接口-Dallas;CAN总线接口-Bosch;USB总线接口-Compaq等。,从机,从机,从机,从机,主机,2019/12/2,串行通信的基本概念:,(一)串行通信的两种基本方式(二)串行通讯的工作制式(三)串行通信的传输速率(四)串行通信的电平标准(五)MCS-51单片机的串行接口,2019/12/2,(一)串行通信的两种基本方式,异步通信传送方式:在物理结构上,异步通信的双方只有数据线而没有时钟传输线。A、B双方都以自己的时钟源控制着发送的速率或对接收进行采样;由于通讯双方系统时钟往往不同,所以在异步通信中,要想保证通信的成功必须保证两点:通信双方必须保持相同的传送、接收速率(波特率);双方必须遵守相同的数据格式(字符帧)。,2019/12/2,将要传送的数据由一个0点平的“起始位”引导,中间为8位(或9位)的数据位,后面有一个高电平的“停止位”数据帧格式。异步通信的字符帧格式由于添加了“起始位”和“停止位”,占用了传输时间,降低了传输效率,因此仅适用于远距离的数据通信。,起始位,停止位,0,1,MCS-51单片机的一个字符帧的格式,2019/12/2,同步传送模式:在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的“时钟传输线clock”。由主控方提供时钟信号clock。由于有了时钟信号来“同步”发送或接收操作,所以被传送的数据不再使用“起始位”和“停止位”,因而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。由于同步通信多了一条“时钟线”,因此不太适合远距离的通信。,2019/12/2,同步发送、接收示意图,主控方,被控方,data,clock,主控方,被控方,data,clock,主控方发送数据主控方接收数据,2019/12/2,(二)串行通讯的工作制式,按照串行通讯中数据传送的方向与工作模式,可将其划分为三种工作制式:单工模式(simplex);半双工模式(halfduplex);全双工模式(fullduplex)。,2019/12/2,串行通讯的工作制式(一),单工模式(simplex):通讯的A方只能送,而B方只能接收广播式。例如:除了用于远程通信外,系统内部单片机以串行方式接收外围芯片(ADC)的数据;或者控制外围芯片(DAC、LCD等)工作。,发送方A,接收方B,TXD,RXD,2019/12/2,串行通讯的工作制式(二),半双工模式(halfduplex):在某一时刻A方只能发送,B方只能接收;而在另一时刻B方只能发送,A方只能接收对讲机模式。例如:除了用于远程通信外,系统内部单片机与串行接口的RAM、E2PROM之间的数据交换。,发送方A,接收方B,TXD,RXD,TXD,RXD,2019/12/2,串行通讯的工作制式(三),全双工模式(fullduplex):A、B双方可以同时发送和接收数据手机模式。例如:两台单片机系统之间的数据串行交换。,发送方A,接收方B,TXD,RXD,TXD,RXD,2019/12/2,(三)串行通信的传输速率,用于表征串行通信速率的参数称为“波特率”;波特率的单位为:位/秒(bit/s);波特率取值范围一般为:09600bit/s。影响波特率的主要因素取决于传输线的分布电容、通信电平标准和传送距离;,2019/12/2,(四)串行通信的电平标准,为了增加串行通信的距离,可以采用RS-232、RS-485的通信标准。其中:TTL电平(05V):10英尺以内。RS-232标准(+12V-12V):50英尺。RS-485标准(差分输入输出):1000英尺以上。,2019/12/2,(五)MCS-51单片机的串行接口,具有一个“全双工”的通讯能力串行接口。其中;P3.0端口作RXD异步接收端;P3.1端口作TXD异步发送端。包含“同步通信”和“异步通信”两种工作方式的四种工作模式;在“异步方式”中由T1做波特率发生器;与串行口相关的SFR有:SBUF(接收SBUF和发送SBUF)SCON串口控制寄存器(设定四种模式)。,2019/12/2,MCS-51单片机的异步串行通讯应用示意图,MCS-51TXD(甲)RXD,RXDMCS-51TXD(乙),TXDRXD,RXDTXD,RS-232或485,RS-232或485,TXDRXD,RS-232,PC机COM1,COM2,单片机甲、乙之间近距离的直接通讯,单片机甲乙两地之间远距离通讯,单片机与PC机之间的数据通讯,返回前一次,2019/12/2,3.3.1数据缓冲寄存器SBUF,在MCS-51的串行口电路中,SBUF是用来存放发送和接收数据的两个独立的缓冲寄存器,在SFR的地址都是99H。CPU执行写SBUF指令便开始引发串口的发送。MOVSBUF,A当串口接收缓冲器接收到一帧数据时,可以执行下面指令进行读取:MOVA,SBUF由于发送SBUF与接收SBUF是两个独立的缓冲器,所以51串行口是一个可以同时发送与接收的“全双工”接口。,2019/12/2,接收SBUF移位寄存器,发送SBUF移位寄存器,内部总线,CPU,MCS-51,RXDP3.0,TXDP3.1,SBUF实际上是一个能够独立完成数据接收和数据发送操作的复杂的硬件电路;CPU只要将数据送到发送SBUF(MOVSBUF,A)后,SBUF便一位一位的发送数据,发送完成后标志TI=1;当外部串行数据经RXD送入SBUF时,电路便自动启动接收,直至完成一帧数据后标志RI=1。,2019/12/2,3.3.2串行口控制寄存器SCON,用于设定串行接口工作模式、表征串口的工作状态的特殊功能寄存器;在SFR中的地址为98H;这是一个可以按位寻址的SFR,在使用中可直接使用位操作指令,给编程带来方便;,2019/12/2,SCON寄存器示意图,返回前一次,D7D6D5D4D3D2D1D0,2019/12/2,SCON寄存器各位定义,D7、D6位:SM0SM1模式选择位。,SCON寄存器,2019/12/2,D1、D0:TI、RI发送、接收完成标志TI:完成一帧数据发送标志,原始应软件清零,发送完成TI=1同时申请中断(如果中断开放,则引发中断);RI:完成一帧数据接收标志,原始应软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断);,SCON寄存器,2019/12/2,D3、D2:TB8、RB8发送、接收的第9位数据TB8:在9位数据传送的模式2、3时,将要发送的第9位数据,在执行MOVSBUF,A指令之前要事先将TB8设定好;RB8:在9位数据传送的模式2、3时,接收到的第9位数据;,SCON寄存器,2019/12/2,D4:REN允许接收控制位。REN:允许接收位,REN=1时允许接收,由软件置位或清零。,SCON寄存器,D7D6D5D4D3D2D1D0,2019/12/2,D5:SM2多机通信使能位(用于接收方串口控制)模式0、1时:SM2不用。模式2、3时:有两种设定方法。若SM2=0,无论RB8如何,RI都能被激活,但RI不能引发中断!CPU可通过查询RI的方式接收数据。若SM2=1,若接收到的第9位(RB8)=0时,RI不会被激活;若RB8=1时,RI不仅能被激活,并可引发中断。这种特性得出一个特殊的结果:如果接收方将其SM2=1,则能否接收到对方发送的数据不取决于自己,而是由发送方的TB8来决定的。SM2=1的设定用于多机通信的场合。,SCON寄存器,2019/12/2,使用RI、TI标志完成数据的发送与接收,SBUF是独立于CPU。不论是数据的发送还是接收都由SBUF独立完成。SBUF的传送速度远远低于CPU执行指令的速度,每次发送后CPU必须等待SBUF。协调CPU与SBUF的速度只能靠标志信号。即:发送操作后,查询TI=1?来决定是否可以发送下一个数据;接收操作时,查询RI=1?判断是否接收到数据。,2019/12/2,利用接收标志RI控制数据的接收操作,RI(SCON.0):接收完成标志。当SUBF从RXD引脚接收完一个完整的数据帧时RI=1,CPU可以使用两种方式来处理接收的数据:CPU采用查询RI来控制数据的读取。JNBRI,$;如果RI1则等待MOVA,SBUF;RI=1时,取SBUF中数据送A。如果中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。MOVA,SBUF;中断方式接收数据;,2019/12/2,TI(SCON.1):发送完成标志。当CPU执行:MOVSBUF,A指令后,便引发一次串行通讯的过程。SBUF开始通过TXD向外按位发送数据。当完成一帧数据的发送后,TI=1。使用查询的方式对TI进行检测:JNBTI,$;如果TI1则等待MOVSBUF,A;TI=1时发送下一个数据如果系统中断是开放的,则TI=1会自动引发中断。用户可以通过中断服务程序向SBUF输送下一个数据:MOVSBUF,A;在中断程序中发送下一个数据;,2019/12/2,使用查询RI、TI标志的方式进行发送与接收N个数据,CLRSCON.TI,数据送累加器A,movsbuf,a,TI=1?,N个数据发送完?,YES,NO,YES,NO,发送数据的程序框图,SETBSCON.REN,mova,sbuf,RI=1?,N个数据接收完?,YES,NO,YES,NO,CLRSCON.RI,A送数据区,返回本节目录一,接收数据程序框图,2019/12/2,3.3.3串行口的模式0,特点:同步移位寄存器模式。B=fosc/12。在这种模式下RXD(P3.0)做数据口;TXD(P3.1)做移位脉冲输出端。在移位过程中,先移数据的低位D0。(注意:移位脉冲的频率就是模式0的波特率)主要功能:使用串行口扩展并行口,可以扩展N8位的并行口。,MCS-51RXDTXD,Data外部移位寄存器cp,移位脉冲,串行数据,并行的数据(8位),2019/12/2,利用串行模式0构成的2位LED数码管驱动电路,MCS-51P3.0P3.1P1.0,QAQHA,B74LS164/CLRCLK,QAQHA,B74LS164/CLRCLK,RXD,TXD,共阳极LED数码管.gfedcba,共阳极LED数码管.gfedcba,+5V,2019/12/2,模式0电路框图,51内部总线,SBUF,零检测器,移位时钟,STARTSHIFT发送控制器TXCLOCKTISEND,DSQCP,STARTRIRECEIVERX接收控制器SHIFTCLOCK11111110,输入移位寄存器,SBUF,51内部总线,读SBUF,写SBUF,S6,串行口中断,P3.0RXD,P3.1TXD,装载SBUF,REN/RI,返回前一次,P3.0RXD,MOVSBUF,A,1,S6P2,2019/12/2,串行口模式0的时序信号(发送),写SBUF,SEND,D1,D0,D2,D3,D4,D5,D6,D7,RXD端数据,SHIFT,TXD端同步脉冲,TI中断标志,movsbuf,a指令送发送到结束的10个机器周期,返回电路图,2019/12/2,模式0的工作原理(发送),单片机执行movsbuf,a指令的S6P2时,出现“写sbuf”信号:1,打开总线三态门使累加器中的数据送到SBUF中;2,使D型触发器置一,触发器的输出构成了SBUF的第9位;3,启动“发送控制器”开始发送。在“写SBUF信号”有效相隔一个机器周期后,“发送控制器”的SEND=1使RXD,TXD端的与门打开,使数据和移位脉冲输出。在TXD端,每一个机器周期中发出一个同步脉冲,同时在SEND=1期间,每一个S6P2时控制器发出一个SHIFT移位信号将SBUF中的数据右移一次(同时D型触发器清零)。这样:每当SBUF中的数据右移(发送)一位时,SBUF的左端便移入1个“0”。,返回电路图,2019/12/2,当SBIUF中的数据右移7次后,检零器的7个输入端全为“0”,向控制器发出一个信号:通知控制器作最后一次移位,然后控制器的SEND=0停止发送数据和同步信号,TI被置位。,返回电路图,2019/12/2,模式0的工作原理(接收),在满足REN=1且RI=0的条件下(实际上是一条写SCON指令),就会引发一次接收过程。在下一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年4月四川成都天府新区顾连禾泰康复医院招聘48名模拟试卷含答案详解
- 2025年河北秦皇岛城市发展投资控股集团有限公司公开选聘子公司职业经理1名模拟试卷及答案详解一套
- 2025贵州省自然资源厅直属事业单位第十三届贵州人才博览会引才8人考前自测高频考点模拟试题有答案详解
- 2025北京市海淀区成志幼儿园招聘2人考前自测高频考点模拟试题带答案详解
- 2025江西中医药大学附属医院编制外招聘45人(第二批)考前自测高频考点模拟试题有答案详解
- 2025广西旅发防城港投资有限公司招聘20人模拟试卷及一套答案详解
- 2025贵州医科大学第二附属医院第十三届贵州人才博览会引才47人考前自测高频考点模拟试题及答案详解(夺冠)
- 2025春季内蒙古蒙发能源控股集团招聘44人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年浙江大学医学院附属儿童医院招聘心电图室劳务派遣技师1人模拟试卷及答案详解(各地真题)
- 2025年甘肃庆阳庆城县事业单位引进高层次和急需紧缺人才(第三批)考前自测高频考点模拟试题及答案详解(夺冠)
- 卫生监督协管五项制度范文(4篇)
- 洗车机施工方案
- 电瓶搬运车安全培训课件
- 工程弃土处置方案(3篇)
- 老年人安全防范措施课件
- 民法典买租赁合同课件
- 东海证券面试题及答案
- (2025年标准)夫妻之间复婚协议书
- 数据保护与安全知识培训课件
- 市政施工员课件
- 2025年江苏省档案职称考试(新时代档案工作理论与实践)历年参考题库含答案详解(5卷)
评论
0/150
提交评论