欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    片机的片内资源.ppt

    • 资源ID:5366240       资源大小:335.50KB        全文页数:85页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    片机的片内资源.ppt

    第3章 单片机的片内资源,3.1 计数器与定时器3.2 MCS-51的中断系统3.3 串行通信接口,31 计数器与定时器,3.1.1 定时/计数器的模式和控制寄存器3.1.2 定时技术器的工作方式313定时器/计数器23.1.4 定时器0/1应用举例3.1.5 AT89S51单片机的看门狗,32 MCS-51的中断系统,3.2.1 中断的响应过程 3.2.2 中断处理流程 3.2.3 MCS-51的中断源,3.3 串行通信接口,331 串行口控制寄存器SCON332 模式0333 模式 1334 模式2和3335 多处理机通信3.3.6 串行帧3.3.7 波特率,31 计数器与定时器,3.1.1 定时/计数器的模式和控制寄存器 51系列单片机有两个定时器/计数器分别叫做T1、T0。T1除了可以作串行通信的波特率发生器而T0不能外,T1、T0其它功能相同。这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536,单片机中的计数器除了可以作为计数之用外,还可以用作定时器用,定时器的应用很广泛,如打铃器,电视机定时关机,空调定时开关等,如将一个闹钟定时在1个小时后闹响,也可以说是秒针走了(3600)次,这样时间就转化为秒针走的次数的,也就是计数的次数了,计数的次数和时,间之间的确十分确定。如果计数脉冲的间隔相等,则计数值就代表了时间的流逝。因此,单片机中的定时器和计数器本质上是一样的,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个稳定的计数源。由单片机的时钟信号通过12分频后获得的一个脉冲源。当计数器加满后再加1就会产生进位,这种进位称之溢出。计数器溢出后将使得TF0变为“1”。计数器的容量是16位,也就是最大的计数值到65535,因此计数计到65536就会产生溢出。现实生活中,通常计数值都少于65536个数,如一打为12瓶,一瓶药片为100粒,如果要计100个数,在计数器中可先放进预置65436个数,再来100个脉冲就到了65536了。现代单片机的定时计数器已经有很大的发展,除了定时计数外还具有了输入捕捉,输出比较,PWM(脉宽调制器)等一系列的功能,由于功能已经不局限于计数定时,故通常称之为计数定时单元。,图3-1定时/计数器的工作方式控制,C/,表3-1 TMOD 寄存器的各位功能,表3-2 定时计数器控制寄存器 TCON,TCON寄存器用来反映定时/计数器的状态及对定时/计数器进行控制。,3.1.2 定时技术器的工作方式,(1)定时器/计数器的工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。13位模式只是为48系列兼容而设计的一种工作式,一般不用。该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略,如图32所示。,图3-2 定时/计数器工作方式0,图3-3 定时器/计数器的工作方式1,(2)定时器/计数器的工作方式1工作方式1是16位的定时/计数方式,将M1、M0设为0、1即可,其它特性与工作方式0相同,如图3-3所示。(3)定时器/计数器的工作方式2定时器/计数器的工作方式2,如图34所示。这种工作方式也称为自动加载方式。能够自动装入预置数,预置数存放在T(0/1)的高8位,这时高8位不参与计数。只有低8位参与计数,高8位不参与计数,用作预置数的存放,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种工作方式用于波特率发生器。,图3-4 定时器/计数器的工作方式2 自动装入预置数的工作方式,(4)定时器/计数器的工作方式3这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,这时TL0还是用原来的T0的标记,而TH0则借用T1的标记。此时T1无标志位可用一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,T0才用于工作于方式3。在模式3时,定时器1停止计数将与TRl设置为0相同。定时/计数器工作方式3如图35所示。,图3-5 定时器/计数器的工作方式3,3.1.3 定时器/计数器2 52单片机比51单多了一个定时器/计数器称之为定时器/计数器2是一个具有16位自动重装载或捕获能力定时器/计数器。专用寄存器T2CON是它的控制寄存器。它的工作方式可分为两类,一类为定时器/计数器方式,另一为波特率发生器方式。特别现在的AT89C52/AT89S52等FLASH型52单片机中还可以用T2的溢出产生方波输出,同时还新增加了T2MOD,可以设置计数的方向,既可以加法计数,也可以减法计数。T2定时器工作方式下TL2和TH2计数的值是机器周期数。T2作计数器用时,外部计数脉冲由T2(P1.0)输入,52的定时器2有三种工作模式,分别是:,捕捉模式:捕捉模式可记录事件发生的准确时间,如图36所示。自动加载模式:可实现16位的自动加载,如图37所示。波特率产生器模式:主要用在串行通信上作波特率发生器和方波输出,如图39所示。定时/计数器2的控制寄存器有TC2ON和T2MOD,见表3-3所示和表3-4所示。,表33定时器计数器2控制寄存器T2CON,表34 T2MOD寄存器(C9H),装载寄存器RCAP2H和RCAP2L来实现的。TH2、TL2和RCAP2H、RCAP2L之间接有双向缓冲器(三态门)。当CP/=0时,选择自动重装载功能,即把RCAP2H和RCAP2L的数据自动装入TH1和TH2。当CP/=1时,选择捕获工作方式,数据传递方向与上述相反。,捕获或重装载动作发生于下述2种情况下;(1)定时器2的寄存器TH2和TL2溢出时,这时若CP/=0时,则打开重装的三态缓冲器,把RCAP2H和RCAP2L的内容自动装载到TH2和TL2中。同时,溢出标志TF2置1,申请中断。(2)当EXEN2=1且T2EX(P1.1)引脚的信号有负跳变时,这时根据CP/是0还是1,将发生捕获操作或重装载操作,同时标志EXF2置1,申请中断。若定时器/计数器2的中断是允许的,则无论发生TF2=1还是EXF2=1,CPU都会响应中断,此中断向量的地址为2BH。响应中断后,应靠软件清除中断申请,以免无休止地发生中断。TF2和EXF2都是直接可寻址位,可采用CLRTF2和CLREXF2指令实现撤除中断申请的功能。,图3-6定时/计数器2的捕捉模式,图3-7定时器2的自动加载工作方式,图3-8波特率发生器方式下的定时器/计数器2的逻辑图,3.1.4 定时器0/1应用举例 定时计数器需要完成的工作有:根据应用要求,通过程序初始化,正确设置控制字。正确计算和计算计数初值。编写中断服务程序,适时设置控制位。通常情况下,设置程序大致如下:(1)工作方式控制字(TMOD、T2CON)的设置;(2)计数初值的计算并装入THx、TLx、RCAP2H、RCAP2L;(3)中断允许位ETx、EA的设置,使主机允许中断;(4)启停位TRx的设置等。现以定时计数器0或1为例作一简要介绍。51系列单片机系列单片机的定时器计数器0或1是加1计数器,因此,不能直接将实际的计数值作为计数初值送入计数寄存器THx、TLx中去,而必须将实际计数值以28、213、216为模求补,以其补码作为计数初值设置THx和TLx。,若实际计数值为x,计数器长度为n(8、13、16),则应装入计数器THx、TLx中的计数初值为2nx,式中2n为取模值。例如,工作方式0的计数长度为13位,则n13,以213为模,工作方式1的计数长度为16,则n16,以216为模等等。所以,计数初值为(x)2nx。对于定时模式,是对机器周期计数,而机器周期与选定的时钟频率密切相关。因此,需根据应用系统所选定的时钟频率计算出机器周期值。若时钟为6MHz为例,机器周期为 一个机器周期=12/6M=2us实际定时时间为Tc=xTp 式中Tp为机器周期,Tc为所需定时时间。Tp和Tp一般为已知值,在求出Tp后即可求得所需计数值x,再将x求补码,即求得定时计数初值。,例31 设定时时间Tc=5ms,机器周期Tp=2us,可求得定时计数次数。设选用工作方式1,则n=16,则应设置的定时时间计数初值为:x=2500次(x)补码216x655362500=63036,还需将它分解成两个8位十六进制数,分别求得低8位为3CH装入TLx,高8位为F6H装入THx中。工作方式0、1、2的最大计数次数分别为8192、65536和256。对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可。例32 定时计数器应用编程,设某应用系统,选择定时计数器1定时模式,定时时间Tc=lms,主频频率为12MHz,每lms向主机请求处理。选定工作方式1。计算得计数初值:低8位初值为0F0H,高8位初值为0D8H。,所谓初始化,一般在主程序中根据应用要求对定时计数器进行功能选择及参数设定等预置程序,本例初始化程序如下START:;主程序段MOV SP,#60H;设置堆栈区域MOV TMOD,#10H;选择T1,定时模式,工作方式1MOV TH1,0D8H;设置高字节计数初值MOV TL1,#0F0H;设置低字节计数初值SETB EA;开中断SETB ET1;其他初始化程序SETB TR1;启动T1开始计时.;继续主程序,中断服务程序INTT1:PUSH A;现场保护 PUSH DPL;PUSH DPH;MOV TL1,#0F0H;重新设置初值MOV TH1,#0D8H;中断处理POP DPH;现场恢复POP DPL;POP A;RETI;返回INTTO MOV TMOD,09H;设T0为定时方式1,GATE为1MOV TL0,#00H;TH0,TL0清0MOV TH0,#00H;,CLR EX0;关 LOP1:JB P3.2,LOP1;等待 引脚低电平LOP2:JNB P3.2,LOP2;等待 引脚高电平SETB TR0;启动T0开始计数LOP3:JB P3.2,LOP3;等待 低电平CLR TR0;停止T0计数MOV A,TL0;低字节计数值送AMOV B,TH0;高字节计数值送BORG 0000HAJMP MAIN;转主程序ORG 001BHLJMP INTER;转T1中断服务程序ORG 0100;主程序入口MAIN:MOV SP,#60H;设置堆栈区,MOV TMOD,#60H;设置定时/计数器1,计数方式2 MOV TL1,#0FFH;设置计数常数 MOV TH1,#0FFH SETB EA;开中断 SETB ET1;开定时/计数器1中断 SETB TR1;启动定时/计数器1计数 中断程序(具体处理程序略)ORG 1000H INTER:PUSH A PUSH DPL PUSH DPH POP DPH POP DPL POP A RETI;返回,这是中断服务子程序的基本形式。51系列单片机的中断属于矢量中断,每一个矢量中断源只留有8个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行。例33 测外部输入的脉冲宽度。选择定时计数器2进行脉宽测试较方便,但也可选用定时计数器0或定时计数器1进行测宽操作。本例选用定时计数器0(T0)工作在定时器方式模式,工作方式1对INT0引脚上的正脉冲进行脉宽测试。,图310 脉宽测试图,设置GATE为1,机器周期Tp为1s。本例程序段编制如下:INTT0:MOV TMOD,#09H;设T0为定时方式1,GATE为1 MOVTL0,#00H;清TH0,TL0 MOVTH0,#00H CLREX0;禁止外中断0LOP1:JB P3.2,LOP1;等待P3.2变低SETBTR0MOVA,TL0MOVB,TH0例34 利用定时计数器0或定时计数器1的Tx端口作为外部中断源输入端口的应用设计。在某些应用系统中常会出现两个外部中断源INT0和INTl不够用的情况,可将Tx用于增加的外部中断输入。,现选择定时计数器1为计数方式2(自动再装入),设置计数初值为0FFH,则T1端口输入一个负跳变脉冲,计数器2立即溢出,置位对应的中断请求标志位TFl为1,向主机请求中断处理,从而达到了增加一个外部中断源的目的。应用定时计数器1(T1)的中断矢量进入中断服务程序处理。其程序如下:主程序段:ORG 0000H AJMP MAIN;转主程序 ORG 001BH LJMP INTER;转T1中断服务程序 ORG 0100;主程序入口MAIN:,MOV SP,#60H;设置堆栈区 MOV TMOD,#60H;设置定时/计数器1,计数方式2 MOV TL1,#0FFH;设置计数常数 MOV TH1,#0FFH SETB EA;开中断 SETB ET1;开定时/计数器1中断 SETB TR1;启动定时/计数器1计数 中断程序(具体处理程序略)ORG 1000HINTER:PUSH A;PUSH DPL;PUSH DPH;,POP DPH POP DPL;POP A;RETI 例35 某应用系统需通过P1.0和P1.1分别输出周期为200s和400s的方波。为此,系统选用定时器计数器0(T0),定时方式3,主频为6MHz,经计算得定时常数为9CH和38H。本例程序如下:初始化程序段 ORG 0000H SJMP PLT0 ORG 0001BH SJMP INT0P ORG 001BH SJMP INT1P,PLT0:MOV TMOD,#03H;设置T0定时方式3 MOV TL0,#9CH;设置TH0初值 MOV TH0,#38H;设置TH0初值SETB EASETB ET0SETB ET1SETB TR0;启动SETB TR1;启动 SJMP$中断服务程序段,INT0P:MOV TL0,#9CH;重新设置初值 CPL P1.0;对P1.0输出信号相反 RETI;返回INT1P:MOVTH0,#38H;重新设置初值 CPL P1.1;对P1.1输出信号相反RETI;返回在实际应用中应注意的问题如下。(1)定时计数器的精度 启动定时计数器后,当计满时产生溢出向主机请求中断处理,由内部硬件自动进行。但从溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同,一 般需延时3个机器周期以上,这就给实时处理带来误差。大多数应用场合可忽略不计,但对某些要求实时性要求较高的场合,应采用补偿措施。,这种由中断响应引起的时间延时,对定时计数器工作于方式0或1而言有两种含义:一是由于中断响应延时而引起的实时处理的误差;二是如需多次且连续不间断地定时计数,由于中断响应延时,则在中断服务程序中再置计数初值时已延误了若干个计数值而引起误差,特别是用于定时就更明显。例如选用定时方式1定时,由于上述原因就会产生实时误差。这种情况下采用动态补偿来减少系统误差。所谓动态补偿,即在中断服务程序中对THx、TLx重新置计数初值时,应将THx、TLx复位,重新从开始继续计数,读出的值并补偿到原计数初值中去进行重新设置。补偿的程序如下所示。,CLR EA;禁止中断MOV A,TLx;读TLx中已计数值ADD A,#LOW;LOW为原低字节计数初值MOV TLx,A;设置低字节初始值MOV A,#HIGH;原高字节计数初值送AADDC A,THx;高字节计数初值补偿MOV THx,A;置高字节计数初值SETB EA;开中断.(2)动态读取 运行中的计数值在动态读取运行中的定时计数器的计数值时,如果不加注意,就可能出错。这是因为不能在同一时刻同时读取THx和TLx中的计数值。比如,先读,TLx后读THx,因为定时计数器处于运行状态,在读TLx时尚未产生向THx进位,而在读THx前已产生进位,这时读得的THx就不对了;同样,先读THx后读TLx也可能出错。一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx进行比较;若两次读得的值相等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法程序如下:RDTM:MOV A,THx;读取THx存A中 MOV R0,TLx;读取TLx存R0中 CJNE A,THx,RDTM;比较两次THx值,若相等,则读得的值正确,程序往下执行,否则重读 MOV R1,A;将THx存于R1中,3.1.4 AT89S51单片机的看门狗,32 MCS-51的中断系统,3.2.1 中断的响应过程 当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常是固定的。51单片机也是采用的这种方法,五个中断源中,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前,首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。(2)寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序。(3)执行中断处理程序。(4)中断返回,行完中断指令后,就从中断处返回到主程序,继续执行。,CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。1、现场保护和现场恢复 中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,程序原来在何处被打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份即保护现场。就象文章开头举的例子,在看书时,电话玲响需传去接电话时,必须在书本上做个记号,以便在接完电话后回来看书时,知道从哪些内容继续往下看。计算机的中断处理方法也如此,中,断开始前需将个有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复寄存器和存储单元的原有内容,这就是现场恢复。如果在执行中断服务程序时不是按上述方法进行现场保护和恢复现场,就会使程序运行紊乱,使单片机不能正常工作。2、中断允许与禁止 中断是否能够响应可通过软件进行设置,中断能够被响应时称为中断允许,当设置使中断不能被响应时称为中断禁止。,3、中断服务程序 既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。4、中断返回 执行完中断服务程序后,必然要返回,中断返回就是使程序运行从中断服务程序转回到原来运行的程序上。在51系列单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。,3.2.3 MCS-51的中断源,表35 SCON 寄存器各位的功能,表35中(1)IE1为外部边沿触发中断1请求标志,其功能和操作类似于TF0。(2)IT1为外部中断1类型控制位,通过软件设置或清楚,用于控制外中断的触发信号类型。IT1=1,边沿触发。IT=0是电平触发。(3)IE0为外部边沿触发中断0请求标志,其功能和操作类似于IE1。(4)IT0为外部中断0类型控制位,通过软件设置或清楚,用于控制外中断的触发信号类型。其功能和操作类似于IE1。SCON是串行口控制寄存器,字节地址为98H,SCON的低二位是串行口的发送和接收中断标志,其格式如下:,(5)TI为51系列单片机串行口的发送中断标志,在串行口以方式0发送时,每当发送完8位数据,由硬件置位。如果以方式1、方式2或方式3发送时,在发送停止位的开以方式0发送时,每当发送完8位数据,由硬件置位。如果以方式1、方式2或方式3发送时,在发送停止位的开始时TI被置1,TI=1表示串行发送器正向CPU发出中断请求,向串行口的数据缓冲器SBUF写入一个数据后就立即启动发送器继续发送。但是CPU响应中断请求后,转向执行中断服务程序时,并不清零TI,TI必须由用户的中断服务程序清“0”,即中断服务程序必须有“CLR TI”或“ANL SCON,#0FDH”等指令来清零TI。(6)为RI:串行口接收中断标志.若串行口接收器允许接收,并以方式0工作,每当接收到8位数据时,RI被置1,若以方式1、2、3方式工作,当接收到半个停止位时,TI被置1,当串行口一方,表36 IE寄存器各位的功能,式2或3方式工作,且当SM2=1时,仅当接收到第9位数据RB8为1后,同时还要在接收到半个停止位时,RI被置1。RI为1表示串行口接收器正向CPU申请中断。同样RI标志位需由用户用软件清“0”。,IE寄存器的各控制位的功能EA为中断总控制位,EA=1,CPU允许中断。EA=0,CPU禁止所有中断;ES:串行口中断控制位,ES=1允许串行口中断,ES=0,屏蔽串行口中断。ET1为定时/计数器T1中断控制位。ET1=1,允许T1中断,ET1=0,禁止T1中断。EX1为外中断1中断控制位,EX1=1,允许外中断1中断,EX1=0,禁止外中断1中断。ET0:定时/计数器T0中断控制位。ET1=1,允许T0中断,ET1=0,禁止T0中断。EX0为外中断0中断控制位,EX1=1,允许外中断0中断,EX1=0,禁止外中断0中断。,图3-13 51系列单片机中断系统,表37优先级寄存IP,表38 个中断源的服务程序入口地址,表38 个中断源的服务程序入口地址,3.3 串行通信接口,单片机与外界进行信息交换称之为通信。51系列单片机单片机的通讯方式有两种:并行通讯:数据的各位同时发送或接收。串行通讯:数据一位一位顺序发送或接收。它们数据发送或接收如图3-14(a),(b)所示,(a)并行通讯(b)串行通讯图3-14数据发送或接收,1、串行通讯的方式:异步通信:方式如图315(a)所示,数据格式如图316所示,它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般采用ASCII码。波特率即数据传送的速率,其定,义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。同步通信:方式如图315(b)所示,数据格式如图317所示,在异步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。,(a)异步通信方式(b)同步通信方式 图315 通信方式,图3-16 异步通信一禎数据格式 图3-17同步通信数据格式,2、数据通信的传输方式 常用于数据通信的传输方式有单工、半双工、全双工和多工方式。单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据传输。半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。多工方式:以上三种传输方式都是用同一线路传输一种信号,为了充分地利用线路资源,可通过使用多路复用,器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。51系列单片机的串行接口是一个全双工通信接口,即能同时进行发送和接收(若可以发送和接收,但不能同时进行,则称半双工;只能发送或接受的称为单工)。串行口寄存器结构如图318所示,它可以作UART(通用异步接收和发送器)用,也可以作同步移位寄存器用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。,图3-18 51系列单片机的串行口寄存器结构,3、数据缓冲寄存器SBUF 串行缓冲寄存器SBUF是可直接寻址的专用寄存器在物理上。它对应着两个寄存器,一个发送寄存器,一个接收寄存器。CPU和SBUF,发送数据就是修改发送寄存器;读SBUF,就是读接收寄存器。接收器是双缓冲的,以避免在接收下一桢数据之前,CPU未能及时响应接收器的在中断,没有把上一个数据读走,而产生两个数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生写重叠问题。,串行口控制寄存器SCON SCON用于控制和监视串行口的工作状态,它的各位定义如表3-9所示:表39中断控制寄存器SCON各位定义(SMB)(LSB)SMD SM1 SM2 REN TB8 RB8 T1 R1SM2(SCON.7)和SM1(SCON.6)为串行口操作模式选择位2个选择位对应于4种模式,,SCON串行口操作模式选择如表310所示:其中fsoc是振荡器频率,UART为通用异步接收和发送器之英文缩写。,表3-10 串行口操作模式选择,SM2(SCON.5)在模式2和3时为多处理机通信使能位。在模式2和3中,若SM2=1,且接收第9位数据是0,则RI(接收中断标志位)不会被激活。在模式1中,若SM2=1没有接收到有效的停止位,,则RI不会被激活。在模式0中,SM2必须为0。,REN(SCON.4)为允许接收位。由软件置位或清除.REN=1时,允许接收。REN=0,禁止接收。TB8(SCON.3)为发送数据位8。该位是模式2和3中要发送的第9位数据。在许多通信协议中,该位是奇偶位。可以按需要由软件置位或清除。在51系列单片机多处理机通信中,这一位用于表示地址帧。RB8(SCON.2)接收数据位8是模式2和3时已接收的第9位数据。(例如可能是奇偶位,或是奇偶/数据标识位)。在模式1中,若SM2=0,RB8是已接收的停止位。在模式0中,RB8未用。TI(SCON.1)发送中断标志,在模式0中,在发送完第8位数据时,由硬件置位;在其它模式中,在发送停止之,初由硬件置位。TI=1时申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,必须由软件来清除TI。RI(SCON.0)接收中断标志,在模式0中接收第8位结束时由硬件置位。在其它模式中。在接收置位中间,由硬件置位R1=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时若未接收到有效的停止位,则不会对RI置位,必须靠软件清除RI。在系统复位时SCON中的所有位都被清除。模式0 在模式0下,串行口作同步移位寄存器用,其波特率是固定的为fsoc/12。这时数据由RXD(P3.0)端输入同步,移位时钟由TXD(P3.1)端给出,发送或接收的是8位数据低位在先。执行任何一条把SBUF作为目的寄存器的指令时,就开始发送。当S6P2出现写SBUF信号时,8位数据由内部总线被选通的三态缓冲器写入SBUF。同时此写信号还选通另一个三态缓冲器,使一个D触发器的S(置位)端为1,触发器置1,这个D触发器构成发送移位寄存器的第8位,因此在写信号作用下第9位变为1。写SBUF信号还同时接至发送控制器的启动(START)端开始发送。图3-19是串行口模式0的功能简图和有关的时序图。写信号有效后相隔一个机器周期,发送控制端的SEND端有效(=1),使与RXD端相连的与非门开锁,允许从RXD端送出数据,,同时使与TXD端相连的与非门开锁,允许从TXD端输出移位,时钟。在每个机器周期的S3S4和S5状态内,移位时钟为低电平,在 S6 S1和 S2状态内,为高电平。在SEND有效期间,每个机器周期的S6 P2时刻,由发送控制器的SHIFT端送出移位信号,使发送移位寄存器的内容右移1位。此移位信号同时接至作为移位寄存器第9位的D触发器的CL端,触发器的数据端D始终保持低电平,故发送移位寄存器的内容右移1位,即从左面添一个0。因此,当数据字节的最高位(第8位)移至移位寄存器的输出位置上时在其左面的恰好是开始时置入的第9位1,再往左的所有各位(共7位)全为零。左面7位零经零检测器,通知发送控制器作最后发送数据和移位时钟,并置TI为1并申请中断。这两个动作发生于写SBUFS信号有效后第10个机器周期的S1P1时刻,至此,就完成了发送1个数据的,全过程。若允许中断,就由0023H单元开始执行串行口中断服务程序。在满足REN(SCON.4)=1(允许接收)和RI(SCO.0)=0的条件下,在下一个机器周期S6P2时刻,接收控制器向接收移位寄存器写入11 11 11 10,并在下一节拍(S1P1)使RECEIVE端有效,从而使TXD(P3.1)端的与非门开锁,移位时钟由TXD端输出。此时钟的波形与发送时的一样。每个机器周期的S3S4S5状态为低电平,S6S1和S2状态为高电平。在RECEIVE有效时,每个机器周期的S5P2,对RXD(P3.0)引脚上的数据进行采样,而在同一机器周期的S6P2,接受移位寄存器的内容左移一位,其右端就补上刚由RXD引脚采样的数据。这样原先在接收移位寄存器中的1就逐位从左端输出,而RXD引脚上的数据就逐位从右端移,入。当开始时装入到移位寄存器最右端的一个0移到最左端时,其右边已经接收了7位数据,这时将通知接收控制器进行最后一位移位,并把所接收的数据装入SBUF。在启动接收过程(写SCON清除RI位)后的第10个机器周期S1P1时刻,接受控制器的端被清除,SCON中的RI被置位,发出中断申请。至此,完成了一个数据的接收过程。若CPU响应中断,将执行由0023H作为入口的中断服务程序。串行口工作方式0工作原理及时序如图319所示。工作方式0主要用于I/O扩展。其扩展方法见图3-20和图321。其中图320为扩展输出口的方案,实际上是由串行数据变换为并行输出数据方案。51系列单片机的串口工作模式0的发送状态,串行数据由P3.0端送出,移位时钟由P3.1端送出。74LS164是串行输入位并行输出的,移位寄存器,2个74LS164构成串级的16位并行输出的移位寄存器。这样就大大扩展了输出口线。从理论上讲,寄存器。这样就大大扩展了输出口线。从理论上讲,74LS164可以无限的串联上去进一步扩展能力,但这种扩展方法,并行输出的速度是不高的,移位时钟频率为fsoc/12,若fsoc=12MHz,则每位为1us。图321为输入口扩展方案。74LS165是8位并行输入/串行输出的移位寄存器,该方案是一个并行到串行的转换线路,51系列单片机的串行口工作模式0的接收状态。串行数据由P3.0输入,移位时钟由P3.1输出。P1.0口线用于控制74LS165的工作状态。当此口线发出高电平时(P/S=1),平行数据进入74LS165,当口线发出低电平时,74LS165处于串行移位状态。这种方案,可以扩展大量的输入口。,图320操作模式0 I/O扩展,图321操作模式0输入扩展方案,3.3.2 模式 1串行口工作于模式1时是10位传输方式,其中,1位起始位(0),8位数据(低位在先),和1位停止位(1)。由TXD 发送RXD接收。波特率是可变的,取决于定时器1或2的溢出速率。当T2CON寄存器中RCLK和TCLK置位时,定时器2作为接受和发送作波特率发生器;当RCLK=TCLK=0时,用定时器1作波特率发生器。两者还可以交叉使用,即发送和接受采用不同的波特率。3.3.3 模式2和3操作模式2和3中,发送(通过TXD)和接收(通过RXD)的都是11位,其中的一位起始位(0),8位数据(低位在先),一位可编程位(第9数据位)和一位停止位(1)。发送时,可编程位(TB8)可赋予0或1。接收时,可编程位进入SCON中的RB8。,模式2和模式3的工作原理类同,唯一的差别是模式2的波特率为fosc/32或fsoc/64,而模式3的波特率是可变的,利用定时器1或定时器2作波特率发生器。多处理机通信 模式2和模式3有一个专门的应用领域,多处理机通信。这2个模式中,接收的是9位数据,第9位进入RB8,然后再来一位停止位。串行口可以这样来编程:当接收到停止位时,只有RB8=1的条件下,串行口中断才会有效。要使串行口具有这一特点,可以靠把SCON寄存器中的SM2位置1来实现。,3.3.6 串行帧由一定数量的位组成一串行帧。模式0中,一帧是长度为8位。模式1中,一帧的长度为10位。模式2和3中,一帧的长度为11位。模式1、2和3中,每帧都包含1位起使位,8或9位数据和1位停止位,数据位的位0到位7分别装到SBUF.0SBUF.7中,位8则装到RB8(接收时)或TB8(发送时)中。通常,在非多处理机通信的情况下,9位数据位(模式2和3)中的最后一位数据位可以作为奇偶验位。设要传输的数据字节已在累加器中,则可采用下列一段程序把数据字节和奇偶验位从串行口发送出去。,3.3.7 波特率 操作模式0的波特率是固定的,为fosc/12。模式2的波特率是fosc/64或fosc/32,取决于PCON寄存器中的SMOD位的值,若SMOD=0,波特率为fosc/64,若SMOD=1,波特率为fosc/32。模式1和模式3的波特率取决于定时器/计数器1或2的溢出速率。在52单片机中,根据T2CON内TCLK和RCLK位的状态,接收的波特率和发送的波特率可以不同,以适应与不同的输入、输出装置通信的需要。1 定时器/计数器1作波特率发生器 当定时器/计时器1用作波特率发生器时,波特率由下式确定:,波特率=(定时器/计数器1溢出速率)/n其中n=32或16,取决于PCON(电源控制寄存器)中SMOD的值。SMOD=0时,n=32;SMOD=1时,n=16。因此也可以用下式来确定波特率:波特率 x(定时器1溢出速率)其中定时器/计数器溢出速率取决于计数速率和定时器的预置值。设定时器/计数器1工作于自动重装载模式,即模式2,这时,TMOD.5(M1)=1,TMOD.4(M0)=0,且TCON.6(TR1)=1,用作波特率发生器定时器1。为了避免因溢出而产生不必要的中断,不允许定时器1中断,即IE.3(ET1)=0(参见1.9节)。,在定时器操作模式2中,TL1计数用,而自动重装载的值发在TH1内,故溢出速率可由下式确定:溢出速率=(计数速率)/256-(TH1)为了达到很低的波特率,我们可以选择定时器1工作于16位操作模式,即模式1,且利用定时器1 中断来实现软件重装载,这时TMOD.5(M1)=0,TMOD.4(M0)=1,且IE.3(ET1)=1。定时器/计数器1的计数速率与TMOD寄存器C/的状态有关。当C/时,计数速率=fosc/12;当C/=1时,计数速率取决于外部输入时钟频率,此频率不能超过fosc/24。表3-12列出了各种常用的波特率以及定时器的初值。,表3-12定时器1产生的常用波特率,2、定时器/计数器2作波特率发生器在8032/8052中,通过使T2CON寄存器中TCLK=1或RCLK=1,可选择定时器/计数器2作串行口的波特率发生器,当TCLK=1时,选作发送波特率发生器;RCLK=1时,选作接收波特率发生器,也可以同时选作发送/接收波特率发生器。用定时/计数器工作波特率发生器时波特率由下式确定。波特率 常见特殊功能寄存器表如表313所示。,

    注意事项

    本文(片机的片内资源.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开