




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章8051单片机的异步串行通信技术第一节概述计算机与外界的信息交换称为通信。常用通信方式有两种:并行通信与串行通信,简称并 行传送和串行传送。并行传送具有传送速度快,效率高筹优点,但传送多少数据位就需要多少 根数据线,传送成本高:串行传送是按位顺序进行数据传送,最少仅需要一根传输线即可完成, 传送距离远,但传送速度慢。串行通信乂分同步和异步两种方式。同步通信中,在数据传送开 始时先用同步字符來指示(常约定12个),并由同时传送的时钟信号來实现发送端和接收端 同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送方式对硬件结构要 求较高。在单片机异步通信中,数据分为一帧一帧地传送
2、,即异步串行通信一次传送一个完整 字符,字符格式如图81所示:图8-1异步串行通信的字符格式一个字符应包括以下信息:1. 起始位:对应逻辑0 (space)状态。发送器通过发送起始位开始一帧字符的传送。2. 数据位:起始位之厉传送数据位。数据位中低位在前,高位在后。数据位可以是5、6、7、8 位。3. 奇偶校验位:奇偶校验位实际上是传送的附加位,若该位用于用于奇偶校验,可校检串 行传送的正确性。奇偶校验位的设置与否及校验方式(奇校验还是偶校验)由用户石要确定。4. 停止位:用逻辑1 (mark)表示。停止位标志一个字符传送的结束。停止位可以是1、1.5 或2位。串行通信中用每秒传送二进制数据位
3、的数量表示传送速率,称为波特率。1波特= lbps (位/秒)例如数据传送速率是240帧/秒,每帧由一位起始位、八位数据位和一位停止位组成,则传 送速率为:10x240 = 2400 位/ 秒= 2400 波特单片机的串行通信主要采川异步通信传送方式。在串行通信屮,按不同的通信方向有单工传送和双工传送z分,如图82所示:(a)单工传送(b)双工传送>甲机<乙机(c)全双工传送图8-2单-片机串行通信方向示意图 82 (a)中,t.乙两机只能单方向发送或接收数据;图 82 (b)中,甲机和乙机能分时进行双向发送和接收数据;第二节8051串行口的基本结构mcs51系列单片机串行口结构框
4、图如图83所示:图838051串行口结构框图一、串行口缓冲寄存器sbuf图83中subf是串行口缓冲寄存器,发送sbuf和接收sbuf地址同为99h,但山于 发送sbuf不能接收数据,接收sbuf也不具有发送功能,故二者工作互不干扰。当cpu 向sbuf写入时,数据进入发送sbuf,同时启动串行发送;cpu读sbuf时,实际上是读 接收sbuf数据。二、串行通信控制寄存器与串行通信有关的控制寄存器主要是串行通信控制寄存器scono scot是8051的一个可以 位寻址的专用寄存器,用于申行数据通信的控制。scon的单-元地址98h,位地址9fh-98ho寄 存器内容及位地址表示如下:scon位
5、地址9f9e9d9c9b9a9998位符号sm0sm1sm2rentb8rb8tir1各位功能说明如下:位符号功能说明smo, smismo, smi串行口工作方式选择位:smo sm1工作方式功能0008位数码传送,波特率固定,为f«/12o01110位数码传送,波特率可变。10211位数码传送,波特率固定,为f晶振/64或兔报/32。11311位数码传送,波特率可变。sm2sm2多机通信控制位:当串行口以方式2或方式3接收时,如sm2=1,则只有当接收到的第 九位数据(rb8)为1,才将接收到的前8位数据送入接收sbuf,并使ri 位置1,产生中断请求信号;否则将接收到的前8位数
6、据丢弃。而当sm2 =0时,则不论第九位数据为0还是为1,都将前8位数据装入接收sbuf 中,并产生中断请求信号。对方式0, sm2必须为0,对方式1,当sm2=1, 只有接收到有效停止位后才使ri位置1。renren允许接收位,用于对串行数据的接收进行控制:ren = o,禁止接收;ren=1,允许接收。该位市软件置1或清零。tb8tb8发送数据位&在方式2和方式3时,tb8是要发送的第9位数据。rb8rb8接收数据位8:在方式2和方式3屮,rb8位存放接收到的第9位数据tttt发送中断标志:当方式0时,发送完第8位数据后,该位由硬件置位。在其它方式卜,于 发送停止位之前由便件置位。
7、因此tt = 1,表示帧发送结束。其状态既可 供软件查询使用,也町请求中断。ti位由软件清0。rtrt接收中断标志:当方式0时,接收完第8位数据后,该位由硬件置1。在其它方式卞,当 接收到停止位时,该位由硬件置位。因此ri = 1,表示帧接收结束。其状 态既可供软件查询使用,也可以请求中断。ri位由软件清0。另外,电源控制寄存器pcon中smod位可影响串行口的波特率。当(smod) =1,串行口波特率加倍。还冇中断允许寄存器ie中的es位可选择串行口中断允许或禁止。es = o,禁止串行口中断e s = 1,允许串行口中断第三节80 51串行通信工作方式及应用8051单片机的串行通信共有四种
8、工作方式:1.串行工作方式0串行口为同步移位寄存器方式,波特率固定为f融/12。该方式主要用于i/o口扩展等,方 式0传送数据时,串行数据由rxd (p3.0)端输入或输出,而txd (p3. 1)此时仅作为同步移位脉 冲发牛器发出移位脉冲。串行数据的发送和接收以8位为一帧,不设起始位和停止位,其格式如下:d0d1d2d3d4d5d6d7方式0输出数据时,向sbuf写入数据的指令:movsbuf,a或movsbuf,xxh即为从rxd端输出数据的发送启动指令。当8位数据全部移出后,scon中的ti位被口动 置1。方式0输入数据时,使scon中ren位置1指令:setb ren即为从rxd端输入
9、数据启动指令。当接收到8位数据后scon中的ri位被自动置1。方式0工作时往往需要外部有串入并出寄存器(输出)和并入串岀寄存器(输入)配合使用,方式0多用于将串行口转变为并行口的使用场合,如图84所示:并行输出并行输入(a)(b)图8-4串行工作方式0与输入,输出电路的连接示例图84 (a)中cd4094是”串入并出”移位寄存器,txd端输出频率为f晶振/12的固定 方波信号(移位脉冲),在该移位脉冲的作用下,d端串行输入数据可依次存入cd4094内部8d 锁存器锁存。p1. 0为选通信号,当p1. 0二stb为高电平时,将内部8d锁存器数据并行输出。图84 (b)中cd4014为“串入/并出
10、一串出”移位寄存器,plp8为并行输入端,q8为串行 输出端,当p1. 0二p/s二1,加在并行输入端plp8上的数据在时钟脉冲作用下从q8端串行输出。方式0的移位操作的波特率固定为单片机晶振频率f晶振的十二分z。即:波特率二f晶振/12。例如当f晶振二12mhz,波特率=10 6 (位/秒)o例81试编写从cd4094并行输出数据36h的参考程序:解:参考程序如卜:movscon, #0011;串行口工作方式0。clres:禁止串行口中断。mova,#3611:传送数据送a。clrp1.0:关闭并行输出。mov sbuf, a启动串行输出。here: jbcti,fs; 等待串行输出完毕。a
11、jmpherefs: setbp1.0;开启并彳丁输出。ret:返回。2.串行工作方式1(1) 方式1传送的数据格式方式1传送一帧为10位的串行数据,包括1位起始位,8位数据位和1位停止位。其帧格 式为:起1始00d1d2 1|)3 d1 i5 d5 d7停止(2) 方式1的波特率的确定 方式1的波特率是可变的,计算公式为:波特率二(2smod / 32) x ( t1溢出率)其中smod为pcon寄存器最高位的值。所谓定时器t1的溢出就是t1在单位时间内溢出的次数。如设t1为工作方式2,那么t1 定时时间:t1 定时二(28x) xt机二(2x) x12 / f晶振则t1的溢出率二1/ t1
12、定时二f晶振/ (12 (2x)由此可得波特率的计算公式为:波特率二(2/32) xf晶振 / (12 (2x)实际使用时总是先确立波特率,再计算处吋器t1的记数初值x,然后进行t1的初始化。根据上述波特率的计算公式,可得t1记数初值的计算公式为:x = 256 - (f晶振x2smod ) / (384x波特率)定时器t1z所以选择工作方式2,是因为方式2具冇自动加载功能,可避免通过程序反复 装入计数初值而影响波特率的准确性。(3) 方式1数据的发送和接收方式1的数据发送由一条写入单片机发送寄存器sbuf指令启动。8位数据在串行口由硬件 自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲
13、作用卜s由txd端串行输出。发 送完一帧数据片,使txd输岀端维持” 1 ”状态并置使tt标志位置1以通知cpu发送下一个字 符。接收数据市接收单片机scon中的ren置1开始,随后串行口不断采样rxd端电平,当采样 到rxd端电平从1向0跳变时,就认定是接收信号并开始接收从rxd端输入的数据,并送入内 部接收寄存器sbuf中,直到停止位到來之后,并使rt位置1,通知cpu从sbuf中取走接收到 的一帧字符。方式1传送数据时发送前应先清ti,接收前应先清re例82 rp,乙两单片机拟以工作方式1进行串行数据通信,波特率为1200,卬机发送, 发送数据在甲机外部ram 1000h-101fh单元
14、中。乙机接收,并把接收数据依次放入乙机外部 ram 1000h-101fh单元中。甲,乙机晶振频率均为6mhz。连接方式如图8-5所示:txd、rxd甲机乙机图85 例82不意图解:设定:(1)甲、乙机定时用工作方式2,即初值x = 256 6x 106x 1-243-f3h384 x 1200(2) smod=o,即波特率不倍增。(3) 用查询传送方式。(4) scon二01000000b二40h可得叩机发送主程序如下:org0030hmovtmod,#2011;设定时器1工作方式2。movtl1,#0f3h:设置定时器初值。movtill,#0f3h:设置重装值。clrea:禁止屮断。mo
15、vpcon,#0011;(smod)=oomovscon,#4011:设串行工作方式1,禁止接收。movdptr,#1000h:建立发送数据地址指针初值。movr7,#20h:建立计数指针。setbtri:启动定时器1。send: movxa,dptr:取数据。movsbuf,a:启动数据传送操作。jnbti,$;等待一帧发送完毕。clrti;清ti标志。incdptr;指向下一单元。djnzr7,send;数据块传送结束?没结束继续传送。clrtri;传送结束,停止定时器1工作。ret;返回。乙机接收参考程序如下:org0030hmovtmod,#20h;设定时器1工作方式2。movtl1,
16、#0f3h;设置定时器初值。movth1,#0f3h;设置重装值。clrea;禁止中断。movpcon,#00h;smod=oomovscon,#40h;设串行工作方式1。movdptr,#1000h;建立接收地址指针初值。movr7,#20h;建立计数指针。setbtri;启动定时器tl。setbren;启动接收数据操作。reciv: jnbri,$;等待数据接收完毕。clrri;淸ri标志。mova,sbuf:取数据。movxdptr,a;送外部ram。tncdptr;指向下一单元。djnzr7,rectv;数据块接收完毕?没完继续接收。clrtri:接收完毕,停止定时器1工作ret:返冋
17、。如改用中断方式甲机发送参考程序如k:org0000hajmpmainorg0023hljmpasend;建立串行中断口地址。org0030hmain: movsp,#30h;设置堆栈。movtmod,#20h;设定时器1工作方式2。movtl1,#0f3h;设置定时器初值。movth1,#0f3h;设置垂装值。movpcon,#00h;smod=o«movscon,#40h;设串行工作方式1。movr7,#1fh;建立计数指针。movdptr,#1000h;建立发送地址指针初值。setbea;总中断允许。setbes;串行中断允许。setbtro;启动定时器0。movxa,
18、9;dptr;第一个数据送a。mov sbuf, a:启动传送数据操作。incdptr;指向下一 ram单元。wait: ajmp $;等待中断。中断服务子程序:0rg0100hclrtt;清 tt。asend: m0vxa,dptr:取数据。movsbuf, a;传送数据tncdptr;指向下一单元。djnzr7, goon:传送结束?没结束继续传送。clrea:传送结束,关闭。clrtrigoon: rett;返冋。顺便指出,甲机以屮断方式传送数据时,计数指示为1fh而非20h,这是因为在启动甲机 发送时已经向sbuf发送了一个数据。至于乙机,既可用上述查询方式接收,也可用屮断方式接收。中
19、断方式程序设计思路与查 询方式类似,不再细述。在异步串行通讯中,接收机以波特率的3倍检测rxd端信号,检测到两次以上相同信号即 为有效信号。在实际应用屮,可根据需要加入奇偶校验位一起传送,以提高传送的可靠性。例83甲,乙两单片机同样以工作方式1进行串行数据通信,波特率为1200,甲机发送, 发送数据在甲机外部ram 1000h-101fh单元屮,在发送z前先将数据块长度发送给乙机,发送 完后,向乙机发送一个累加校验和。乙机接收,乙机首先接收数据长度,然后接收数据,并把 接收数据依次放入乙机外部ram 1000h-101fh单元中,接收完毕后进行一次累加和校验,数据 全部接收完毕时向甲机送出状态
20、字,表示传送状态。甲、乙机晶振频率均为6mhzo连接方式见图86:t乙丄解:设定如下:(1)波特率约定为1200,以定时器t1为波特率发生器,t1用工作方式2 (sm0d)=0,波特率不倍增。则初值:x = 2566x1o6x1384x 1200= 243 = f3h(2)设置r5为累加和寄存器,r6为数据块长度寄存器。(3)用查询传送方式。(4)串行口为工作方式1,允许接收,即;scon=01010000b=50h可得甲机发送主程序如下:0rg0030hmovtmod,#2011;设定时器1工作方式2。movtl1,#0f3h;设置定时器初值。movth1,#0f3h;设置重装值。setbt
21、ri;启动定吋器1。movpcon,#00h:(smod)二0。movscon,#5011;设串行工作方式1,允许接收。again:movdptr,u1000h;建立发送数据地址指针初值。movr6,#20h:数据块长度送r6。movr5,#00h:累加和寄存器清“0”。movsbuf,r6;先发送长度值。l1:jbcti,l2;等待发送结束。a j mplil2:movxa,dptr:取数据块中数据。movsbuf,a:发送数据。adda,r5;发送数据累加。movr5,a;累加和送r5。incdptr;地址加1。l3:jbcti,l4;等待帧数据发送完毕。ajmpl3l4:djnzr6,l
22、2;判断数据块是否发送完,若未完继续发送。movsbuf,r5:数据块发送完毕,发累加和校验码。l5:jbctt,l6:等待发送累加和码结束。ajmpl5l6: jbcri,l7:接收从机发来的结果标志码。ajmpl6l7: mova,sbufjzl8:若标志码为00h,表示接收正确,返回;反之重发。ajmpagain;发送有错,重发。l8: ret乙机接收参考程序如下:org0030hmovtmod,#2 oh;设定时器1工作方式2。movtl1,#of3h;设置定时器初值。movtho,#0f3h;设置重装值。setbtri;启动t1。movpcon,#00h;smod二0。movscon
23、,#50h;设串行工作方式1,允许接收。again: movdptr,#100011;建立接收地址指针初值lo: jbcri,li;接收发送长度值。ajmploli: mova,sbufmovr6,a:取发送长度值送r6。movr5,#0011;累加和寄存器清” 0”。watt: jbcrt,l2:接收数据。ajmpwattl2: mova,sbufmovxdptr,a;将所接收数据送数据区。incdptr:指向下一单元。adda,r5;累加。movr5,adjnzr6,wait:若数据接收未完继续。l3: jbcri,l4:数据接收完毕,接收主机的累加校验码。ajmpl3l4: mova,s
24、buf;取主机累加和校验码。xrla,r5;与本机累加和进行校验。jzl7;若校验止确转l7。movsbuf,#0ffii;校验出错,冋送校验出错标志码fhi,表示要求主机重发。l5: jbctt,l6;回送ffh。ajmpl5l6: ajmpagain:重新接收l7: movsbuf,#00h:冋送校验正确标志码00h。l8: jbctt,l9:回送。ajmpl8l9: ret:接收完成,返回。3.串行工作方式2方式2是11位为-帧的串行通信方式,即1位始位,9位数据位和1位停止位。其中第9位数据既可作奇偶校验位,也可作控制位使用。其帧格式为:起始d0d1d2d3d4 d5 d6 d7 d8停止附加第9位(d8)由软件置1或清零。方式2发送时单片机自动将sbuf中8位数据加上 scon中tb8作为第9位数据进行发送。接收时,单片机将接收到的前8位数据送入sbuf,而在 scon中rb8位中存放笫9位数据。方式2波特率只有两种,用公式表示:,.,、smod波特率=(2/64) xf晶振当smod二0,波特率为f晶振/64当smod二1,波特率为f晶振/324.串行工作方式3方式3通信过程与方式2完全相同。区别仅在于方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年柳州市融水苗族自治县特岗教师招聘真题
- 2024年广元市计划招募“三支一扶”人员真题
- 信托监察管理制度
- 信访大厅管理制度
- 信贷押品管理制度
- 公司人员及管理制度
- 公积金机关管理制度
- 分级差异化管理制度
- 化工厂设备管理制度
- 商店专卖店管理制度
- 移动通信行业典型安全隐患图解
- 混凝土结构下册第章钢筋混凝土框架结构设计
- 生态系统对全球变化的响应
- 2023版中国近现代史纲要课件:09第九专题 新民主主义革命伟大胜利
- 小区燃气壁挂炉采购及安装合同
- 危货运输危险源识别清单
- 国际结算(中文)
- GB/T 3098.1-2010紧固件机械性能螺栓、螺钉和螺柱
- GB/T 16631-2008高效液相色谱法通则
- 性能验证医学宣教课件
- 中国现代文学三十年(第二编-第二个十年1928-1937-年-6-月)
评论
0/150
提交评论