版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编范立南谢子殿副主编刘彤尹授远李雪飞单片机原理及应用教程第5章MCS-51单片机的功能模块.5.1MCS-51单片机并行I/O口5.2MCS-51单片机定时器/计数器5.3MCS-51单片机串行接口5.4MCS-51单片机中断系统第5章MCS-51单片机的功能模块.5.1MCS-51单片机并行I/O口
MCS-51单片机具有4个双向的8位I/O口P0~P3,P0口为三态双向口,负载能力为8个TTL电路,P1~P3口为准双向口(用作输入时,口线被拉成高电平,故称为准双向口),负载能力为4个TTL电路。各口中的每一位都是由锁存器(称特殊功能寄存器SFR)、输出驱动器和输入缓冲器组成。这种结构,在数据输出时可锁存,但对输入信息是不锁存的,所以从外部输入的信息必须保持到取数指令执行完为止。
.5.1.1P0口P0口是一个三态双向口,在系统扩展时,可作为低8位地址线和数据总线的分时复用口,在其他状态下可作为通用I/O接口,其1位的结构原理如图5.1所示,P0口由8个这样的电路组成。.5.1.1P0口
.5.1.1P0口P0口是一个多功能8位口,可以字节访问,也可位访问,字节访问地址为80H,位访问地址为80H~87H。(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,位访问地址为90H~97H。P1口是一个准双向I/O口,其1位的内部结构如图5.2所示。
.5.1.2P1口.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.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位地址A8~A15。在上述情况下,口锁存器的内容不受影响,所以,取指或访问外部存储器结束后,由于转换开关又接至左侧,使输出驱动器与锁存器Q端相连,引脚上将恢复原来的数据。.5.1.4P3口P3口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为B0H,位访问地址为B0H~B7H。
P3口的功能:(1)可作I/O口使用,为准双向口。这方面的功能与P1口一样。(2)每一位均具有第2功能。
.5.1.4P3口.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口均有两种“读”方式:读引脚和读锁存器。读引脚:是读外部接口的电平信号,读引脚信号有效。读锁存器:是将接口锁存器的Q端信号读回,写锁存器信号有效。读锁存器指令主要用于读—修改—写指令。如下列这些指令:如:ANLP1,AXRLP3,AINCP2.5.1.5接口的使用原则2.使用原则MCS-51单片机中的4个I/O口在实际使用中,一般遵循以下用法:P0口一般做系统扩展地址低8位/数据复用口,P1口一般做I/O扩展口,P2口做系统扩展地址高8位和I/O口扩展的地址译码用,P3口做中断输入、串行通用口使用。在各个口的带负载能力和接口要求上,由于P0口的输出级与P1~P3口的输出级在结构上不同,所以,要求也不同。P0口的每一位可驱动8个TTL输入,在做通用I/O口使用时,输出级是开漏电路,故需外部加上拉电阻。在做地址/数据总线使用时,不需要外接上拉电阻。P1~P3的输出级内部有高效的上拉电阻,每一位输出可驱动4个TTL输入。.5.1.5接口的使用原则在实际使用中,一般用户在I/O扩展时,很难计算I/O的负载能力。对扩展集成芯片,如74LS系列的一些大规模集成芯片(如8155、8255、8253、8259等),都可与MCS-51直接接口。其他一些扩展用芯片,使用中可参考器件手册及典型电路。对于一些线性元件,如键盘、码盘及LED显示等输入/输出设备,由于MCS-51单片机提供不了足够的驱动电流,应尽量设计驱动部分。.5.2MCS-51单片机定时器/计数器定时器/计数器可以是独立的集成芯片,也可以构成于单片机内部,但无论何种形式都具有以下共性:定时器/计数器可以工作于计数方式也可以工作于定时方式。定时器/计数器的计数值在范围内是可变的,这取决于计数器的位数。计数的最大值也就限定了定时的最大值。在到达设定的定时或计数值时发出中断申请,实现定时控制。.5.2MCS-51单片机定时器/计数器在MCS-51单片机内部有两个16位定时器/计数器T0和T1,它们均可作为定时器或计数器使用,均具有4种不同的工作方式,用户可通过对特殊功能寄存器的编程,方便地选择适当的工作方式及设定T0或T1工作于定时器还是计数器。.5.2.1T0、T1的结构1.内部结构内部机器周期脉冲外部输入脉冲.5.2.1T0、T1的结构加法计数器的初值可以由程序设定,设置的初值不同,加法器达到溢出所需的计数值或定时时间就不同。对定时器/计数器工作模式、工作方式的设定及控制是通过方式选择寄存器TMOD和控制寄存器TCON这两个特殊功能寄存器来完成的。.5.2.1T0、T1的结构2.定时器/计数器方式选择寄存器TMOD定时器/计数器T0、T1都有4种工作方式,可通过程序对TMOD的编程来设置。其位定义如下:.5.2.1T0、T1的结构C/:定时或计数功能选择位,“1”时为计数方式;“0”时为定时方式。M1、M0:定时器/计数器工作方式选择位,.5.2.1T0、T1的结构GATE:门控位,用于控制定时器/计数器的启动是否受外部引脚中断请求信号的影响。GATE=0TRx=1一般情况下,选用该方法GATE=1,=1TRx=1用于通过端口测量脉冲宽度。.5.2.1T0、T1的结构3.定时器/计数器控制寄存器TCONTF0(TF1):T0(T1)溢出中断标志位。当T0/T1启动计数后,从初值开始加1计数,当T0(T1)计数溢出时,由硬件将该位置位,并在允许中断的情况下,向CPU发出中断请求信号,CPU响应中断转向中断服务程序时,由硬件自动将该位清零,TF0(TF1)也可以由程序查询或清零。.5.2.1T0、T1的结构TR0(TR1):T0(T1)运行控制位。当GATE=0时,TRx=1,启动Tx计数;TRx=0,停止Tx计数。当GATE=1时,仅当TRx=1且=1时,才允许Tx计数,该位由软件进行设置。控制字中其余用于中断控制,见5.4.2。.5.2.2T0、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.2.2T0、T1的4种工作方式定时/计数方式0:13位计数器示意图.5.2.2T0、T1的4种工作方式2.工作方式1(M1M0=01)
由THx和TLx组成16位计数器。其组成结构与定时/计数方式0完全相同,但计数范围比定时/计数方式0扩大了很多。计数信号从TLx的低位输入,计数每溢出一次,THx计数器加1。当16位由全“1”变成全“0”时,最高位产生溢出,置位TFx,向主机请求中断。定时/计数方式1:16位计数器示意图.5.2.2T0、T1的4种工作方式3.工作方式2(M1M0=10)在此方式下,TLx可以自动设置初始值,其结构如图5.8所示。由TLx作为8位计数器,THx作为计数初值寄存器,设置初值时同时送THx和TLx。TLx进行加计数,在计数溢出时,不仅置溢出标志TFx,还自动将THx中的内容自动送入TLx,使TLx重新从初值开始计数。THx的内容可由软件置入,且在计数器工作期间其值不变。方式2适用于产生固定时间间隔的控制脉冲,也可以做为波特率发生器。.5.2.2T0、T1的4种工作方式定时/计数方式2:8位自动再装入计数器示意图.5.2.2T0、T1的4种工作方式4.工作方式3(M1M0=11)(只有T0有方式3)将定时器/计数器T0分成两个独立的8位计数器,用TL0组成完整的8位定时器/计数器(既可以定时,又可以计数),用TH0组成只能定时的8位定时器。定时器/计数器1无方式3功能,一旦将定时器/计数器1设置为方式3,相当于TR1=0,停止计数。适用场合:较少选用方式3,只在定时器/计数器T1用作波特率发生器时,定时器/计数器T0才选作方式3,这样可以增加一个定时器。.5.2.2T0、T1的4种工作方式定时/计数方式3:二个8位计数器示意图.5.2.2T0、T1的4种工作方式计数格式:.5.2.3定时器/计数器应用举例1.初始化步骤通常情况下设置顺序大致如下:工作方式控制字(TMOD)的设置;计数初值的计算及装入TLx、THx;
中断允许位ETx、EA的设置,使主机开放中断;给中断优先级寄存器IP选送中断优先级字,以设定中断优先级;启/停位TRx的设置等。
.5.2.3定时器/计数器应用举例2.计数器初值计算方法
假设将计数器计满为0所需要的计数值为N,应装入的计数初值为X,n为计数器的位数,则:X=2n-N其中n与计数器工作方式有关。在方式0时n=13,在方式1时n=16,在方式2和方式3时n=8。.5.2.3定时器/计数器应用举例3.定时器初值计算方法假设定时时间为T,机器周期为Tp,即12/晶振频率。X为定时器的定时初值,则:T=(2n-X)TpX=2n-T/Tp(n同上)再将计算出的初值转换为二进制数TB,然后再分别送入THi、TLi(对于T0,i=0;对于T1,i=1).5.2.3定时器/计数器应用举例例如:设定时时间T=5ms,机器周期Tp=2μs,则可求得计数次数(T/TP)为5ms/2μs=2500次。选用方式0:n=13,应设置计数初值X=213-(T/Tp)=8192-2500=5692,变成二进制数为(1011000111100)B
MOVTHi,#0B1H;送高8位MOVTLi,#1CH;送低5位(高3位为0).5.2.3定时器/计数器应用举例选用方式1:n=16,设置计数初值为:X=216-(T/Tp)=65536-2500=63036,变成二进制数为(1111011000111100)B
MOVTHi,#F6H;送高8位MOVTLi,#3CH;送低8位.5.2.3定时器/计数器应用举例在本例中,不能选方式2,因为28=256<2500。假设需要计数100次,则可选方式2:256-100=156,变成二进制数为(10011100)B,变成十六进制数为9CH,MOVTHi,#9CH;送高8位MOVTLi,#9CH;送低8位.5.2.3定时器/计数器应用举例4.应用举例例5-1:方式0应用:利用定时器/计数器T0在P1.0引脚输出周期为2ms的方波,设时钟频率为6MHz,编写相应的程序。可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。①初值计算。
因T=(2n-X)/Tp,则计数初值为:X=2n-T/Tp=213-500=8192-500=7692=1111000001100B则TH0=F0H,TL0=0CH。.5.2.3定时器/计数器应用举例②确定初始化控制字。主要对IP,IE,TCON,TMOD的相应位进行正确的设置,本例假设从系统复位开始。TMOD=00000000B=00H,TCON=0。③程序设计:T0的中断服务程序,除了产生要求的方波外,还要注意将时间常数送入定时器中,为下一次产生中断做准备。.5.2.3定时器/计数器应用举例
ORG000BH ;T0中断服务程序入口 LJMPZD ;转至INT处 ORG2000H ;主程序 MOVTMOD,#00H ;置T0为定时方式0 MOVTH0,#0F0H ;设置计数初值 MOVTL0,#0CH SETBEA ;CPU开中断 SETBET0 ;允许T0中断 SETBTR0 ;启动T0HALT: SJMP$ ;暂停,等待中断ZD: CPLP1.0 ;输出方波 MOVTH0,#0F0H ;重新装入计数初值 MOVTL0,#0CH RETI ;中断返回.5.2.3定时器/计数器应用举例例5-3方式2应用:假设,有一个周期为10ms的脉冲信号,加在引脚T0/P3.4上。现要求该引脚每发生一次负跳变,P1.0端就输出1个2ms脉宽的同步负脉冲,如图5.11所示。假设单片机晶振频率为6MHz。.5.2.3定时器/计数器应用举例解:可将T0设定为方式2计数方式,初值可设为FFH,即外部脉冲由P3.4口发生一次负跳变时,计数器加1即产生溢出,并向CPU发中断。程序在T0产生一次负跳变后,使P1.0产生2ms的同步负脉冲,可利用定时器1产生2ms定时生成。程序如下:
ORG0000H AJMPMAIN ORG 000BH ;T0中断入口地址 AJMP LOOP1 ORG 001BH ;T1中断入口地址 AJMP ITIP ORG MAINMAIN: MOVTMOD,#16H ;T0初始化程序 MOVTL0,#0FFH ;T0初值 MOVTH0,#0FFH SETBTR0 ;启动T0.5.2.3定时器/计数器应用举例
SETBET0 ;允许T0中断 MOVTL1,#30H ;T1置初值 MOVTH1,#0F8HSETB P1.0 P1.0初始为高电平 SETBEA ;开中断HERE: AJMPHERELOOP1: CPLP1.0 ;T0中断服务程序 SETBTR1 ;启动T1 SETBET1 ;允许T1中断 RETIITIP: MOVTL1,#0CH ;T1中断服务程序 MOVTH1,#FEH CPLP1.0 ;P1.0取反CLR ET1 RETI.5.2.3定时器/计数器应用举例例5-4方式3应用:设晶振频率为6MHz,定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,通过TL0和TH0的中断分别使P1.0和P1.1产生400μs和800μs的方波。解:当采用方式3时,对于TH0来说,需要借用定时器T1的控制信号。①计算计数初值:X0=28-200×10-6/2×10-6=156=9CHX1=28-400×10-6/2×10-6=56=38H②确定TMOD方式字:对定时器T0来说,M1M0=11、C/=0、GATE=0,定时器T1不用,取为全0。则TMOD=00000011B=03H。.5.2.3定时器/计数器应用举例③程序如下: ORGMAIN ;主程序MAIN: MOVTMOD,#03H ;T0工作于方式3 MOVTL0,#9CH ;置计数初值 MOVTH0,#38H SETBTR0 ;启动TL0 SETBET0 ;允许T0中断(用于TL0) SETBTR1 ;启动TH0 SETBET1 ;允许T1中断(用于TH0) SETBEA ;CPU开中断.5.2.3定时器/计数器应用举例HALT: SJMPHALT ;暂停,等待中断 ORG000BH ;TL0中断服务程序 CPLP1.0 ;P1.0取反 MOVTL0,#9CH ;重新装入计数初值 RETI ;中断返回 ORG001BH ;TH0中断服务程序 CPLP1.1 ;P1.1取反 MOVTH0,#38H ;重新装入计数初值 RETI ;中断返回.5.3MCS-51单片机串行接口MCS-51系列单片机内部有1个功能很强的全双工串行口,可同时发送和接收数据。它具有4种工作方式,可应用于所需的不同场合。串行通信所需的波特率可由片内定时/计数器或系统时钟产生并可通过软件设置波特率值。接收、发送过程均可工作在查询方式或中断方式,使用十分灵活。MCS-51的串行口既可以做UART(通过异步接收发送器)使用,也可以作为同步移位寄存器使用,方便地构成1个或多个并行输入/输出口,或作串并转换,用来驱动键盘与显示器。.5.3.1MCS-51单片机的串行口1.串行口的基本构成MCS-51单片机串行口的结构主要由数据发送/接收部分、波特率发生器和串行通信控制寄存器等组成。图5.12给出了串行口内部结构框图。.5.3.1MCS-51单片机的串行口图5.12MCS-51系列单片机串行口内部结构图框图.5.3.1MCS-51单片机的串行口(1)数据发送和接收部分如图5.12所示,数据发送部分主要由发送数据缓冲寄存器“SBUF(发送)”、“零检测器”和“发送控制器”等部分组成;数据接收部分由接收数据缓冲寄存器“SBUF(接收)”、“接收移位寄存器”、“接收控制器”及“位检测器”等组成。在串行接收时,串行数据经过RXD(P3.0)引脚进入,经过接收移位寄存器将串行数据转换成并行数据后,移入SBUF(接收),此时,CPU可执行MOVA,SBUF指令,产生“读SBUF(接收)”脉冲,把“SBUF(接收)”中接收到的数据通过内部总线并行传送到累加器A中,完成数据在此部分的串入并出。数据接收部分采用双缓冲结构,避免了接收过程中出现数据重叠错误。.5.3.1MCS-51单片机的串行口在串行发送时,串行数据通过TXD(P3.1)引脚送出,与接收不同,发送数据过程CPU是主动的,当CPU执行MOVSBUF,A指令时,产生“写SBUF(发送)”脉冲,累加器A中的字符数据写入SBUF(发送)缓冲寄存器。在发送控制器的作用下,将数据串行发出。完成数据在此部分的并入串出。为提高数据发送速度,发送器采用单缓冲结构。在接收和发送部分包含有两个SBUF,一个是“SBUF(发送)”,用于存放将要发送的字符数据;另一个是“SBUF(接收)”用于存放接收到的字符数据。它们是在物理结构上完全独立的两个8位缓冲寄存器,但共用一个端口地址SBUF(99H),这个重叠地址靠CPU执行不同指令区分。同时,串行口对外也有两条独立的收发信号线RXD和TXD,因此可以同时发送和接收数据,实现全双工传送。.5.3.1MCS-51单片机的串行口波特率发生器主要由内部定时器/计数器、系统时钟信号及一些控制开关和分频器组成。它提供串行口的发送时钟TXC和接收时钟RXC。但值得注意的是,波特率发生器产生的采样脉冲须经16倍分频,才是串行口的发送和接收移位时钟。串行口的接收过程基于采样脉冲(接收时钟的16倍)对RXD线的监视。当“1到0跳变检测器”连续8次采样到RXD线上为低电平时,则可确认RXD线上出现了接收数据的起始位。随后,接收控制器就从下一个数据位开始对第7、8、9三个脉冲即信号中央采样RXD线(图5.13),并遵守三中去二的原则来决定数据值。
.5.3.1MCS-51单片机的串行口图5.13串行口信号采样图.5.3.1MCS-51单片机的串行口2.串行口通信控制寄存器在MCS-51系列单片机的特殊功能寄存器中,有4个与串行通信有关,分别为SCON,PCON,IE和IP,它们对应的地址分别是98H,87H,A8H和B8H,其中SCON和PCON直接控制串行口的工作方式。(1)串行控制寄存器SCON串行口控制寄存器SCON的格式如下:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8T1RI.5.3.1MCS-51单片机的串行口SM0、SM1:用于选择串行口4种工作方式,可由软件置位或清零。其状态组合与对应的工作方式见表5.3。SM0SM1工作方式功能波特率00方式0移位寄存器方式,用于并行I/O扩展fosc/1201方式18位通用异步接收器/发送器可变10方式29位通用异步接收器/发送器fosc/32或fosc/6411方式39位通用异步接收器/发送器可变.5.3.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.3.1MCS-51单片机的串行口RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。TI:发送中断标志位。在方式0时,当发送数据第8位结束后,或在其他方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。RI:接收中断标志位。在方式0时,当接收数据的第8位结束后,或在其他方式接收到停止位的中间由内部硬件使RI置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。RI也可供查询使用。.5.3.1MCS-51单片机的串行口(2)电源控制寄存器PCONPCON的格式如下:D7D6D5D4D3D2D1D0SMOD---------CF1CF0PDIDLPCON的最高位SMOD是串行口波特率系数控制位。SMOD=1时,波特率增大一倍。当系统复位时,SMOD=0。控制字中其余各位与串行口无关。.5.3.1MCS-51单片机的串行口(3)中断允许控制寄存器IEIE曾在定时器/计数器一节有所提及,其中的ES位与串行通信有关,现说明如下:ES=0,禁止串行中断;ES=1,允许串行中断。(4)中断优先级控制寄存器IPIE也在定时器/计数器一节有所提及,其中的PS位与串行通信有关,现说明如下:PS=0,串行口中断为低优先级;PS=1,串行口中断为高优先级。.5.3.2串行口的工作方式1.方式0在工作方式0下,SBUF用作同步移位寄存器,其波特率是固定的,为fosc(振荡频率)的1/12。数据由芯片的RXD/P3.0引脚进行发送和接收,移位同步脉冲由TXD/P3.1引脚输出。发送/接收的是8位数据。低位在先,顺序发送。帧格式如下:D0D1D2D3D4D5D6D7在方式0中,由于SCON的SM2,RB8和T8不用,均置成0。串行口方式0的结构如图5.14所示。.5.3.2串行口的工作方式图5.14串行口方式0结构示意图.5.3.2串行口的工作方式当CPU执行一条写SBUF的指令,如MOVSBUF,A,就启动了发送过程。TXD引脚输出同步移位脉冲,发送数据缓冲器中的数据逐位串行输出,每一个机器周期从RXD上发送一位数据,故波特率为fosc/12。8位数据(一帧)发送完毕后,发送控制器SEND恢复低电平状态,停止发送数据,且发送控制器硬件置发送中断标志TI=1,向CPU申请中断。CPU响应中断后,先用软件将TI清零,并再次执行写SBUF指令。发送时,SBUF(发)相当于一个并入串出的移位寄存器。.5.3.2串行口的工作方式接收过程是在RI=0,REN(SCON.4)置1的条件下启动。此时RXD为串行数据接收端,TXD依然输出同步移位脉冲。在串行口方式0工作时,并非是一个同步通信方式。它主要用途是和外部同步移位寄存器(如CD4094或CD4014等)外接,达到扩展一个并行口的目的。例如将串行口作为并行输出口使用时,可采用如图5.15所示的方法。.5.3.2串行口的工作方式2.方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。其波特率取决于定时器T1的溢出率和特殊功能寄存器PCON中SMOD的值,即方式1的波特率=(2SMOD/32)×定时器T1的溢出率。引脚TXD/P3.1发送数据、RXD/P3.0接收数据,为全双工接收/发送方式。其结构如图5.16。在方式1时,发送/接收一帧信息共10位:1位起始位(0)、8位数据位(D0~D8)和一位停止位(1)。帧格式如下:停止起启D0D1D2D3D4D5D6D7.5.3.2串行口的工作方式图5.16串行口方式1、2、3结构示意图.5.3.2串行口的工作方式当CPU执行一条写SBUF指令便启动了串行口发送,在指令执行期间,CPU发出的“写SBUF”信号将并行数据送入SBUF,同时通知发送控制器启动发送。发送控制器在发送时钟的作用下自动在发送字符前添加起始位,发送控制端的SEND、DATA相继有效,通过输出控制门从TXD上逐位输出数据。“写SBUF”信号同时将1装入发送移位寄存器的第9位(D触发器),即停止位1的自动插入,一帧信息发送完毕后,SEND、DATA失效,发送控制器硬件置发送中断标志TI=1,向CPU申请中断。.5.3.2串行口的工作方式允许接收控制位REN=1和RI=0,就启动了接收过程,跳变检测器以所选波特率的16倍速率采样RXD引脚上的电平。当采样到从1到0的负跳变时,启动接收控制器接收数据。由于发送、接受双方各自使用自己的时钟,两者的频率总有少许差异。为了避免这种情况所带来的影响,控制器将1位的传送时间分成16等份,位检测器在7、8、9三个状态,也就是在信号中央采样RXD三次。而且,三次采样中至少两次相同的值被确认为数据,这是为了减少干扰的影响。如果接收到的起始位的值不是0,则起始位无效,复位接收电路。如果起始位为0,则开始接收本帧其他各位数据。.5.3.2串行口的工作方式控制器发出内部移位脉冲将RXD上的数据逐位移入移位寄存器,当8位数据及停止位全部移入后,根据以下状态,进行相应操作。①如果RI=0、SM2=0,接收控制器发出“装载SBUF”信号,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。②如果RI=0、SM2=1,那么只有停止位为1才发生上述操作。③RI=0、SM2=1且停止位为0,所接收的数据不装入SBUF,数据将会丢失。④如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。无论出现哪一种情况,跳变检测器将继续采样RXD引脚的负跳变,以便接收下一帧信息。.5.3.2串行口的工作方式3.方式2串行口工作于方式2时,被定义为9位异步通信接口。发送数据由TXD(P3.1)引脚输出,接收数据由RXD(P3.0)引脚引入,其结构如图5.16。其发送/接收一帧信息为11位,其中1位起始位(0)、8位数据位(先低位后高位)、1位可控位为1或0的第9位数据、1位停止位。帧格式如下:停止起启D0D1D2D3D4D5D6D7D8.5.3.2串行口的工作方式方式2的波特率=(2SMOD/64)×fosc,附加的第9位数据值取决于SCON中的TB8,它可由软件置位或清0,在实际应用中该位作为多机通信中地址/数据信息的标志位,也可作为数据通信的奇偶校验位。下面是一个实际的以TB8作为奇偶校验位的发送中断服务程序,R0中存放着发送数据区起始地址。PIPL: PUSHPSW ;保护现场 PUSHA CLRTI ;清发送中断标志 MOVA,@R0 ;取数据 MOVC,P ;奇偶位送C MOVTB8,C ;奇偶位送TB8 MOVSBUF,A ;数据写入发送缓冲器,启动发送 INCR0 ;数据指针加1 POPA ;恢复现场 POPPSW RETI ;中断返回.5.3.2串行口的工作方式4.方式3方式3为波特率可变的9位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。方式3的波特率=(2SMOD/32)×(定时器T1的溢出率)。方式2与方式3都是9位异步通信接口,发送或接收一帧11位的信息。方式2与方式3的不同之处仅在于波特率,方式2的波特率与振荡器频率有关为fosc/32(SMOD=1时)或fosc/64(SMOD=0时),而方式3的波特率由定时器/计数器T1及SMOD决定。在方式2、方式3时,发送、接收数据的过程与方式1基本相同,所不同的仅在于对第9位数据的处理上。发送时,第9位数据由SCON中的TB8位提供。接收数据时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。串行口工作方式的比较如表5.4所示。.5.3.3波特率设置串行通信的4种工作方式对应着3种波特率。对于方式0,波特率是固定的,为单片机时钟的十二分之一,即fosc/12。对于方式2,波特率有两种可供选择,即fosc/32和fosc/64。对应于以下公式:波特率=fosc×2SMOD/64用户对PCON中的SMOD位的设置来选择确定波特率值。对于方式1和方式3,波特率都由定时器T1的溢出率来决定,对应于以下公式:波特率=(2SMOD/32)×(定时器T1的溢出率)而定时器T1的溢出率则和所采用的定时器工作方式有关,并可用以下公式表示:定时器T1的溢出率=fosc/12×(2n-X)其中X为定时器T1的计数初值,n为定时器T1的位数,对于定时器方式0,取n=13;对于定时器方式1,取n=16;对于定时器方式2、3,取n=8。.5.3.3波特率设置在实际应用中,定时器T1通常采用方式2,即自动重装方式。此时,TL1和TH1分别为两个8位的计数器,当TL1从全“1”变为全“0”时,TH1中所保存的初值自动装入TL1中。这样,不仅简化了操作,也避免了因重装初值而带来的定时误差。表5.5给出了常用波特率与定时器T1初值之间的关系。.5.3.4多机通信图5.17主从式多机通信系统.5.3.4多机通信主从多机通信的具体过程如下:(1)使所有的从机的SM2位置1,以便接收主机发来的地址。(2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1。(3)所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,使SM2位清零以接收主机随后发来的所有信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。(4)主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0)。.5.3.5串行口的应用与编程MCS-51系列单片机串行通信有两种方式,相应编程亦有两种方式:查询方式和中断方式。两种方式中当发送和接收数据后都要清TI和RI。串行口方式1和方式3都是异步通信方式,方式1为8位数据位,方式3为9位数据位,两种方式的波特率都是受定时器T1的溢出率控制。.5.3.5串行口的应用与编程例5-5如图5.18所示,利用CD4094串入并出的功能,编制能使与CD4094相接的8支发光二极管自左至右轮流被点亮并反复循环的程序。相连的二极管为共阴极。图5.18单片机驱动LED系统连接图.5.3.5串行口的应用与编程解:CD4094是一种串入并出的同步移位寄存器,CLK为同步脉冲。STB为控制端:当STB=0时,禁止8位并行数据的输出,允许串行数据从DATA端输入;当STB=1时,允许并行数据输出,禁止串行数据输入。若串行口采用查询方式输出,二极管的点亮时间由延时子程序决定。.5.3.5串行口的应用与编程程序如下: ORG1000H MOVSCON,#00H ;串行口初始化为方式0 CLRES ;关中断 MOVA,#80H ;起始显示码BEGIN: CLRP1.0 ;关闭CD4094并行输出 MOVSUBF,A ;允许串行口数据串行输出LOOP: JNBTI,LOOP ;状态查询并等待串行口数据输出完成 SETBP1.0 ;允许CD4094并行输出点亮二极管 LCALLDELAY ;调用延时以保证点亮一段时间 CLRTI ;清除发送标志 RRA ;准备点亮下一个发光二极管 SJMPBEGIN ;循环DELAYEQU0500H ;延时子程序入口地址 END.5.3.5串行口的应用与编程例5-6串行口以全双工方式收发由7位二进制数组成的字符,数据第8位用来作奇偶校验位,采用偶校验方式,假设传送的波特率为1200波特、时钟频率fosc=6MHz、发送缓冲区首址为BLOCK1,接收缓冲区首址为BLOCK2,试编写有关的通信程序。解:可采用串行口工作方式1的方式传输由7位字符和1位偶校验所构成的8位数据。MCS-51单片机的奇偶校验位P是当累加器A中“1”的个数为奇数时P=1,为偶数时P=0。故可直接把P的值放入传输数据的最高位(奇偶校验位),构成偶校验。.5.3.5串行口的应用与编程①计算计数初值:传输数据的波特率可由定时器T1产生,将其设定为工作方式2,避免计数溢出时重装定时初值。取SMOD=0:定时器T1的溢出率=波特率32/2SMOD=1200×32/20=38400其对应的计数初值为:X=2n-(fosc/T1的溢出率×12)=28-(6×106/38400×12)=243=F3H另一种方法是通过查表5.5确定X=F4H。②确定方式字:对于SCON:SM0、SM1=01时为方式1,在SM2=0和REN=1条件下,允许接收数据,其余各位均取0。则SCON=01010000B=50H。对于PCON:由于SMOD=0,所以PCON=00H(同系统复位以后的状态,可不赋值)。对于TMOD:由于只用T1,且为定时方式2,所以TMOD=00100000B=20H。.5.3.5串行口的应用与编程③程序如下。主程序: MOVTMOD,#20H ;定时器T1设为方式2 MOVTL1,#F3H ;装入定时器初值 MOVTH1,#F3H ;8位重装值 SETBTR1 ;启动定时器T1 MOVSCON,#50H ;串行口设为方式1 MOVR0,#BLOCK1H ;发送缓冲区首址 MOVR1,#BLOCK2H ;接收缓冲区首址 SETBEA ;开中断 SETBES ;允许串行口中断 LCALLSOUT ;先输出1个字符 SJMP$ ;等待中断.5.3.5串行口的应用与编程中断服务程序: ORG0023H ;串行中断入口 LJMPSF1 ;转至中断服务程序SF1: JNBR1,SOUT ;不是接收则转 LCALLREVE ;是接收,则调用接收子程序 SJMPNEXT ;转至统一出口SOUT: LCALLSEND ;是发送,则调用发送子程序NEXT: RETI ;中断返回发送子程序:SEND: MOVA,@R0 ;取发送数据到A MOVC,P ;奇偶校验位赋于C MOVA.7,C ;送入ASCII码最高位中 INCR0 ;修改发送数据指针 MOVSBUF,A ;发送数据 CLRTI ;清发送中断标志 RET ;返回主程序.5.3.5串行口的应用与编程接收子程序:REVE: MOVA,SUBF ;读入接收缓冲区内容 MOVC,P ;取出奇偶校验位 ANLC,/A.7 ;进行偶校验 MOV01H,C ;奇偶位与接收到的奇偶位进行异或 CPLC ;相同无错,否则有错 ANLC,A.7 ORLC,01H JCERROR ;传输有错误,则转至错误处理程序段 ANLA,#7FH ;删去奇偶校验位 MOV@R1,A ;存入接收缓冲区 INCR1 ;修改接收缓冲区指针 CLRRI ;清接收中断标志REEOR:… RET ;返回主程序.5.3.5串行口的应用与编程例5-7现甲机在外部数据存储器BLOCK1开始区域中存有LEN个8位数据,希望正确发送给乙机并存到乙机外部数据存储器的BLOCK2区域。见图5.19,请编出相应程序。解:为正确将数据从甲机发送到乙机,可在传输过程中采用奇偶校验方法。可将甲、乙两台单片机设置在工作方式2、全双工串行通信方式,甲机发送的数据每帧为11位,可编程的第9位数据作为奇偶校验位。数据传输过程如下:每发送1帧信息,乙机对接收的数据进行奇偶校验,若正确,则乙机向甲机发出“00H”,甲机接收该信号后再发送下1字节;若奇偶校验错,则乙机发出“AAH”,甲机接收该信号后将再次发送原数据,直至发送正确为止。图5.20给出了甲、乙两机在全双工通信方式下的流程图。.5.3.5串行口的应用与编程图5.19全双工串行通信连接图.5.3.5串行口的应用与编程(a)甲机发送流程图;.5.3.5串行口的应用与编程(b)乙机发送流程图图.5.4MCS-51单片机中断系统
5.4.1中断的基本概念“中断”是处理事件的一个“过程”,这一过程一般是由计算机内部或外部某种紧急事件引起并向主机发出请求处理的信号,主机在允许情况下响应请求,暂停正在执行的程序,保存好“断点”处的现场,转去执行中断处理程序,处理完后恢复现场,自动返回到原断点处,继续执行原程序。这一处理过程就称为“中断”。.5.4.1中断的基本概念中断执行过程.5.4.1中断的基本概念1.中断源:中断源就是中断请求信号的来源。2.中断响应与返回3.优先级控制二级中断嵌套的中断过程。.5.4.2中断源和中断请求标志中断源.5.4.2中断源和中断请求标志1.外部中断外部中断请求有两种触发方式:电平触发及边沿触发。
用户可以通过对特殊功能寄存器TCON中IT0和IT1位的编程来选择。相应位定义格式如下:IT0(IT1):外部中断0(或1)触发方式控制位。
IT0(或IT1)=0,则选择外部中断为电平触发方式;IT0(或IT1)=1,则选择外部中断为边沿触发方式。.5.4.2中断源和中断请求标志IE0(IE1):外部中断0(或1)的中断请求标志位。(硬件置位、硬件复位)IE0(IE1)=1,表示()检测到有效的中断请求信号;IE0(IE1)=0,表示()上无有效的中断请求信号。.5.4.2中断源和中断请求标志串行口的中断是当串行口发送完或接收完一帧信息后,通过接口硬件自动置位SCON的TI或RI位向CPU申请的。当CPU响应中断后,需用户采用软件方法清零,以便撤除中断请求信号。2.内部中断
MCS-51单片机(51子系列)的内部中断有定时器/计数器T0/T1的溢出中断,串行口的发送/接收中断。
当T0/T1计数到由全0变为全1时,由硬件自动置位TCON
的TF0或TF1,向CPU申请中断。CPU响应中断后能自动撤除中断请求信号(硬件复位)。.5.4.2中断源和中断请求标志串行口控制器SCONTI:串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清0。RI:串行口接收中断源。 接收完一帧,由硬件置位。响应中断后,必须用软件清0。.5.4.3中断系统控制1.中断允许控制字
MCS-51单片机对各中断源的中断开放(允许)或关闭(屏蔽)是由内部的中断允许寄存器IE的各位来进行两级控制的。所谓两级控制是指各个中断源的允许控制位与一个中断允许总控位EA配合实现对中断请求的控制。EA(IE.7):允许/禁止全部中断。当EA=0,则禁止所有中断的响应;当EA=1,则各中断源的响应与否取决于各自的中断控制位的状态。.5.4.3中断系统控制
x(IE.6):保留位,无意义。ET2(IE.5):定时计数器2(8052型单片机)的溢出或捕获中断响应控制位。ET2=0则禁止中断响应;ET2=1为允许中断响应。ES(IE.4):串行通信接收/发送中断响应控制位。ES=0,禁止中断响应;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.4.3中断系统控制2.中断优先级控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物(黑吉辽蒙卷03)(考试版)-2026年高考考前预测卷
- 水风光一体化多源数据融合分析技术方案
- 产科新生儿护理工作质量细则
- 档案借阅归还时间约束办法
- 功能型零食分层陈列管理制度
- 异地多活数据库一致性解决方案
- 高处作业平台防倾覆检查措施
- 地下室隐蔽工程验收规范指南
- 压疮风险评估预防管理规范
- 用户故事地图梳理方法规范
- 薪智:2025年新材料产业典型企业人才与薪酬趋势分析报告
- 四川省房屋建筑工程消防设计技术审查要点(2025年版)
- 管道工程竣工验收报告范本
- 2025年财会监督工作自查报告
- 前置胎盘合并产后出血护理查房
- 湖北烟草招聘面试全攻略:面试技巧与题目解析
- 桥式起重机安全检查表
- 2025年全国行政执法人员执法资格考试必考题库及答案
- 留样样品管理办法
- GB/T 45711.2-2025皮革撕裂力的测定第2部分:双边撕裂
- 药品进货查验管理制度
评论
0/150
提交评论