网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共60页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串行口

* 工作方式1 数据帧10位,起始位1位(低)、停止位1位(高)、数据位8位。 * 数据发送:与SBUF开始,通过串行口自动加入起始位、停止位(格式信息),形成完整帧格式。在移位脉冲作用下,由TXD端串行输出。一个字符帧发送完之后,TXD端维持“1”状态,TI置“1”。通知CPU。 写入 SBUF 采样 (a) 发送时序图 TXD 数据输出 TI D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RXD 输入数据 (b) 接收时序图 D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RI 检测 负跳变 * 数据接收:REN=1,串行口采样RXD端,当采样由1跳变到0时,认定接收到起始位。在移位脉冲作用下,把接收到的数据位移如接收寄存器中,直至将停止位移入RB8中,置位RI,通知CPU从SBUF取走接收到的字符。 写入 SBUF 采样 (a) 发送时序图 TXD 数据输出 TI D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RXD 输入数据 (b) 接收时序图 D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RI 检测 负跳变 * 串行工作方式2、3 9位异步通信方式 字符帧11位:起始位(低)1位、数据位8位、可程控第9位数据、停止位(高)1位。 发送时第9位数据由SCON中的TB8提供,软件设置。 SETB TB8/CLR TB8 接收时第9位数据装入SCON中的RB8位,系统自动装入。 * 波特率设定 方式0:波特率固定focs/12; 方式1:波特率可变; 方式2:波特率为focs/64或focs/32;(SMOD) 方式3:波特率可变; 可变波特率(方式1、3)的计算公式 B=(2SMOD/32)×T1溢出率 SMOD为PCON寄存器最高位值 定时器溢出率:单位时间定时器溢出的次数; 溢出周期:定时器溢出一次所需要的时间。 * 当定时器1作波特率发生器时,通常选用定时工作方式2(8位自动加载)。 设X位计数初值,则: 溢出周期(定时时间)=12×(256-X)/fOSC 波特率=(2SMOD/32)× fOSC /(12×(256-X)) * 例题:假设晶振11.059M,波特率1200,计算定时器1计数初值。串行口工作方式1,写出相应的初始化程序。(SMOD=0,波特率不倍增) 解: T1工作方式2(8位寄存器自动加载) X=256-6×11.059e6×1/(384×1200)=232=E8H * 初始化程序: MOV TMOD,#20H ;设置T1工作方式2 MOV TL1,#E8H ;计数初值 MOV TH1,#E8H SETB EA ;中断允许 CLR ES ;禁止串行中断 MOV PCON,#00H ;波特率不倍增 MOV SCON,#50H ;串行方式1,REN=1 SETB TR1 ;启动定时器1 * 已知一个8031系统中,要求接受串行输入20个字符(每帧数据包括9位数据位,1位起始位,1位停止位),存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.059MHz)。 初始化定时器/计数器 初始化串行口 写出基于中断相应的程序 * 串行口采用工作方式3,定时器1工作方式2 初始化定时器: 2400=11.059*10E6/12/32/(256-x) x=244=F4H MOV TL1,#0F4H MOV TH1,#0F4H MOV TMOD,#20H SETB TR1 初始化串口 MOV SCON #D0H * 程序示例: ORG 0000H AJMP START ORG _____ AJMP MY_INT ORG 0030H START:MOV TL1,____ MOV TH1,____ MOV TMOD,____ MOV SCON,____ MOV PCON,____ MOV R0,____ MOV R1,____ MOV IE,____ SETB ____ SJMP $ MY_INT:CLR ___ MOV A,SBUF DJNZ R0,GET CLR REN GET:MOV @R1,A INC R1 RETI * 程序示例: ORG 0000H AJMP START ORG 0023H AJMP MY_INT ORG 0030H START:MOV TL1,#0F4H MOV TH1,#0F4H MOV TMOD,#20H MOV SCON, #D0H MOV PCON,#0 MOV R0,#20 MOV R1,#50H MOV IE,90H SETB TR1 SJMP $ MY_INT:CLR RI MOV A,

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档