




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章重点内容和要求本章重点讨论MCS-51单片机内部的资源的原理及其应用
并行I/O口
定时器/计数器
串行I/O口基本要求:
掌握P0~P3的特性及其应用
掌握T/C的原理、工作方式、程序设计方法及应用
学会综合运用
了解串行口的原理、制式6.3MCS-51串行I/O口及串行通信
第6章MCS-51内部的I/O口、定时器及其应用6.1MCS-51内部的并行I/O口及应用6.2MCS-51的定时器/计数器[例]利用MCS-51单片机的T/C,产生电子时钟的1S基时,并且由P1.1MCS-51内部的并行I/O口及应用01×1/fosc×128192×1/fosc×122)TF0(TCON.INC R0 ;它们都有定时和对外部事件计数的功能,可用于定时控制、延时、对外部事件检测和计数等场合.4)TR0(TCON.1MOVA,#LOW(-1000+7);M=当方式1时(6—2)还可以通过查询TF1是否置位来判断TH1是否回零溢出。由软件把控制字写入TCON和TMOD,用来设置T/C0和T/C1的工作方式和控制功能。MOVR7,#0FH即先执行一条指令要重装入的校准后的低8位初值0;
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口及应用定时器/计数器的组成定时器/计数器的控制定时器的四种工作方式T/C的初始化
定时器/计数器的溢出校准和实时读取应用举例6.2MCS-51的定时器/计数器6.3MCS-51串行I/O口及串行通信1串行通信基础知识2MCS-51的串行I/O口及控制寄存器5MCS-51串行口的多机通信3MCS-51串行口双机异步通信4MCS-51串行口的应用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.1.1P0口
功能:
控制=0:
P0口可作通用I/O口,是漏级开路的。因此必须外接上拉电阻,以保证“1”信号正常输出。控制=1:
P0口分时作为地址/数据总线使用。内部结构:如图所示当外部扩展存储器或I/O口时,由EA、PC指针从外部程序存储器取指令码、执行指令MOVC、MOVX时,控制信号=1,使MUX与反向器3连通,作分时地址/数据总线。6.1.2P1口
功能:P1口作通用I/O口P1口也是一个“准双向”口,作输入口时要先将输出驱动管截止。即先执行一条指令MOVP1,#0FFH内部结构:如图所示6.1.3P2口
功能:
控制=0:P2口用作通用I/O口与P1口类似控制=1:
P2口用作高8位地址总线
内部结构:如图所示6.1.4P3口功能:
第二输出功能端=1:P3口用作通用I/O口
P3口用作第二功能
三根第二功能输出引脚TXD、WR和RD
五根第二功能输入引脚INT0、INT1、T0、T1和RXD内部结构:如图所示6.1.5
MCS-51内部并行I/O口的应用“读锁存器”和“读引脚”的指令P0、P2、P3口复用作片外扩展系统的系统总线直接输入/输出
一、“读锁存器”和“读引脚”的指令
1.“读锁存器”的指令
P0~P3作目的操作数的指令,能实现“读—修改—写”口锁存器的操作,这类指令有:(1)字节操作指令(2)位操作指令ANLPx,—JBCPX.Y,relORLPx,—CPLPX.YXRLPx,—CLRPX.Y DJNZPx,relMOVPX.Y,CINCPx其中:X是口的序号0~3,Y是位的序号0~7P0~P3编程和使用的方法
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引脚信号(2)位操作指令同理,必须先写一条SETBPX.Y或能对所读口位的D锁存器写入“1”的指令,在其后再紧跟如下指令。JNBPX.Y,relJBPX.Y,rel二、P0、P2、P3口复用作片外扩展系统的系统总线
无条件输入/输出程序
查询输入/输出程序中断输入/输出程序三、直接输入/输出[例]简单开关量的输入/输出通过驱动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”灭
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
(2)查询输入/输出程序
读入P3.0引脚上的开关K4的预置状态,若P3.0=1,则驱动P1.7输出使LED3闪亮一段时间;否则,查询等待。参考程序如下:
ORG0200HMAIN3:MOVSP,#60HSETBP1.7WAIT:JNBP3.0,WAIT
MOVR7,#0FHLOOP:CPLP1.7ACALLDLYDJNZR7,LOOP SJMPWAITEND6.2MCS-51的定时器/计数器在单片机实时应用系统中,定时和对外部事件计数的功能。定时:对周期已知的脉冲信号计数计数:对外部事件计数,对周期未知的外来脉冲信号计数定时方法:
采用软件占用CPU的时间,降低了CPU的使用效率;定时或计数方法:
采用专门的硬件电路,参数调节不便;
采用可编程的定时器/计数器是最好的方法。
可以方便灵活地修改定时或计数的参数或方式
与CPU并行工作,大大提高了CPU的工作效6.2.1定时器/计数器的组成Timer/CounterMCS-51单片机内部有二个16位的可编程的定时器/计数器:定时器/计数器0(T/C0)定时器/计数器1(T/C1)它们都有定时和对外部事件计数的功能,可用于定时控制、延时、对外部事件检测和计数等场合.T/C0和T/C1的结构及与CPU的关系如图所示。结构组成:
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计数器方式0方式1方式2方式3TH0TL0T/C1TH1TL1T/C0方式3串行口波特率发生器共同点:都是通过计数器计脉冲的个数来实现的定时方式与计数方式的主要区别1、定时方式T/C计数8051内部机器周期信号的个数,由计数个数可以计算出定时时间。每个机器周期使T/C的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时间到。f=12MHz,一个机器周期是1μs2、计数方式
T/C计数来自引脚T0(P3.4)和T1(P3.5)的外部脉冲信号的个数。输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。
最高计数频率为振荡频率的1/24。即计数周期=2机器周期。不同点:6.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。各位功能如下:
1.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引脚的外来脉冲计数。
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。二、
控制寄存器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。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的中断标志位和申请信号的触发方式控制位。6.2.3定时器的四种工作方式
TMOD中控制位C/T设置定时或计数功能
M1、M0位的设置选择四种工作方式,
即方式0、方式1、方式2和方式3
方式0、1和2时,T/C0和T/C1的工作相同;
方式3时,T/C0和T/C1的工作不同。方式0
高8位和低5位的一个13位计数器的运行方式当TL1的低5位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过查询TF1是否置位来判断TH1是否回零溢出。
GATETRxINTx
启动情况00X停止01X启动定时/计数10X停止11启动定时/计数11停止
其中:1表示高电平,0表示低电平,X表示任意状态
启动控制
B=TR1
A=TR1
(INT1+GATE)举例:利用GATE位测正脉冲的宽度
方式1
方式1是一个16为定时器/计数器,见图6-7。方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0)均是8位的,构成16位计数器。
方式2
在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C,如图6-8所示。每当它计满回零时
一方面向CPU发出溢出中断请求,另一方面从TH1(或TH0)中重新获得初值并启动计数;也就是CPU自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。方式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控制。在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.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计数。
2.计数器初值的计算
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时3.定时器初值计算
在定时模式下,计数器对单片机振荡频率fosc经12分频后的机器周期进行加1计数,用X表示计数个数,M表示模,C表示定时初值,Tcy表示机器周期,则1Tcy=12/fosc,因此,定时时间T的计算公式为:T=X·Tcy=(M-C)Tcy 定时初值公式为:C=M-T/Tcy定时器的溢出率=1/T=fosc/(12·X)=fosc/(12·(M-C))
6.2.6应用举例应用举例1
举例2GATE[例]利用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启动(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;中断返回ENDORG0000HMOVTMOD,#00H MOVTH0,#0E0HMOVTL0,#18HSETBTR0LOOP:JBCTF0,DO1SJMPLOOPDO1:MOVTH0,#0E0HMOVTL0,#18HCPLP1.0SJMPLOOPEND
2)
查询方式:还可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。程序中查询采用JBCTF0,DO1指令,目的是当判到TF0=1后,必须用软件复位TF0,为下次计数器回零溢出做好准备,这条指令具有判TF0为1后清零的双重功能。[例]利用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。
对P3.3(INT1)引脚输入的脉冲采用查询的方法。
(INT1)
被测脉宽置1TR1 TH1TL1从0开始计数清0TR1,停止T/C1计数图6-12脉冲测试原理(3)编程方法ORG0000HMAIN:MOVSP,#6FMOVTMOD,#90HMOVTL1,#00HMOVTH1,#00HLOOP:JBP3.3,LOOPSETBTR1LOOP1:JNBP3.3,LOOP1LOOP2:JBP3.3,LOOP2CLRTR1MOV30H,TL1MOV31H,TH1......ACALLCalc;计算子程序略ACALLDIR;显示子程序略SJMP$END
程序清单:6.2.5定时器/计数器的溢出校准和实时读取为什么要对定时器/计数器的溢出校准?
8051内部定时器/计数器当计数器回零溢出后,
A一方面置位TF0/TF1中断标志,申请中断;
A另一方面,方式0、1、3在未再次装入计数初值时,计数器会自动从0值重新开始计数。如果要求反复计数或定时,由于CPU响应中断和重新装入初值都需要时间,这样会给计数或定时带来误差。对于单级中断的系统,一般中断延时可以忽略,但在时间上要求确实很严格的应用场合,必须精确计入这些延时,这时需要对定时器溢出校准。
若在单级中断的系统中,CPU响应中断至少用3个机器周期,若有其它指令的延误,则延误时间不易计算。可采用以下程序段来校准。例如,T/C1方式1,定时1MS中断,fosc=12MHz,则定时初值为:65536-1MS/1μs=65536-1000=0FC18H既是[-1000]的补码。校准方法: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……扩大计数个数和定时时间
[例]利用MCS-51单片机的T/C,产生电子时钟的1S基时,并且由P1.7输出2S的方波。Fosc=12MHz。焦点:
16位计数器最大定时65.536ms,要产生比这个时间长的定时,怎么办?1、两个定时器级联2、硬件定时加软件计数相结合。一个T/C定时,回0溢出时,使P1.0输出一个负脉冲送到另一个T/C的外部脉冲输入端用以计数。当fosc=12MHz时,最大时间可以达到:T=(65536×65536)×1μs=4294967296μs=4294.967296S。若再与软件计数相结合,会产生更长的时间。两个T/C级联的方法:6.3
串行I/O接口SIO(一).异步通讯以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符间隔不固定,只需字符传送时同步。异步通讯常用格式:一个字符帧异步通讯的双方需要两项约定:一帧字符位数的规定:数据位,校验位,起始位和停止位。2.波特率(位/秒)对传送速率的规定例:要求每秒传送120个字符,每帧为10位。数据位传输率=120×8=960位/秒(二).同步通讯以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。D0D1D2D3D4D5D6D7停止位起始位1.发送器:并
串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。2.接收器:串
并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。3.控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。单工通讯:数据单向传送。半双工通讯:数据可分时双向传送。全双工通讯:可同时进行发送和接收。发送器接收器发送器接收器 6.3.1MCS-51串行接口
1个全双工串行接口,可同时进行发送和接收。串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式:按不同方式,一帧位数8/10/11发送/接收时,数据皆低位在前。一帧字符发送/接收结束,置位标志位(TI/RI)并申请SIO中断。中断控制:中断允许位ES中断入口:0023HD0D1D2D3D4D5D6D7停止位起始位D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D8停止位起始位D71.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H 。 1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。 发送指令: MOV SBUF,A2)接收SBUF存放已接收成功的8位数据,供CPU读取。 读取串行口接收数据指令: MOVA,SBUF2.串行口控制/状态寄存器SCON(98H)SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零3.节电控制寄存器PCONSMOD):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。二.串行接口的工作方式
SM0,SM1选择四种工作方式。(1)方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12 如:fosc=12MHz, B=1MHz,每位数据占1
s。4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。
发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7写REN=1RI=0RXD输入RI接收时序(a)(b)(2)方式1
8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。写入SBUF采样(a)发送时序图TXD数据输出TID0D1D2D3D4D5D6D7停止位起始位RXD输入数据(b)接收时序图D0D1D2D3D4D5D6D7停止位起始位RI检测负跳变(3)
方式2和方式39位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)×fosc。 方式3:B=(2SMOD/32)×T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。发送时序写入SBUFTXD输出TIRXD输入接收时序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7检测负跳变(4)计算波特率方式0为固定波特率:B=fosc/12 方式2可选两种波特率:B=(2SMOD
/64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。 B=(2SMOD/32)×T1溢出率T1为方式2的时间常数:X=28-t/T溢出时间:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]
波特率B=(2SMOD
/32)×fosc/[12×(28-X)]串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。 串行口的应用串行口初始化编程格式:
SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0 (MOVPCON,#80H) ;波特率加倍 (MOVTMOD,#20H) ;T1作波特率发生器 (MOVTH1,#X) ;选定波特率 (MOVTL1,#X) (SETBTR1) (SETBEA) ;开串行口中断 (SETBES)发送程序:先发送一个字符,等待TI=1后再发送下一个字符。1.查询方式:TRAM: MOV A,@R0 ;取数据 MOV SBUF,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年芳纶压光机合作协议书
- 植物激素与生长调节的关系试题及答案
- 中班防诈骗课件
- 2025脑卒中后视力障碍的研究进展
- 生态系统中的物质循环研究试题及答案
- CPSM考试技巧与例题试题及答案
- 国际物流师掌握物流信息流试题及答案
- 物流师网络资源试题及答案整合
- 考点23电解池金属的腐蚀与防护(核心考点精讲精练)-备战2025年高考化学一轮复习考点帮(新高考)(原卷版)
- 骨质疏松健康教育课件
- 24年追觅在线测评28题及答案
- 未筛分碎石施工方案
- 锅炉水冷壁安装作业指导书
- 汽车尾气污染的产生及综合治理PPT课件
- 贝雷桥设计及施工方案(精选)
- 赞美诗歌400首全集
- 仿宋字练习字帖
- 泰国白糖买卖合同(中英文)
- 纸浆技术指标大全
- 化工仪表英文缩写及实例
- 医学影像科诊疗技术人员授权申请表模板
评论
0/150
提交评论