串行口通信原理及操作流程

上传人:m**** 文档编号:426443348 上传时间:2024-02-04 格式:DOCX 页数:8 大小:24.59KB
返回 下载 相关 举报
串行口通信原理及操作流程_第1页
第1页 / 共8页
串行口通信原理及操作流程_第2页
第2页 / 共8页
串行口通信原理及操作流程_第3页
第3页 / 共8页
串行口通信原理及操作流程_第4页
第4页 / 共8页
串行口通信原理及操作流程_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《串行口通信原理及操作流程》由会员分享,可在线阅读,更多相关《串行口通信原理及操作流程(8页珍藏版)》请在金锄头文库上搜索。

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

2、, 即在接收寄存器中读出前一个已接收到的字节之前,便能接收第二个字节,如果第二个字节已接收完毕,而第一个字节还没有读出, 则将丢失其中一个字节, 编程时应引起注意。对于发送器,因为是由 cpu 控制的,所以不需要考虑。与串行口紧密相关的一个特殊功能寄存器是串行口控制寄存器scon它用来设定串行口白工作方式、接收 / 发送控制以及状态标志等。串行口控制寄存器ScON串行口控制寄存器 SCONt特殊功能寄存器中,字节 地址为98H,可位寻址,单片机复位时 SCOWr部被清零。位序号D7D6D5D4D3D2D1D0位符号SM0SM1SM2RENRB8T1R1SM0,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申请中断,接下来可在中断服务程序中做 相应的处理,也可选择不进入中

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

6、和中断控制。 具体步骤如下:确定T1的工作方式(编程 TMOIW存器)2.计算 T1 的初值,载入 TH1、 TL13.启动T1 (编程TCONF白TR1位)4.确定串行口工作方式(编程SCON?存器)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;,TI=1 , 并SBUF=date;while(!TI);/ 等待串行发送停止位的开始向CPU发送中断请求TI=0;/ 取消此次中断ES=1; / 开串口中断 flag=0;void time1() interrupt 4RI=0;/ 取消中断申请 date=SBUF;flag=1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号