串行口通信原理及操作流程0001_第1页
串行口通信原理及操作流程0001_第2页
串行口通信原理及操作流程0001_第3页
串行口通信原理及操作流程0001_第4页
串行口通信原理及操作流程0001_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串行口通信原理及操作流程51 单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时 进行数据的发送和接收,也可以作为同步移位寄存器使 用。51 单片机的串行口主要由两个独立的串行数据缓冲 寄存器SBUF (发送缓冲寄存器和接收缓冲寄存器)和发 送控制器、接收控制器、输入移位寄存器及若干控制门 电路组成。51 单片机可以通过特殊功能寄存器SBUFR串行接收或串行发送寄存器进行访问,两个寄存器共用一个地 址99H,但在物理上是两个独立的寄存器,由指令操作 决定访问哪一个寄存器。执行写指令时访问串行发送寄 存器;执行读指令时,访问串行接收寄存器。(接收器具有双

2、缓冲结构,即在接收寄存器中读生前一个已接收到 的字节之前,便能接收第二个字节,如果第二个字节已 接收完毕,而第一个字节还没有读生,则将丢失其中一 个字节,编程时应引起注意。对于发送器,因为是由 cpu控制的,所以不需要考虑。与串行口紧密相关的一个特殊功能寄存器是串行口控制寄存器scon它用来设定串行口的工作方式、接收/发送控制以及状态标志等。串行口控制寄存器 SCON串行口控制寄存器 SCONt特殊功能寄存器中,字节地址为98H,可位寻址,单片机复位时 SCONtr部被清O位序号D7D6D5D4D3D2D1D0位符号SM0SM1SM2RENTB8RB8T1R1SM0,SM1为工作方式选择位。串

3、行口有四种工作方式,它们由SM0 SM1设定。其中方式一最为常用。SM2为多机通信控制位。REN为允许串行接收位。TB8 为方式2、3中方式数据的第九位。RB8为方式2、2中接收数据的第九位。TI 为发送中断标志位,在方式 0时,当串行发送第8 位数据结束时,或在其他方式,串行发送停止位的开始 时,由内部硬件使 TI置一,向CPU发生中断申请。在中 断服务程序中,必须使用软件将其清零,取消此中断中 请。RI为接收中断标志位。在方式 0时,当串行接收第8 位数据结束时,或在其他方式,串行接收停止位的中间 时,由内部硬件使 RI置一,向CPU发生中断申请。在中 断服务程序中,必须使用软件将其清零,

4、取消此中断中串口工作方式1简介(0、2、3以后再说),串行口 方式传送1帧数据共10位,其中一位起始位(0),八位 数据位(最低位在前,高位在后),一位停止位(1)。帧与帧之间可以有空闲,也可以无空闲。TXD (P3.1)位数据发送引脚,RXD (P3.0)为数据接收引脚。其传输波 特率是可变的,对于 51单片机,波特率由定时器 1的溢 由率决定。串行口方式1编程与实现当数据被写入SBUF寄存器后,单片机自动开始从起 始位发送数据,发送到停止位的开始时,由内部硬件使 TI置1,向CPU申请中断,接下来可在中断服务程序中做 相应的处理,也可选择不进入中断。用软件置REN为1时,接收器以所选择波特

5、率的16倍速率采样RXC8I脚电平,检测到 RXDSI脚输入电平发生 负跳变时,则说明起始位有效,将其移入输入移位寄存 器,并开始接收这一帧信息的其余位。接收过程中,数 据从移位寄存器右边移入,起始位移至输入移位寄存器 最左边时,控制电路进行最后一次移位。当 RI=0 ,且SM2=0(或接收到的停止位为 1时),将接收到的 9位数 据的前8位数据装入接收 SBUF第9位(停止位)进入 RB8,并置 RI=1,向CPU请求中断。在具体操作串口之前需要对单片机的一些与串口有 关的特殊功能寄存器进行初始化设置,主要是设置产生 波特率的定时器1、串行口控制和中断控制。具体步骤 如下:1.确定T1的工作

6、方式(编程 TMOIW存器)2.计算T1的初值,载入 TH1、TL13.启动T1 (编程TCO仲白TR1位)4.确定串行口工作方式(编程scorw存器)5.串行口工作在中断方式时,要进行中断设置(编程IE, IP)/*实现功能:RS232 通信(串口通信)*#include;#define uint unsigned int#define uchar unsigned charuchar flag;uchar date;void init()(TMOD=0X20;/ 定时器1工作方式2TH1=0xfd;/9600TH0=0xfd;/9600TR1=1;/启动定时器1REN=1;/ 允许串口接收SM0=0;/设定串口工作方式1SM1=1;/设定串口工作方式1EA=1; /开总中断ES=1;/ 开串口中断void main()(init();while(1)(if(flag=1)(ES=0; / 关闭串口中断P1=date;SBUF=date;while(!TI);/等待串行发送停止位的开始,TI=1 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论