版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章MCS-51内部的I/O口、定时器及其应用重点内容和要求本章重点讨论MCS-51单片机内部的资源的原理及其应用
并行I/O口
定时器/计数器
串行I/O口基本要求:
掌握P0~P3的特性及其应用
掌握T/C的原理、工作方式、程序设计方法及应用
学会综合运用
了解串行口的原理、制式16.3MCS-51串行I/O口及串行通信
第六章MCS-51内部的I/O口、定时器及其应用6.1MCS-51内部的并行I/O口及应用6.2MCS-51的定时器/计数器2
6.1.1
P0口
6.1.2
P1口
6.1.3
P2口
6.1.4
P3口
6.1.5
MCS-51内部并行I/O口的应用
6.1MCS-51内部的并行I/O口及应用36.2.1定时器/计数器的组成6.2.2定时器/计数器的控制6.2.3定时器的四种工作方式6.2.4T/C的初始化6.2.5定时器/计数器的溢出校准和实时读取6.2.6应用举例
6.2MCS-51的定时器/计数器4
6.3MCS-51串行I/O口及串行通信6.3.1串行通信基础知识6.3.2MCS-51的串行I/O口及控制寄存器6.3.5MCS-51串行口的多机通信6.3.3MCS-51串行口双机异步通信6.3.4MCS-51串行口的应用5
8051单片机内部有四个8位并行I/O口:
P0、P1、P2和P3
P0~P3这4个并行I/O口都可以作准双向通用I/O口
P0、P2和P3口还有复用的第二功能每个口都包含:
一个(8位)锁存器(即特殊功能寄存器P0~P3)
一个输出驱动器
两个三态缓冲器6.1MCS-51内部的并行I/O口及应用6
6.1.1P0口
功能:
控制=0:
P0口可作通用I/O口,是漏级开路的。因此必须外接上拉电阻,以保证“1”信号正常输出。控制=1:
P0口分时作为地址/数据总线使用。内部结构:如图所示当外部扩展存储器或I/O口时,由EA、PC指针从外部程序存储器取指令码、执行指令MOVC、MOVX时,控制信号=1,使MUX与反向器3连通,作分时地址/数据总线。76.1.2P1口
功能:
P1口作通用I/O口
P1口也是一个“准双向”口,作输入口时要先将输出驱动管截止。即先执行一条指令
MOVP1,#0FFH内部结构:如图所示86.1.3P2口
功能:
控制=0:
P2口用作通用I/O口与P1口类似控制=1:
P2口用作高8位地址总线
内部结构:
如图所示96.1.4P3口功能:
第二输出功能端=1:P3口用作通用I/O口
P3口用作第二功能
三根第二功能输出引脚
TXD、WR和RD
五根第二功能输入引脚
INT0、INT1、
T0、T1和RXD内部结构:如图所示106.1.5
MCS-51内部并行I/O口的应用“读锁存器”和“读引脚”的指令P0、P2、P3口复用作片外扩展系统的系统总线直接输入/输出11
一、“读锁存器”和“读引脚”的指令
1.“读锁存器”的指令
P0~P3作目的操作数的指令,能实现“读—修改—写”口锁存器的操作,这类指令有:(1)字节操作指令(2)位操作指令
ANLPx,—JBCPX.Y,relORLPx,—CPLPX.YXRLPx,—CLRPX.Y DECPxSETBPX.YDJNZPx
,relMOVPX.Y,CINCPx
其中:X是口的序号0~3,Y是位的序号0~7P0~P3编程和使用的方法12
2.“读引脚”的指令“读引脚”指令的特点是:P0~P3作为源操作数出现在指令中,但在读引脚数据之前,必须对所读的口或口位的D锁存器写入“1”.
要正确读引脚数据,必须先写一条MOVPX,#0FFH指令或能对所读的口或口位的D锁存器写入“1”的指令,而后紧接着写下面的指令:(1)字节操作指令
MOV A,PxANLA,PXMOV direct,PxORLA,PXXCH A,PXXRLA,PXPUSH PX ANLdirect,PXADD A,PX ORLdirect,PXADDC A,PXXRLdirect,PXSUBB A,PX Q引脚信号13(2)位操作指令同理,必须先写一条SETBPX.Y或能对所读口位的D锁存器写入“1”的指令,在其后再紧跟如下指令。
MOVC,PX.YANLC,PX.YORLC,PX.YJNBPX.Y,relJBPX.Y,rel
14P0、P2、P3口复用作片外扩展系统的系统总线15无条件输入/输出程序
查询输入/输出程序中断输入/输出程序三、直接输入/输出[例6-1]简单开关量的输入/输出161)P1.7~P1.4并行输出程序通过驱动P1.7~P1.4输出,使LED3~LED0巡回显示,程序如下:ORG0000HMAIN1:MOVSP,#6FHMOVA,#0FFHMOVP1,AANLA,#0EFHLOOP:MOVP1,A;P1.4=0ACALLDLYRLAJBACC.0,LOOPMOVA,#0EFHSJMPLOOP;延时子程序
DLY: MOVR6,#0FHDLY1:MOVR5,#0FFHDLY2:MOVR4,#0FFHDLY3:DJNZR4,DLY3DJNZR5,DLY2DJNZR6,DLY1 RETENDLED“0”亮“1”灭17
2)读入P1.3~P 1.0引脚上的开关K3~K0的预置状态,再经P1.7~P1.4输出去驱动LED3~LED0发光二极管,使发光二极管显示开关状态。对应参考程序:ORG0100HMAIN2:MOVA,#0FFHMOVP1,AMOVA,P1
SWAPA
MOVP1,A
HERE:SJMPHERE
END
18(2)查询输入/输出程序
读入P3.0引脚上的开关K4的预置状态,若P3.0=1,则驱动P1.7输出使LED3闪亮一段时间;否则,查询等待。参考程序如下:
ORG0200HMAIN3:MOVSP,#60HSETBP1.7WAIT:JNBP3.0,WAIT
MOVR7,#0FHLOOP:CPLP1.7ACALLDLYDJNZR7,LOOP SJMPWAITEND196.2MCS-51的定时器/计数器在单片机实时应用系统中,定时和对外部事件计数的功能。定时:对周期已知的脉冲信号计数计数:对外部事件计数,对周期未知的外来脉冲信号计数定时方法:
采用软件占用CPU的时间,降低了CPU的使用效率;定时或计数方法:
采用专门的硬件电路,参数调节不便;
采用可编程的定时器/计数器是最好的方法。
可以方便灵活地修改定时或计数的参数或方式
与CPU并行工作,大大提高了CPU的工作效率206.2.1定时器/计数器的组成
Timer/Counter
MCS-51单片机内部有二个16位的可编程的定时器/计数器:定时器/计数器0(T/C0)定时器/计数器1(T/C1)它们都有定时和对外部事件计数的功能,可用于定时控制、延时、对外部事件检测和计数等场合.T/C0和T/C1的结构及与CPU的关系如图6-4所示。21结构组成:
T/C0由两个8位的TH0(8CH)和TL0(8AH)组成
T/C1由TH1(8DH)和TL1(8BH)组成软件设置:
计数初值:对TH1、TL1、TH0、和TL0的初始化编程
工作方式:通过TMOD和TCON对每个T/C设置定时或计数特殊功能寄存器
TMOD(TimerModeRegister)TCON(TimerControlRegister)
THx
存放计数初值的高8位
TLx
存放计数初值的低8位定时器/计数器(T/C0和T/C1)的组成T/C0和T/C1都是16位的加1计数器22方式0方式1方式2方式3TH0TL0T/C1TH1TL1T/C0方式3串行口波特率发生器23共同点:都是通过计数器计脉冲的个数来实现的定时方式与计数方式的主要区别1、定时方式
T/C计数8051内部机器周期信号的个数,由计数个数可以计算出定时时间。每个机器周期使T/C的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时间到。
f=12MHz,一个机器周期是1μs
2、计数方式
T/C计数来自引脚T0(P3.4)和T1(P3.5)的外部脉冲信号的个数。输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。
最高计数频率为振荡频率的1/24。即计数周期=2机器周期。不同点:
246.2.2定时器/计数器的控制
定时器/计数器的工作由TCON和TMOD控制
由软件把控制字写入TCON和TMOD,用来设置T/C0和T/C1的工作方式和控制功能。当8051系统复位时,TCON和TMOD所有位都被清0。一、工作模式寄存器TMOD(89H)
TMOD用于控制T/C0和T/C1的工作模式,其各位的定义格式如下:
其中,低4位用于T/C0,高4位用于T/C1。各位功能如下:
251.M1和M0工作方式选择位这两位可形成四种编码,对应四种工作方式:
M1M0方式功能描述
000为13位定时器/计数器,TL存放低5位,TH存高8位
011为16位定时器/计数器
102常数自动装入8位定时器/计数器
113仅适于T/C0,两个8位定时器/计数器2.C/T计数/定时选择位
C/T=0,设为定时方式,对机器周期计数;
C/T=1,设为计数方式,对来自T0或T1引脚的外来脉冲计数。26
3.GATE门控位(控制启动方式)
GATE=0时,T/C的启动只要用软件使TR0(或TR1)置1即可,而不管/INT0(或/INT1)的电平是高还是低。
GATE=1时,只有/INT0(或/INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才启动T/C工作。也就是T/C的启动受双重控制。注意:TMOD不能位寻址,只能由字节设置T/C的工作方式,低半字节设定T/C0,高半字节设定T/C1。2728二、
控制寄存器TCON(88H)控制寄存器TCON除可字节寻址外,各位还可位寻址。各位定义及格式如下:
1)TF1(TCON.7)T/C1的溢出标志位。当T/C1被允许计数后,T/C1从初值开始加1计数,回零时由高位产生溢出,由硬件自动置TF1为“1”,并向CPU请求中断,当CPU响应并进入中断服务程序后,TF1又被硬件自动清0。TF1也可以由程序查询和清0。
2)TF0(TCON.5)T/C0溢出标志位。其功能同TF1。29
3)TR1(TCON.6)T/C1运行控制位。由软件置位或复位。当GATE(TMOD.7)为0时,
TR1为1时,启动T/C1计数;
TR1为0时,停止T/C1计数。
4)TR0(TCON.4)T/C0运行控制位。其功能同TR1,只是GATE为TMOD.3。
5)IE1、IT1、IE0、IT0(TCON.3~TCON.0)
外部中断INT1、INT0的中断标志位和申请信号的触发方式控制位。30316.2.3定时器的四种工作方式
TMOD中控制位C/T设置定时或计数功能
M1、M0位的设置选择四种工作方式,
即方式0、方式1、方式2和方式3
方式0、1和2时,T/C0和T/C1的工作相同;
方式3时,T/C0和T/C1的工作不同。32方式0
高8位和低5位的一个13位计数器的运行方式当TL1的低5位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过查询TF1是否置位来判断TH1是否回零溢出。33启动控制
B=TR1
A=TR1
(INT1+GATE)
GATETRx
INTx
启动情况
00X停止
01X启动定时/计数
10X停止
11启动定时/计数
11停止
其中:1表示高电平,0表示低电平,X表示任意状态
举例:利用GATE位测正脉冲的宽度34
方式1
方式1是一个16为定时器/计数器,见图6-7。方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0)均是8位的,构成16位计数器。35
方式2
在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C,如图6-8所示。36每当它计满回零时
一方面向CPU发出溢出中断请求,另一方面从TH1(或TH0)中重新获得初值并启动计数;
也就是CPU自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。37方式3
方式3下T/C0和T/C1功能就不同了。此时,TH0和TL0按两个独立的8位计数器工作,如图6-9所示。T/C1只能按不中断的方式工作,常常利用它的定时功能作串行口波特率发生器,如图6-10所示。T/C0方式3时,TL0占用了T/C0的C/T、GATE、TR0、TF0、T0(P3.4)和INT0控制引脚。
TH0只有简单的内部定时功能,它占用了T/C1的TR1控制位和TF1中断标志位,其启动/关闭仅受TR1控制。38在T/C0工作在方式3时,T/C1仍可设置为方式0~2。由于TR1和TF1已被T/C0(TH0)占用,计数开关已被接通,此时仅用T/C1的C/T来切换其定时或计数工作方式就可使T/C1工作。计数器(8位、13位或16位)回零溢出时,只能将输出送入串行口或用于不需要中断的场合。一般情况下,当T/C1用作串行口波特率发生器时,T/C0才设置为工作方式3。此时,常把T/C1设置为方式2用作波特率发生器,见图6-1039406.2.4T/C的初始化
1.初始化的步骤
MCS-51内部的T/C是可编程的,其工作方式和模式通过程序进行设定和控制,称为对T/C的初始化。初始化的步骤是:
1)
确定工作方式,即根据题目要求先给TMOD送一个方式控制字。
2)计算计数初值/定时初值,并写入TH0、TL0或TH1、TL1中。
3)根据需要,置位EA使CPU开放中断,同时置位ETx允许T/C中断。IP设定中断优先级。
4)给TCON送命令控制字,即置位TRx启动T/C计数。
412.计数器初值的计算
T/C在计数模式下,计数之前必须给它的计数器TH0、TL0或TH1、TL1选送计数初值。T/C的计数器是在计数初值的基础上加1计数的,当计数器回“0”时自动产生溢出,置位TFx中断标志,向CPU提出中断请求。设需要计数器计数的个数为X,计数初值为C,由此可得出如下计算计数初值的通式:计数初值:C=M-X(6—1)式中,M为计数器的模值,该值和计数器的工作方式有关。当方式0时
M=当方式1时(6—2)当方式2、3时423.定时器初值计算
在定时模式下,计数器对单片机振荡频率fosc经12分频后的机器周期进行加1计数,用X表示计数个数,M表示模,C表示定时初值,Tcy表示机器周期,则1Tcy
=12/fosc,因此,定时时间T的计算公式为:
T=X·Tcy
=(M-C)Tcy
(6—3)
定时初值公式为:C=M-T/Tcy
(6—4)
定时器的溢出率=1/T=
fosc/(12·X)=
fosc/(12·(M-C))(6—5)应用举例1
举例2GATE43[例6-2]利用T/C0方式0产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc
=12MHZ。解:
(1)确定T/C0的工作方式要在P1.0输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可。
(2)送T/C0的方式控制字(TMOD)=00H,即T/C0定时,方式0,只由TR0启动,因为T/C1不用,高4位取0。即:
GATEC/TM1M0GATEC/TM1M000000000TR0定时方式0,T/C1不用各位均取0启动44(3)计算定时初值
Tcy=12/fosc=12/(12×106
)S=1μs
计数个数:X=1ms/1μs=1000
定时初值:C=(-X)=8192-1000=7192D
=1C18H=1110000011000B
高8位0E0H低5位18HTH0初值为0E0H,TL0初值为18H。若采用方式1,16位,则定时初值:C=65536-1000=64536=FC18HTH0初值为0FCH,TL0初值为18H
45
(4)
编程方法可以采用中断或查询两种方式编写程序。
1)中断方式:当T/C0定时溢出时,TF0被置1,申请中断。编程使CPU采用响应中断方式输出方波效率比较高。程序清单:
ORG0000HAJMPMAIN;转到主程序MAIN ORG000BHAJMPTC0S;转到T/C0的中断服务程序TC0S主程序:ORG1000HMAIN:MOVSP,#6FHMOVTMOD,#00H;置T/C0为方式0,定时。
MOVTH0,#0E0H;送计数初值
MOVTL0,#18HSETBET0;T/C0允许中断
SETBEA;CPU开中断
SETBTR0;启动T/C0定时
HERE:SJMPHERE;等待中断中断服务程序:ORG1200HTC0S:MOVTH0,#0E0H;重新装入计数初值
MOVTL0,#18HCPLP1.0;输出方波
RETI;中断返回
END46ORG0000HMOVTMOD,#00H MOVTH0,#0E0HMOVTL0,#18HMOVIE,#00HSETBTR0LOOP:JBCTF0,DO1SJMPLOOPDO1:MOVTH0,#0E0HMOVTL0,#18HCPLP1.0SJMPLOOPEND
2)
查询方式:还可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。程序中查询采用JBCTF0,DO1指令,目的是当判到TF0=1后,必须用软件复位TF0,为下次计数器回零溢出做好准备,这条指令具有判TF0为1后清零的双重功能。47方式最小定时最大定时
01×1/fosc×128192×1/fosc×1211×1/fosc×1265536×1/fosc×122、31×1/fosc×12256×1/fosc×12最大计数值48[例6-5]利用GATE门控位测量从INT1引脚输入的正脉冲宽度。解:1.确定工作方式(1)送方式控制字(TMOD)=10010000B=90H;
T/C1定时,方式1,GATE=1。(2)计算初值由于被测正脉冲宽度未知,假设宽度<=65.536ms,fosc=12MHz,则:计数个数:X=65536(最大)定时初值:C=65536-X=65536-65536=0,(TH1)=00H,(TL1)=00H。49
对P3.3(INT1)引脚输入的脉冲采用查询的方法。
P3.3
(INT1)
被测脉宽置1TR1 TH1TL1从0开始计数清0TR1,停止T/C1计数图6-12脉冲测试原理(3)编程方法50
ORG0000HMAIN:MOVSP,#6FMOVTMOD,#90HMOVTL1,#00HMOVTH1,#00HLOOP:JBP3.3,LOOPSETBTR1LOOP1:JNBP3.3,LOOP1LOOP2:JBP3.3,LOOP2CLRTR1MOV30H,TL1MOV31H,TH1......ACALLCalc;计算子程序略
ACALLDIR;显示子程序略
SJMP$END
程序清单:51
6.2.5定时器/计数器的溢出校准和实时读取为什么要对定时器/计数器的溢出校准?
8051内部定时器/计数器当计数器回零溢出后,
A一方面置位TF0/TF1中断标志,申请中断;
A另一方面,方式0、1、3在未再次装入计数初值时,计数器会自动从0值重新开始计数。如果要求反复计数或定时,由于CPU响应中断和重新装入初值都需要时间,这样会给计数或定时带来误差。对于单级中断的系统,一般中断延时可以忽略,但在时间上要求确实很严格的应用场合,必须精确计入这些延时,这时需要对定时器溢出校准。
52
若在单级中断的系统中,CPU响应中断至少用3个机器周期,若有其它指令的延误,则延误时间不易计算。可采用以下程序段来校准。例如,T/C1方式1,定时1MS中断,fosc=12MHz,则定时初值为:
65536-1MS/1μs=65536-1000=0FC18H
既是[-1000]的补码。校准方法:53
CLREA ;禁止所有的中断
CLRTR1 ;停止T/C1计数1MOVA,#LOW(-1000+7);取低8位校准码1ADDA,TL1 ;校准码加TL1中的当前值1MOVTL1,A ;要重装入的校准后的低8位初值1MOVA,#HIGH(-1000+7) ;取高8位校准码1ADDCA,TH1;校准码加TH1中的当前值1MOVTH1,A;要重装入的校准后的高8位初值1SETBTR1 ;启动T/C1……54扩大计数个数和定时时间
[例6-6]利用MCS-51单片机的T/C,产生电子时钟的1S基时,并且由P1.7输出2S的方波。Fosc=12MHz。焦点:
16位计数器最大定时65.536ms,要产生比这个时间长的定时,怎么办?
1、两个定时器级联
2、硬件定时加软件计数相结合。55一个T/C定时,回0溢出时,使P1.0输出一个负脉冲送到另一个T/C的外部脉冲输入端用以计数。当fosc=12MHz时,最大时间可以达到:
T=(65536×65536)×1μs
=4294967296μs
=4294967.296ms
=4294.967296S。若再与软件计数相结合,会产生更长的时间。两个T/C级联的方法:56
在实际应用中,不但计算机与外部设备之间常常要进行信息交换,而且计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。通信的基本方式分为并行通信和串行通信两种。一、并行通信与串行通信6.3.1串行通信基础知识57并行通信——数据的各位同时发送并行通信是构成1组数据的各位同时进行传送,例如8位数据或16位数据并行传送。其特点是传输速度快、效率高。但当距离较远、位数又多时导致了通信线路复杂且成本高。2.串行通信——数据一位一位顺序传送
串行通信是数据一位接一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大地降低了成本,特别适用于远距离通信。缺点是传送速度慢。
58图6―14通信的两种基本方式(a)并行通信;(b)串行通信591.异步通信
异步通信的特点是数据在线路上的传送不连续。在传送时,数据是以一个字符为单位进行传送的。它用一个起始位表示字符的开始,用停止位表示字符的结束。字符帧由发送端一帧一帧的发送,通过传输线由接收设备一帧一帧的接收。在异步通信中,发送端和接收端依靠字符帧格式规定和波特率来协调数据的发送和接收。二、异步通信与同步通信60起始位:位于字符帧开头,只占一位,始终为逻辑0低电平,用于向接收设备表示发送端开始发送一帧数据。数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。若所传数据为ASCII字符,则常取7位。奇偶校验位:位于数据位后,仅占一位,用于表征串行通信中采用奇校验还是偶校验,由用户根据需要决定。停止位:位于字符帧末尾,为逻辑1高电平,通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。(1)字符帧:由起始位、数据位、奇偶校验位和停止位4个部分组成。61图6―15串行异步传送的字符格式(a)字符格式;(b)有空闲位的字符格式62(2)波特率:是数据的传送速率,即每秒钟传送的二进制数码的位数,单位为位/秒(b/s)。它与字符的传送速率不同,字符的实际传输速率是指每秒内所传字符帧的帧数(字符/秒)。二者之间存在如下关系:波特率=位/字符×字符/秒=位/秒要求发送端与接收端的波特率必须一致。63
例如:假设字符传送的速率为120字符/秒而每1个字符为10位,那么传送的波特率为:
10位/字符×120字符/秒
=1200位/秒=1200波特
每1位二进制位的传送时间Td就是波特率的倒数,例如上例中
Td=1/1200=0.833ms642.同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。
信息帧由同步字符、数据字符和校验字符等三部分组成。同步字符:位于帧结构开头,用于确认数据字符的开始数据字符:在同步字符之后,个数不受限制,由所需传输的数据块长度决定;校验字符:有1~2个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性校验。65图6―16串行同步传送的字符格式(a)单同步信息帧结构;(b)双同步信息帧格式同步字符数据字符1数据字符2数据字符3数据字符nCRC1CRC2(a)同步字符1同步字符2数据字符1数据字符2数据字符nCRC1CRC2(b)66单工制式:A端为发送站,B端为接收站,数据仅能从A站发至B站。2.半双工制式:数据既可从A站发送到B站,也可以由B站发送到A站。不过在同一时间只能作1个方向的传送。3.全双工制式:每个站(A、B)既可同时发送,也可同时接收。三、串行通信的制式67图6―17串行通信的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式68检错方法:奇偶校验、校验和、循环冗余码校验。纠错方法:海明码校验、交叉奇偶校验四、通信数据的差错检测和校正69
串行通信中的数据是逐位依次传送的,而计算机系统或计算机终端中的数据是并行发送的。因此,发送端必须把并行数据变成串行才能在线路上传送,接收端接收到的串行数据又需要变换成并行数据才可以送给终端。实现方法:软件实现、硬件实现。五、串行通信中串行I/O数据的实现707172
MCS-51含有一个可编程全双工串行通信接口SIO,该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。它的字符帧格式可以是8位、10位或11位,可以设置各种波特率,能方便的构成双机、多机串行通信接口,从而能实现8051单片机系统之间点对点的单机通信、多机通信以及与系统机的单机或多机通信。6.3.2MCS-51的串行I/O口及控制寄存器
73
MCS-51单片机通过引脚RxD(P3.0,串行数据接收端)和引脚TxD(P3.1,串行数据发送端)与外界进行串行通信。
MCS-51串行口主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。一、串行口的结构74图6―22MCS-51串行口的原理结构图75发送缓冲寄存器SBUF只能写,不能读;接收缓冲寄存器SBUF只能读,不能写。两个缓冲寄存器共用一个地址99H,可以通过读/写指令区分。串行发送:MOVSBUF,A
串行接收:MOVA,SBUF
76
SCON寄存器用来控制串行口的工作方式和状态,它可以是位寻址。在复位时所有位被清,字地址为98H。SCON的格式为二、串行口控制寄存器SCOND7D6D5D4D3D2D1D0
SCONSM0SM1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998位地址77SCON各位的功能:1)SM0、SM1:用于定义串行口的操作模式,两个选择位对应4种工作方式,见下表。其中fOSC是振荡器频率。SM0SM1工作方式功能波特率000110110101同步移位寄存器10位异步收发
11位异步收发11位异步收发fOSC/12由定时器控制fOSC/64或fOSC/32由定时器控制782)SM2:多机通信控制位。在方式0时,SM2不用,应设置为0状态。在方式1下,SM2也应设置为0,此时RI只有在接收电路接收到停止位时才被激活成1,并能自动发出串行口中断请求。在方式2或方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,置RI为1,产生中断请求。793)REN:允许串行接收控制位。若REN=0,则禁止接收;若REN=1,则允许接收。该位由软件置位或复位。4)TB8:发送数据第9位。在方式2和方式3时,TB8存放所要发送的第9位数据。该位由软件置位或复位。5)RB8:接收数据第9位。用于在方式2和方式3时存放接收数据第9位。在方式1下,若SM2=0,则RB8存放接收到的停止位。在方式0下,不使用RB8。806)TI:发送中断标志位,用于指示一帧数据发送是否完成。在方式0时,发送电路发送完第8位数据时,TI由硬件置位;在其他方式下,TI在发送电路开始发送停止位时置位。7)RI:接收中断标志位,用于指示一帧信息是否接收完。在方式0时,当接收到的第8位结束后,由内部硬件使RI置位,向CPU请求中断。在其它方式时,接收到停止位的中间便由硬件置位RI,必须在响应中断后,由软件使其复位。RI也可供查询使用。81
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址为87H,不能位寻址。三、电源控制寄存器PCOND7D6D5D4D3D2D1D0
PCONSMODGF1GF0PDIDL8E8D8C8B8A898887位地址
在HMOS单片机中,该寄存器除最高位外,其它位都是虚设的。最高位SMOD为串行口波特率选择位,当SMOD=1时,方式1、2、3的波特率加倍;当SMOD=0时,系统复位。82串行口有4种工作方式,它是由SCON中的SM0、SM1来定义的。四、串行口的工作方式SM0SM1工作方式功能波特率000110110101同步移位寄存器10位异步收发
11位异步收发11位异步收发fOSC/12由定时器控制fOSC/64或fOSC/32由定时器控制83
1)方式0
串行接口的工作方式0为同步移位寄存器方式,其波特率是固定的,为fosc(振荡频率)的1/12。
方式0发送数据从RXD引脚串行输出,TXD引脚输出同步脉冲。当1个数据写入串行口发送缓冲器时,串行口将8位数据以fosc/12的固定波特率从RXD引脚输出,从低位到高位。发送完后置中断标志TI为1,呈中断请求状态,在再次发送数据之前,必须用软件将TI清0。
84方式0接收在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率采样RXD引脚输入的数据信息。当接收器接收完8位数据后,置中断标志RI=1为请求中断,在再次接收之前,必须用软件将RI清0。85图6-24-a方式0发送时序86图6-24-b方式0接收时序872)方式1
在方式1时,串行口被设置为波特率可变的8位异步通信接口。方式1发送串行口以方式1发送时,数据位由TXD端输出,发送1帧信息为10位,其中1位起始位、8位数据位(先低位后高位)和一个停止位“1”。CPU执行1条数据写入发送缓冲器SBUF的指令,就启动发送器发送。当发送完数据,就置中断标志TI为1。88方式1所传送的波特率取决于定时器T1的溢出率和特殊功能寄存器PCON中SMOD的值,即方式1的波特率=(2SMOD/32)×定时器T1的溢出率。方式1接收当串行口置为方式1,且REN=1时,串行口处于方式1输入状态。它以所选波特率的16倍的速率采样RXD引脚状态。
89图6-25-a方式1发送时序90图6-25-b方式1接收时序91
3)方式2
串行口工作于方式2时,被定义为11位异步通信接口。方式2发送发送数据由TXD端输出,发送1帧信息为11位,其中1位起始位(0)、8位数据位(先低位后高位)、1位可控位为1或0的第9位数据、1位停止位。附加的第9位数据为SCON中的TB8,它由软件置位或清0,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。92方式2接收当串行口置为方式2,且REN=1时,串行口以方式2接收数据。方式2的接收与方式1基本相似。数据由RXD端输入,接收11位信息,其中1位起始位(0)、8位数据位、1位附加的第9位数据、1位停止位(1)。方式2的波特率=(2SMOD/64)×fosc93图7-12方式2发送时序94图7-13方式2的接收时序95
3)方式3
当SM0SM1=11时,串行口工作在方式3。方式3为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。
方式3的波特率由下式确定:方式3波特率=(2SMOD/32)×定时器T1的溢出率96串行通信的4种工作方式对应着3种波特率。
(1)对于方式0,波特率是固定的,为单片机时钟的十二分之一,即fosc/12。
(2)对于方式2,波特率有两种可供选择,即fosc/32和fosc/64。对应于以下公式:
波特率=fosc×2SMOD/64五、波特率的设置97
(3)对于方式1和方式3,波特率都由定时器T1的溢出率来决定,对应于以下公式:
波特率=(2SMOD/32)×(定时器T1的溢出率)
而定时器T1的溢出率则和所采用的定时器工作方式有关,并可用以下公式表示:
定时器T1的溢出率=fosc/[12×(2K-X)]
其中X为定时器T1的计数初
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课后习题课件 - POWERPOINT
- 二零二五年度办公租赁合同附员工健康及安全方案3篇
- 二零二五年度新能源项目担保合同(环保先锋)2篇
- 木质楼地面施工工艺课件
- 二零二五年度住宅小区安防监控系统安装与维护服务协议2篇
- 二零二五年度房产分割与抵押权解除协议3篇
- 2025年度环保型楼顶广告牌安装与运营管理合同2篇
- 2025年人教新课标七年级数学下册阶段测试试卷
- 二零二五年360借条合同多用户隐私保护及数据安全合同3篇
- 2025年统编版九年级物理下册月考试卷
- 机加工工作计划安排
- 习惯性违章培训
- 河北省石家庄市桥西区2022-2023学年七年级上学期期末地理试卷
- 《工程造价管理 第2版》 课件 第一章 工程造价管理概论
- 中国邮政储蓄银行员工违规行为处理办法
- 2023年长沙市中考数学真题试卷及答案
- 《电力设备消防典型准则》(DL5027-2022)
- 米吴科学漫画奇妙万象篇
- 河南省郑州市金水区2022-2023学年三年级上学期期末数学试卷
- XXX酒店开办费POB预算
- Z矩阵、Y矩阵、A矩阵、S矩阵、T矩阵定义、推导及转换公式
评论
0/150
提交评论