- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串行通讯实验报告
单片机实验报告(三) 实验名称: 姓名: 学号:班级:时间: 串行通信张昊 通信2班 南京理工大学紫金学院电光系 一、实验目的 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD、RXD口;3、了MAX232解芯片的作用。 二、实验原理 计算机与其外部设备之间进行数据交换称为通信。通信的基本方式可分为并行通信和串行通信两种。并行通信中数据至少有8路,可以同时将一个字节的8位二进制代码发送到对方。串行通信用两根传输线进行数据的传输,一次只能发送一位二进制。 串行通信技术根据传送的编码格式不同,可分为同步通信和异步通信两种方式: 1、同步方式:数据以数据块为单位传送。在开始传送前用同步字符来指示,并由时钟来实现发送端和接收端同步。 2、异步方式:数据时不连续传送的。以字符为单位进行传送。被传送字节分为:起始位、数据位、校验位和停止位,称为一帧。 常用格式: a、1bit起始位+8bit数据位+无校验位+1bit停止位b、1bit起始位+8bit数据位+1位偶校验位+1bit停止位串行通信技术根据数据流动方向分为三种方式: 1、单工通信:数据流动方向是固定的,数据只能由一方发送到另一方。 2、半双工通信:数据的流动方向是双向的,但一时刻,数据只能在一个方向流动。3、全双工通信:允许数据在两个方向流动,即通信双方的数据发送和接收是同时的。 串行口控制寄存器SCON的格式如下: D7D6D5D4D3D2D1D0 SM0、SM1:由软件置位或清零,用于选择串行口四种工作方式。 SM2:多机通信控制位。在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。在方式0时,SM2必须为0。 REN:允许串行接收控制位。若REN=0,则禁止接收;REN=1,则允许接收,该位由软件置位或复位。 TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。 RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。 TI:发送中断标志位。在方式0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。 RI:接收中断标志位。在方式0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间由内部硬件使RI置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。RI也可供查询使用。 电源控制寄存器PCON的格式如下: D7D6D5D4D3D2D1D0 PCON的最高位SMOD是串行口波特率系数控制位。SMOD=1时,波特率增大一倍。其余各位与串行口无关。 波特率设置: 串行口的4种工作方式对应着三种波特率模式。对于方式0,波特率是固定的,为fosc/12。 对于方式2,波特率由振荡频率fosc和SMOD()所决定。其对应公式为 波特率=2SMOD×fosc/64。当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。 对于方式1和方式3,波特率由定时器/计数器T1的溢出率和SMOD决定,即由下式确定: 波特率=2SMOD×定时器/计数器T1溢出率/32 三、实验内容 #include #defineucharunsignedcharuchara,flag;voiddelay(); voidinit()//串行口初始化函数:实现9600b/s的波特率,只发送不接收{ TMOD=0x20;//定时器1的方式2 TH1=0xfd;TL1=0xfd;//初值:0xfdPCON=0x00;//波特率不倍频TR1=1;//启动定时器1 SCON=0x50;//设置串行口为接收,REN=0TI=0;//发送标志位初始为0RI=1;//接收标志位初始化为0ES=1;EA=1;flag=0;} voidsend(uchardat)//发送函数:发送一个8位的数据{ SBUF=dat;//把发送的数据
文档评论(0)