- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串行接口工作式0应用举例
串行接口工作方式0应用举例
串行口工作方式0
SM0=0、SM1=0串行口工作于方式0,即串行寄存器方式。
图1 是串行接口方式0的结构示意图。
数据从RXD引脚上发送或接收。一帧信息由8位数据组成,低位在前。
波特率固定,为/12(即为机器周期T)。
同步移位脉冲从TXD引脚上输出。
图 1串行口工作方式0结构示意图
发送 CPU执行一条写SBUF的指令如,MOV SBUF,A 就启动了发送过程。
指令执行期间送来的写信号打开三态门1,将经内部总线送来的8位并行数据写入发送数据缓冲器。
写信号同时启动发送控制器。
此后,CPU与串行口并行工作。经过一个机器周期,发送控制端SEND有效(高电平),打开门5和门6,应许RXD引脚发送数据,TXD引脚输出同步移位脉冲。
在由时钟信号Sb触发产生的内部移位脉冲作用下,发送数据缓冲器中的数据逐位串行输出。每个机器周期从RXD上发送一位数据。故波特率为/12。Sb同时形成同步移位脉冲,一个机器周期从TXD上输出一个同步移位脉冲。
8位数据(一帧)发送完毕后,SEND恢复低电平状态,停止发送数据,且发送控制器硬件置发送中断标志位TI=1,向CPU申请中断。
注:如要再次发送数据,必须用软件将TI清零,并再次执行写SBUF的指令。
接收 在RI=0的条件下,将REN(SCON.4)置1就启动一次接收过程。RXD为串行数据接收端,TXD依然输出同步移位脉冲。
REN置1启动了接收控制器
经过一个机器周期,接收控制端RECV有效(高电平),打开了门6,应许TXD输出同步移位脉冲。该脉冲控制外接芯片逐位输入数据,波特率为/12。
在内部移位脉冲作用下,RXD上的串行输入数据逐位移入移位寄存器。
当8位数据(一帧)全部移入移位寄存器后,接收控制器使RECV失效,停止输出移位脉冲,还发出“装载SBUF”信号,打开三态门2,将8位数据并行送入接收缓冲器SBUF保存。于此同时,接收控制器硬件置接收中断标志RI=1,向CPU申请中断。
CPU响应中断后,用软件使RI=0,使移位寄存器接收下一帧信号,然后通过读接收缓冲器的指令例如 MOV A,SBUF读取SBUF中数据。在执行这一指令时,CPU发出“读SBUF”信号打开三态门3,数据经内部总线进入CPU。
串口方式0应用编程
8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位
存器,就可以扩展一个并行口。
图1 用CD4094扩展8位并行输出口
例:
用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就可以了。
ORG 2000H
START: MOV SCON,#00H ; 置串行口工作方式0
MOV A,#80H ; 最高位灯先亮
CLR P1.0 ; 关闭并行输出(避象传输过程中,各LED的暗红现象)
OUT0: MOV SBUF,A ; 开始串行输出
OUT1: JNB TI,OUT1 ; 输出完否
CLR TI ; 完了,清TI标志,以备下次发送
SETB P1.0 ; 打开并行口输出
ACALL DELAY ; 延时一段时间
RR A ; 循环右移
CLR P1.0 ; 关闭并行输出
JMP OUT0 ; 循环
说明:DELAY延时子程序这里就不给出了。
文档评论(0)