- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模块六 串行接口 6.2 串行接口的工作方式 6.2.1 串行接口的工作方式 方式0——同步移位寄存器方式 串行口的SBUF是作为8位同步移位寄存器用,主要用于和外部同步移位寄存器外接以扩展一个并行I/O接口(将串行口变为1个8位并行I/O口使用)。此方式是半双工的,并非是一种同步通信方式。 波特率固定为fosc/12,即每个机器周期移位一次。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口,也可外接同步输入/输出设备。 (1)发送操作 (2)接收操作 例 写出串行口工作方式0接收时的串行口控制字。 方式0时:SM0,SM1=00 方式0时SM2必须为0:SM2=0 ?REN=1时允许接收:REN=1 方式0为8位数据,TB8、RB8=00 接收前,发送中断标志TI=0 接收中断标志RI=0 故控制字(SCON)=10H 案例 用单片机的串行口扩展输出口 案例 用单片机的串行口扩展输出口 本例是将串行口工作于方式0,串行口工作于方式0时有两种不同的用途: 把串行口设置成并入串出的输出口,此时需要外接一片8位串行输入和并行输出的同步移位寄存器74LS164或CD4094; 将串行口设置成串入并出的输入口,此时需要外接一片8位并行输入和串行输出的同步移位寄存器74LS165或CD4014。 CD4094 CD4094是一种8位串行输入(D端)并行输出的同步移位寄存器,采用CMOS工艺制成。CLK为同步脉冲输入端,STB为控制端:若STB=0,则8位并行数据输出端关闭,但允许串行数据从D输入;若STB=1,则D输入端关闭,但允许8位数据并行输出。 #includereg51.h sbit p10=P1^0; void main() { unsigned char sdata=0xfe; int i; SCON=0; p10=0; //避免LED产生“暗红”现象 while(1) 案例 用单片机的串行口扩展输出口 #includereg51.h sbit p10=P1^0; void isr_serial(); unsigned char sdata=0xfe; void main() { SCON=0; p10=0; SBUF = sdata; EA=1;ES=1; while(1); } 2. 方式1 方式1、方式2、方式3均为全双工方式,串行数据经TXD(P3.1)端发送给外设,而外设发出的串行数据由RXD(P3.0)端接收,发送和接收可同时进行。 当SM0=0,SM1=1时,串行口工作在方式1。串行口为10位异步通信方式。方式1多用于两个单片机(双机)之间或单片机与外设电路间的通信。在此方式下字符帧除8位数据位外,还有一位起始位(0)和1位停止位(1)。 (1)发送过程 发送操作在TI=0时进行,任何一条“写SBUF”指令都可以启动一次发送,CPU向发送器缓冲寄存器写入一个字节的数据后,发送电路自动在8位发送字符前后分别添加1位起始位和1位停止位,并在移位脉冲的作用下在TXD线上依次发送一帧信息。 发送完后自动维持TXD线为高电平(1状态),TI由硬件在发送停止位时置1,并向CPU申请中断。 (2)接收过程 接收操作在RI=0和REN=1条件下进行。 方式1是靠检测RXD来判断的,CPU不断采样RXD端,当采样到负跳变时,启动一次接收。 在移位脉冲控制下,把接收的数据移入接收SBUF中,直到接收到数据第9位(即停止位)时,同时满足: RI=0 SM2=0或接收到的停止位为1 则把接收到的8位数据存入“接收SBUF”,把停止位送入RB8中,并使RI置1和发出串行口中断请求,通知CPU执行“读SBUF”指令,从SBUF中取出接收到的一个数据。 3. 方式2和方式3 方式2和方式3都是11位为一帧的UART方式1个起始位,9个数据位和一个停止位。第9位数据位既可作奇偶校验位也可作控制位,发送之前应先在SCON的TB8位中准备好。 方式3和方式2除波特率不同之外,其它的性能完全一样,两种工作方式的通信过程完全相同。 方式2的波特率只有fosc/32和fosc/64两种 而方式3的波特率是可变的,由用户根据需要在程序中设定,这一点与方式1相同。 (1)通信过程 发送过程是由执行 “写入SBUF”指令来启动的。由“写入SBUF”信号把8位数据装入SBUF,同时还把TB8装入发送移位寄存器的第9位。 当TI=0,CPU向发送器缓冲寄存器写入一个字节的数据后,发送电路自动在9位发送字符前后分别添加1位起始位和1位停止位
文档评论(0)