栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C51单片机学习笔记之串口通信

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C51单片机学习笔记之串口通信

简介

串口通信就是单片机和pc之间的一种通信方式。

通信方式:并行,串行,同步,异步(最常用的)

传输方向:单工,半双工(不同时间),全双工

基本结构

相关寄存器

SCON串口控制寄存器(主要用方式1)

D7D6D5D4D3D2D1D0
符号SM0SM1SM2RENTB8RB8TIRI
多机通信控制位允许接收位是要发送的第9位数据位接收到的第9位数据位发送中断标志位接收中断标志位
主要用于方式2,3中1允许接收
0拒绝接收

TB8——在方式2和方式3中,TB8是要作为数据帧第9位被发送出去的,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址 

RB8——当单片机已经接收一帧数据帧时,会把数据帧中的第9位放到 RB8中。方式0不使用RB8,在方式2和方式3中,RB8为接收到的数据帧的第9位数据位。

TI——方式1、2、3中。当发送数据完毕,硬件会将其置1,当 TI 被置1,会向CPU发送中断请求。我们记得要在中断服务程序中把 IT 置回0

RI——当接受完一帧数据时,RI  由硬件置1,当RI 被置1,会向CPU请求中断。同样要在中断服务程序中把 RI 置回0。

SM0SM1工作方式功能波特率
00方式08位同步移位寄存器晶振频率 / 12
01方式110位UART可变
10方式211位晶振频率/32或晶振频率/64
11方式311位可变

PCON功率控制寄存器

D7D6D5D4D3D2D1D0
PCONSMOD

这个寄存器只有一个位SMOD,在方式1,2.,3时,波特率都与SMOD有关,当SMOD=1时,波特率会增加一倍。复位时,SMOD变回0。

SBUF寄存器:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。
当发送使用时,就采用SBUF=XXX;  (XXX为需要传送的数据)
当接收使用时,采用XXX=SBUF;
记得因为是串行的所以传输都是一位一位进行的。

波特率计算 

 

 代码部分
#include 
#include "delay.h"
#include "DigitalTube.h"
void init()
{
		SCON=0x50;//配置寄存器
		PCON=0;//波特率不加倍

		TMOD |=0x20;//定时器选择工作模式2
		TH1=TL1=0xfd;//波特率9600
   	EA=1;//中断打开
	  ES=1;//接受中断
		ET1=1;//定时器中断关闭
   	TR1=1;//定时器开关打开
}
void UART_SendByte() interrupt 4
{

	unsigned char date;	//定义一个数据
	delay();
	date = SBUF;//pc发送数据
	RI = 0;	//接收关闭
	print(date/10,1);//控制数码管
	print(date%10,2);
	SBUF = date;//pc接收数据
	while(!TI);//判断发送是否关闭
	TI = 0;//发送关闭
}
 结论

代码部分我只给了中断配置及串口通信的代码,其余大家自由发挥。本章重点是搞清楚串口通信的寄存器配置,波特率的计算,以及与之前中断、定时器相关知识相结合。——中断——定时器

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号