《单片机第六章 (2)PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《单片机第六章 (2)PPT讲稿.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机第六章第1页,共45页,编辑于2022年,星期五一、一、串行通信的基本概念串行通信的基本概念 基本方式基本方式:并行:并行:8位或位或16位数据同时传送,速度快、传输位数据同时传送,速度快、传输 线多、传输距离近。线多、传输距离近。串行:数据按位传输,速度慢、传输线少、传串行:数据按位传输,速度慢、传输线少、传 输距离远。输距离远。第2页,共45页,编辑于2022年,星期五一、一、串行通信的基本概念串行通信的基本概念 串行通信方向串行通信方向:单工:只能单方向传送数据单工:只能单方向传送数据 半双工:同一时间只能作一个方向的传送半双工:同一时间只能作一个方向的传送 全双工:双向同时收发数
2、据全双工:双向同时收发数据 第3页,共45页,编辑于2022年,星期五接收器接收器单工方式单工方式发送器发送器第4页,共45页,编辑于2022年,星期五接收器接收器接收器接收器发送器发送器发送器发送器数据流数据流半双工方式半双工方式第5页,共45页,编辑于2022年,星期五发送器发送器接收器接收器数据流数据流接收器接收器发送器发送器全双工方式全双工方式第6页,共45页,编辑于2022年,星期五一、一、串行通信的基本概念串行通信的基本概念 串行通信方式串行通信方式:异步传送异步传送方式方式:数据按字符为单位传送,每帧:数据按字符为单位传送,每帧 数据含起始位(数据含起始位(0)、数据位、奇偶校验
3、)、数据位、奇偶校验 位和停止位(位和停止位(1)4部分组成。部分组成。同步传送方式同步传送方式:数据按块传送,数据块起始处:数据按块传送,数据块起始处 发同步字符(发同步字符(SYN)。)。第7页,共45页,编辑于2022年,星期五异步串行通信数据格式第8页,共45页,编辑于2022年,星期五SYN同步字符同步字符CRC终止字符终止字符开始开始终止终止数据块数据块同步通信数据格式同步通信数据格式第9页,共45页,编辑于2022年,星期五二二、MCS51单片机的串行口单片机的串行口 1、功能与结构、功能与结构:MCS51系系列列单单片片机机内内部部有有一一个个全全双双工工的的串串行行端端口口:
4、P3.0(RXD)、P3.1(TXD),有有4种工作方式种工作方式。第10页,共45页,编辑于2022年,星期五二二、MCS51单片机的串行口单片机的串行口 串行口有两个独立的接收、发送缓冲器:串行口有两个独立的接收、发送缓冲器:SBUF,占用同一地址(占用同一地址(99H)。发送时,只写不读;接收)。发送时,只写不读;接收时,只读不写;中断标志是时,只读不写;中断标志是RI/TI。第11页,共45页,编辑于2022年,星期五二二、MCS51单片机的串行口单片机的串行口 串行口控制寄存器串行口控制寄存器SCON:字节地址字节地址98H,可位寻址。,可位寻址。SCON格式如下:格式如下:SM0S
5、M1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998D7D6D5D4D3D2D1D0SCON位地址位地址第12页,共45页,编辑于2022年,星期五串行口控制寄存器串行口控制寄存器SCON:SM0、SM1:串行口工作方式设置位:串行口工作方式设置位 SM2:方式:方式2和方式和方式3的多机通讯控制位的多机通讯控制位 (方式(方式0不用)不用)REN:串行接收允许位,:串行接收允许位,0禁止接收,禁止接收,1允许接收允许接收 TB8:在方式:在方式2、3中,是要发送的第中,是要发送的第9位数据。位数据。RB8:在方式:在方式2、3中,是要接收的第中,是要接收的第9位数据。位数据。
6、(TB8和和RB8在方式在方式0中均不用)中均不用)TI:发送中断标志,须由软件清零。:发送中断标志,须由软件清零。RI:接收中断标志,须由软件清零。:接收中断标志,须由软件清零。第13页,共45页,编辑于2022年,星期五电源控制寄存器电源控制寄存器PCON 字节地址字节地址87H,无位地址。,无位地址。其中与串行接口有关的只有其中与串行接口有关的只有D7位位 (PCON的最高位)的最高位)SMOD:波特率加倍位,:波特率加倍位,1加倍,加倍,0不加倍不加倍 第14页,共45页,编辑于2022年,星期五2、串行口的四种工作方式、串行口的四种工作方式 SM0SMl工作方式工作方式方式简单描述方
7、式简单描述波特率波特率000移位寄存器移位寄存器I/O振荡频率振荡频率1201110位位UART可变可变10211位位UART振荡频率振荡频率32或振荡频率或振荡频率6411311位位UART可变可变第15页,共45页,编辑于2022年,星期五方式方式0 8位移位寄存器输入输出方式位移位寄存器输入输出方式串行数据通过串行数据通过RXD端入、出,低位在前端入、出,低位在前TXD端输出同步移位脉冲,波特率为端输出同步移位脉冲,波特率为fosc/12方式方式0主要用于主要用于I/O口的扩展口的扩展第16页,共45页,编辑于2022年,星期五方式方式1 10位位异异步步通通信信方方式式:1个个起起始始
8、位位(0)、8个个数数据位(低位在前)、据位(低位在前)、1个停止位(个停止位(1)TXD端发送数据端发送数据,RXD端接收数据端接收数据方式方式1波特率可变波特率可变:波特率波特率2SMOD/32(T1的溢出率)的溢出率)溢出率:每秒钟溢出的次数,定时时间的倒数。溢出率:每秒钟溢出的次数,定时时间的倒数。第17页,共45页,编辑于2022年,星期五方式方式2、3 11位位异异步步通通信信方方式式:1个个起起始始位位(0)、8个个数数据据位位(低低位位在在前前)、1个个附附加加的的第第9位位和和1个个停停止止位(位(1)TXD端发送数据端发送数据,RXD端接收数据端接收数据方式方式2只有两种波
9、特率:只有两种波特率:fosc/32或或fosc/64。(。(2SMOD/64fosc)。方式方式3波特率可变:波特率可变:波特率波特率2SMOD/32(T1的溢出率)的溢出率)第18页,共45页,编辑于2022年,星期五3、多机通信、多机通信 主从式多机通信系统如下图。利用主从式多机通信系统如下图。利用SM2控制位实现控制位实现 主机TXDRXDTXDRXDRXDRXDTXDTXD从机2从机1从机n第19页,共45页,编辑于2022年,星期五3、多机通信、多机通信 RB81 引起中断(地址)引起中断(地址)SM21 RB80 不引起中断(数据)不引起中断(数据)接收接收 RB81 SM20
10、均引起中断均引起中断 RB804、注意:在串行通信中,定时器T1作为波特率发生器使用时,通常选用定时方式2。原因一是操作方便,二是避免了因为重装时间常数而带来定时误差(注意,T1应关中断)。第20页,共45页,编辑于2022年,星期五三、串行口应用举例三、串行口应用举例 串行口信号发送流程串行口信号发送流程:置串口方式(置串口方式(SCON)清中断标志清中断标志TI发送数据送发送数据送SBUF等待等待TI为为1(查询方式或中断方式)(查询方式或中断方式)清清TI,重复发送数据,重复发送数据 第21页,共45页,编辑于2022年,星期五三、串行口应用举例三、串行口应用举例 串行口信号接收流程串行
11、口信号接收流程:置串口方式(置串口方式(SCON)置置REN1,清中断标志,清中断标志RI等待等待RI为为1(查询方式或中断方式)(查询方式或中断方式)从从SBUF取数据取数据清清RI,重复接收数据,重复接收数据 第22页,共45页,编辑于2022年,星期五例例1:由由串串行行口口发发送送带带偶偶校校验验位位的的ASC码码数数据据块块。设数据块在片内设数据块在片内30H3FH单元。单元。解:设单片机采用解:设单片机采用12MHZ晶振,串行口工作于晶振,串行口工作于方式方式1,T1用作波特率发生器,工作于方式用作波特率发生器,工作于方式2,PCON中的中的SMOD位为位为0,发送的波特率为,发送
12、的波特率为1200。第23页,共45页,编辑于2022年,星期五例例1:定时器计数器定时器计数器T1初值计算:初值计算:由:波特率由:波特率2SMOD/32(T1的溢出率)的溢出率)SMOD取取0值值有:有:T1的溢出率的溢出率12003238400T1的溢出率的溢出率:N=1/t=fosc/12x(256-x)T1初值初值 :X=230=0E6H 第24页,共45页,编辑于2022年,星期五例例1:另:根据题意,另:根据题意,TMOD的方式控制字为的方式控制字为 20H(方式(方式2)串行口串行口SCON方式控制字为方式控制字为40H(方式(方式1)相应的发送程序如下:相应的发送程序如下:第
13、25页,共45页,编辑于2022年,星期五例例1:Tstart:Mov TMOD,#20H Mov TL1,#0E6H Mov TH1,#0E6H Mov SCON,#40h Mov R0,#30h Mov R7,#10H SETB TR1Loop:MOV A,R0 Mov c,p Mov ACC.7,c Mov SBUF,A Wait:jnb TI,WaitClr TiInc R0 Djnz R7,loop Ret第26页,共45页,编辑于2022年,星期五例例2:由由串串行行口口接接受受带带偶偶校校验验位位的的ASC码码数数据据块块。设设接接受受的的数数据据块块共共10H个个字字节节,存存
14、放放于于片片内内40H4FH单元中。单元中。解:设单片机采用的晶振频率、波特率、解:设单片机采用的晶振频率、波特率、SMOD位的值等均同上题。相应的接收子程序位的值等均同上题。相应的接收子程序如下:如下:第27页,共45页,编辑于2022年,星期五例例2:Rstart:Mov TMOD,#20H Mov TL1,#0E6H Mov TH1,#0E6H Mov R0,#40h Mov R7,#10H Setb TR1 Loop:Mov SCON,#50hWait:jnb RI,wait Mov A,SBUF Clr RI Mov c,p Jc error Anl A,#7Fh Mov R0,a
15、Inc R0 Djnz R7,loop Ret error:出错处理,略。:出错处理,略。第28页,共45页,编辑于2022年,星期五例例3:设T1选 工 作 方 式2,fosc=11.0592MHz,SMOD=0,串行口工作于方式1,试设计一个波特率为2400的发生器。解:2400=n/32有 n=76800 T1的溢出率的溢出率:N=1/t=fosc/12x(256-x)故 x=244D=0F4HMOV SCON,#40HMOV TMOD,#20HMOV PCON,#00HMOV TL1,#0F4HMOV TH1,#0F4HSETB TR1第29页,共45页,编辑于2022年,星期五例例4
16、:编写发送程序,将60H6FH的数据块从串行口输出。将串行口定义为工作方式2发送,TB8作奇偶校验位。MOV SCON,#80HMOVPCON,#80HMOVR0,#60HMOVR7,#10H LOOP:MOVA,R0MOVC,PSW.0MOVTB8,CMOVSBUF,A WAIT:JBC TI,CONTSJMPWAIT CONT:INCR0DJNZR7,LOOPRET第30页,共45页,编辑于2022年,星期五例例5:设串行口外接一个串行输入设备,单片机和该设备采用11位异步通信方式,波特率2400,晶振为11.0592MHz,串行口选择工作方式3,定时器T1选工作方式2,SMOD=0时,计
17、算得TL1初始值为0F4H。编制其接收程序。第31页,共45页,编辑于2022年,星期五 PVE:MOVTMOD,#20HMOVPCON,#00HMOVTH1,#0F4HMOVTL1,#0F4HSETRTR1MOVR0,#50HMOVR7,#10HMOVSCON,#0D0H WAIT:JBCRI,PRISJMPWAIT PRI:MOVA,SBUFJNB PSW.0,PNPJNB RB8,PERSJMPRIGHT PNP:JBRB8,PER RIGHT:MOVR0,AINCR0DJNZR7,WAITCLR PSW.5;奇偶校验正确RET PER:SETBPSW.5;奇偶校验出错RET第32页,共
18、45页,编辑于2022年,星期五四 串行扩展I/O接口:1.利用SPI扩展I/O接口:扩展并行输出口:利用SPI扩展并行输出口示意图,见图6-41第33页,共45页,编辑于2022年,星期五。第34页,共45页,编辑于2022年,星期五如图6-41,通过并行口输出片内RAM中20H和21H两个单元数据。MOV R7,#2 ;置计数器 MOV R0,#20H ;缓冲区指针 MOV SCON,#00H ;设置串行口为方式0 CLR P1.0 ;允许串行接收OUT1:MOV A,R0 ;取数据 MOV SBUF,A ;启动发送过程 JNB TI,$;等待一帧发送结束 CLR TI INC R0 ;指
19、向下一数据 DJNZ R7,OUT1 SETB P1.0 ;送出并行数据 RET 第35页,共45页,编辑于2022年,星期五扩展并行输入口:利用SPI扩展并行输入口的示意图,见图6-42。第36页,共45页,编辑于2022年,星期五图6-42中,经串行口从16位的并行扩展口读入2个字节数据,并存入片内RAM的20H和21H单元中。MOV R7,#2 ;置计数器 MOV R0,#20H ;缓冲区指针 CLR P1.0 ;置入并行数据 SETB P1.0 ;允许串行移位 MOV SCON,#10H 串行口方式0,允许接收stop:JNB RI,$;等待一帧接收结束 CLR RI MOV A,SB
20、UF ;读入数据 MOV R0,A ;送入缓存区 INC R0 ;调整指针 DJNZ R7,stop ;未完,继续 RET第37页,共45页,编辑于2022年,星期五例例6.56.5:用中断法编写串行口方式1下发送程序。设单片机主频为6MHz,定时器 T1用作波特率发生器,波特率为2400bps,发送字符块在内部RAM的起始地址为BLOCK单元,字符块长度为LEN。要求奇校验位在数据的第7位发送,字符块长度LEN先发送。第38页,共45页,编辑于2022年,星期五解:为使发送波特率为2400 bps,取SMOD=1,计算得TH1和TL1的时间常数初值为0F4H。本程序由主程序和发送子程序两部分
21、组成。其流程图如图6-13所示。主程序用于定时器 T1和串行口初始化、发送字符块长度字节LEN、中断系统初始化;中断服务程序用于形成奇校验位并加到发送数据第7位和发送这个字符。第39页,共45页,编辑于2022年,星期五ORG2000HBLOCKDATA20HLENDATA14HSTART:MOVTMOD,#20H;定时器T1为方式2M0VTL1,#0F4H;波特率为2400MOVTH1,#0F4H;给TH1送重装初值MOVPCON,#80H;令SMOD=1SETBTR1;启动T1MOVSCON,#40H;串行口为方式1MOVR0,#BLOCK;字符块起始址送R0MOVA,#LENM0VR1,
22、A;字符块长度字节送R1MOVSBUF,A;发送LEN字节SETBEA;开CPU中断SETBES;允许串行口中断WAIT:SJMPWAIT;等待中断第40页,共45页,编辑于2022年,星期五发送子程序:ORG0023HLJMPTXSVE;转发送服务程序ORG2160TXSVE:CLRES;关串行口中断CLRTI;清TI MOVA,R0;发送字符送AMOVC,PSW.0;奇偶校验位送CCPLC;形成奇校验位送CMOVACC.7,C;使A中最高位为奇校验位MOVSBUF,A;启动发送DJNZR1,NEXT;所有字符发完停止发送INCR0;未完,字符块指针加1SJMPENDTNEXT:CLRESE
23、NDT:RETI;中断返回第41页,共45页,编辑于2022年,星期五例例6.66.6:用查询法编写串行口在方式3下的接收程序。设单片机主频为6MHz,波特率为2400bps,接收数据区起始地址为RBLOCK(内部RAM),接收数据块长度由始发端发送。解:本程序由主程序和接收子程序组成。第42页,共45页,编辑于2022年,星期五ORG2000HTBLOCKDATA40START:MOVTMOD,#20H;T1工作于方式2MOVTH1,#0F4H;设置时间常数初值MOVTL1,#0F4HSETBTR1;启动T1MOVSCON,#0D0H;串行口工作于方式3接收MOVPCON,#80H;使SMO
24、D=1MOVR0,RBLOCK;接收数据区起始址送R0MOVR3,#00H;累加和寄存器清零ACALLRISV;调接收子程序:SJMP$;动态暂停第43页,共45页,编辑于2022年,星期五接收子程序:接收子程序流程图如图6-14(b)所示。参考程序为:RISV:CLRRI;清RILEN:JNBRI,RXLEN;等待接收数据块长度字节CLRRI;接收完后清RIMOVA,SBUF;数据块长度字节送AMOVR2,A;存入R2ADDA,R3;开始求累加和MOVR3,A;累加和存入R3RDS:JNBRI,RDS;等待接收字符CLRRI;接收完后清RIMOVA,SBUFMOVR0,A;接收字符存入内存ADDA,R3;求累加和MOVR3,A;存入R3INCR0;接收数据区指针加1DJNZR2,RDS;若数据块未收完,则继续第44页,共45页,编辑于2022年,星期五RIV:JNBRI,RIV;等待接收累加和送ACLRRI;接收完后清RIMOVA,SBUF;接收到的累加和送AXRLA,R3;比较两个累加和JNZERROR;若不等,则转出错处理RET;若相等,则返回第45页,共45页,编辑于2022年,星期五