第7章-单片机C语言编程串行口通讯.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.3.1 串行口方式0 发送电路 接收电路 7.3.2 串行口方式1 方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。 收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。 7.3.3 串行口方式2和方式3 串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,不同的只是特波率)。 每帧11位:即1位起始位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位。 发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8; 接收时,第9数据位进入SCON的RB8。 7.4 串行口应用举例 主要内容 7.4.1 同步方式应用 7.4.2 异步方式应用 7.4.1 同步方式应用 MSC-51单片机的串行口在方式0时,以同步方式操作。外接串入/并出或并入/串出器件,可实现I/O口的扩展。 例7-2 用89C52串行口外接164串入/并出移位寄存器扩展8位并行输出口,外接165并入/串出移位寄存器扩展8位并行输入口。8位并行输出口的每位都接一个发光二极管,要求从8位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。如图7-13所示。 7.4.1 同步方式应用 图7-13 方式0扩展输入输出电路 解:数据的输入输出通过RXD接收和发送,移位时钟通过TXD送出,74HC164用于串/并转换,74HC165用于并/串转换。 C语言程序清单: #includereg52.h sbit P1_0=P1^0; sbit P1_1=P1^1; unsigned char data1; void main() { SCON=0x10; //串行口方式0,允许接收 ES=1; EA=1; //允许串行口中断 7.4.1 同步方式应用 P1_0=0; //关闭并行输出 P1_1=1; //并行置入数据 P1_1=0; //开始串行移位 SBUF=0; //送入串行数据 while(1); //等待中断 } void s_srv() interrupt 4 //中断服务程序 { if(TI) //发送中断 { TI=0; P1_0=1; //打开并行输出 } 7.4.1 同步方式应用 else //接收中断 { RI=0; data1=SBUF; //读取接收的数据 P1_0=0; //关闭并行输出 SBUF=~data1; //送入串行数据 P1_1=1; //为接收下一次 P1_1=0; //数据做准备 } } 7.4.1 同步方式应用 7.4.2 异步方式应用 串行口方式1与方式3很近似,波特率设置一样,不同之处在于方式3比方式1多了一个数据附加位。 方式2与方式3基本一样(只是波特率设置不同),接收/发送11位信息:开始为1位起始位(0),中间8位数据位.数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式1多了一位程控位。 定时器T1产生的常用波特率 例7-3 将片内RAM 50H~5FH中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.059 2MHz,波特率为2 400b/s,编制串行口方式3的发送程序。 解:用TB8作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,发送采用中断方式。 7.4.2 异步方式应用 C语言程序清单: #includereg52.h unsigned char i=0; unsigned char array[16] _at_ 0x50; //发送缓冲区 void main() { SCON=0xc0; //串行口初始化 TMOD=0x20; //定时器初始化 TH1=0xf4; TL1=0xf4; TR1=1; ES=1; EA=1; //中断初始化 ACC=array[i]; //发送第一个数据送 TB8=P; //累加器,目的取P位 SBUF=ACC; //发送一个数据 while(1); //等待中断 } 7.4.2 异步方式应用 P(PSW.0)奇偶标志位: ? P=1,A中“1”的个数为奇数 ?P

文档评论(0)

喵咪147 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档