STC15系列的UART串口基础

11 篇文章 6 订阅
订阅专栏

现在对串口的理解很浅,仅仅停留在会用的地步……
梳理一下大致用法

首先是串口的控制寄存器在这里插入图片描述
可以看到该寄存器是可以进行位寻址的
我们主要操作的有SM0、SM1(控制串口的工作方式)
在这里插入图片描述
一般都采用方式1,并需要定时器产生波特率(baud)
若采用定时器1的模式2(8位自动重装),且SMOD为0,且12分频
则TH1=TL1=256-FOSC/12/32
在这里插入图片描述
这一位初始化的时候设1就行在这里插入图片描述
关于TI和RI会在代码中用到
TI用来控制主机向单片机发送数据,发送成功后清零
RI则在单片机接收到数据进入中断程序中清零
在这里插入图片描述
PCON寄存器似乎只跟波特率有关?
给出串口初始化函数

//串口初始化函数
void Uart_Init()
{
	TMOD=0x20;			//定时器1确定工作方式2(8位自动重装)
	TH1=0xfd;			//装入初值,高八位低八位相同,根据波特率计算,此时为9600
	TL1=0xfd;
	TR1=1;
	
	SCON=0x50;			//确定工作方式1,并打开接收使能REN
	AUXR=0x00;			//12分频
	
	EA=1;
	ES=1;
	
}

在这里插入图片描述
SBUF其实有两个,但物理地址相同,为单片机内部的缓冲寄存器
写代码时应注意顺序

//数据发送(单片机发给主机)
void SentByte(uchar x)
{
	SBUF=x;
	while(TI==0);
	TI=0;
}
//串口中断服务函数(单片机从主机接收)
void Uart_Service() interrupt 4
{
	if(RI==1)
	{
		RI=0;
		urdat=SBUF;			//数据接收
		SentByte(urdat+1);	//将接受到的数据+1后发给主机
	}
}

主机向单片机发送数据通过串口助手……

Reference:
STC15系列单片机用户手册
http://bbs.21ic.com/icview-2478488-1-1.html

【STC单片机】在不同编译环境下波特率位时间计算差异
perseverance51博客
02-02 935
【STC单片机】在不同编译环境下波特率位时间计算差异
STC15串口使用
BHRSFURGS的博客
08-24 1万+
一般我们玩单片机都要研究串口串口一开始最头痛的无非就是波特率和中断波特率初始化可以用STC-ISP生成代码,比如STC15W408AS这一款单片机,只有串口0和串口2,需要波特率9600,则可以在STC-ISP中输入如下参数点击生成C代码,即可自动生成如下代码void UartInit(void) //9600 { SCON = 0x50; //sfr SCON =
STC单片机UART功能函数.zip
03-08
STC单片机的串口UART1,2,3,4的配置。几乎适用于所有STC单片机,4个串口可同时配置使用,函数由结构体封装打包好,非常方便。 --------------------------STC_UART函数目录-------------------------- //注意:若主循环正在打印突然跳到中断中恰好又掉用printf1,2,3,4,恢复后会使主循环中的打印错误 //printf与printf1,2,3,4, 相互独立,可同时用且互不影响 //自定义printf1,2,3,4打印函数,打印字符最长限制 #define CMD_BUFFER_LEN 50 //#define UART_Printfx //注释则不使用重定向打印函数 //-------------------------------------------------------------------------------- //UART1,2,3,4初始化 void UART1_Init(u32 BaudRate); void UART2_Init(u32 BaudRate); void UART3_Init(u32 BaudRate); void UART4_Init(u32 BaudRate); //UART1,2,3,4串口打印函数 void printf1 (char *fmt, ...); //变参函数 void printf2 (char *fmt, ...); void printf3 (char *fmt, ...); void printf4 (char *fmt, ...); //UART1,2,3,4发送单个字符 void UART1_SendByte(char dat); void UART2_SendByte(char dat); void UART3_SendByte(char dat); void UART4_SendByte(char dat); //UART1,2,3,4发送字符串 void UART1_SendStr(char *TI_Dat); void UART2_SendStr(char *TI_Dat); void UART3_SendStr(char *TI_Dat); void UART4_SendStr(char *TI_Dat); //UART1,2,3,4接收Leng个字符 void UART1_ReceiveStr(u8 Leng,u8 *dat); void UART2_ReceiveStr(u8 Leng,u8 *dat); void UART3_ReceiveStr(u8 Leng,u8 *dat); void UART4_ReceiveStr(u8 Leng,u8 *dat); //获取期待值 NULL 表示无效的 bit UART_extract(u8 *Puf_0,u8 *Puf_1,u32 time); //从串口中获取所期待的数据 NULL 表示无效的 //计算指针所指数组元素个数 //警告; count(0);返回的是2原因不明 unsigned char count(u8 *p); void UART_Send_Str(char *s); // 发送字符串 void UART_Send_Num(unsigned long dat); // 发送数值 void UART_Send_StrNum(char *inf,unsigned long dat); // 发送字符串+数值 void UART_Send_Hex(unsigned int hex); // 发送16进制(整数范围) void UART_Send_binary(unsigned char dat); // 发送2进制 void UART_Send_Enter(); void UART_Send_Byte(unsigned char dat); //UART初始化 void UART_Init(u8 UARTx, UART_InitTypeDef *UART_InitStructure);
UART.rar_STC_STC 串口_STC 串口收发_stc UART_stc 串口
09-20
STC单片机入门程序:串口收发实验c语言程序
STC-15-UART2.zip_STC_stc 15 串口
07-15
STC 15f系列单片机uart2 串口 运用,已调试成功,可直接调用
stc 经典波特率计算器
04-26
51波特率计算器,支持所有stc单片机,AT单片机计算晶振频率,波特率发生器,界面虽然平淡但可以比一般计算器找到更合理的可用波特率 ,波特率
STC-UART.rar_stc UART_uart stc
09-23
单片机串口程序,比较全了,根据硬件修改即可
STC15F2K60S2串口通信/波特率设置/通信初始化/发送(接收)一个数据教程
Star19180325的博客
12-05 1万+
#include <stc15f2k60s2.h> #define uchar unsigned char #define uint unsigned int uchar Flag,Data,i; uchar code table[]="I get it!"; void init() { TMOD=0x20;//T1定时器的方式2工作:8位自动重装定时器 TH1=0xfd; T...
STC单片机波特率初值计算以及通用串口配置程序
perseverance51博客
04-11 1497
STC单片机波特率初值计算以及通用串口配置程序
STC15单片机——UART1
weixin_52853526的博客
06-10 3342
本文章记录了STC15单片机的UART1使用时所涉及的寄存器以及部分寄存器的功能介绍,以方便读者使用。
STC8H复盘计划第2步:UART
m0_61905716的博客
10-18 1679
传统的8051单片机可以用位寻址的方式很容易找到对应寄存器中的这两位,而高级51单片机的多出的串口则要通过对寄存器的位操作来查询其他串口的这两个标志位。STC8H有四个UARTUART意为通用串行通信接口,是一种全双工异步的通信方式,全双工代表数据能同时在两个方向上进行传输,异步代表没有公共的时钟线,UART有两根数据线(TXD和RXD),在连接方式上将互为主从的两个设备TXD和RXD交叉连接,两个设备应共地。TMOD:设置定时器为16位自动重装载模式,设置定时器用作内部定时,设置定时器的gate。
stc15系列单片机 串口通信
m0_60724213的博客
12-15 548
【代码】stc15系列单片机 串口通信。
UART3_STC15.rar_STC15串口_stc15_stc15 uart3
07-13
STC15W32S4单片机串行通讯串口端口3标准通信程序
STC-15-UART1.zip_15串口_stc 15 串口_stc 15f
09-14
STC 15f系列单片机uart1 串口 运用,已调试成功,可直接调用
STC12C5A60S2串口通信
XIAXIA
04-07 1769
每个串行口的数据缓冲器由2个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可以共用一个地址码。两个串行口都有4种工作方式,其中两种的波特率是可变的,另两种是固定的,以供不同应用场合选用。串行口1的两个缓冲器共用的地址码是99H;串行口2的两个缓冲器共用的地址码是9BH。串行口1的两个缓冲器统称SBUF;串行口2的两个缓冲器共用的地址码是S2BUF。使用PCA来做帧超时定时器,从而实现不定长度的串口数据接收。
UART、RS-232、RS-422、RS-485
李肖遥的专栏
03-05 1366
通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速3...
STC15系列单片机串口2的使用
HCXY_FLY_JQ的博客
07-07 3105
STC15系列单片机串口2的使用 一下是关于串口2的一些寄存器。具体请查看STC15系列单片机指南。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxqzB9Vf-1594111686700)(https://im在这里插入图片描述g-blog.csdnimg.cn/20200707164759940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,te
STC Uart1,Uart2 关联 printf 函数
随手记
09-22 3747
stc15f 系列 关联使用printf函数
利用AT24C02进行数据存储
热门推荐
朱坚强的博客
03-16 3万+
简介 24C02是一个2K Bit的串行EEPROM存储器(掉电不丢失),内部含有256个字节。在24C02里面有一个8字节的页写缓冲器。 来看引脚: A0,A1,A2:硬件地址引脚 WP:写保护引脚,接高电平只读,接地允许读和写 SCL和SDA:IIC总线 可以看到对于4K及以上,硬件地址管脚不一定存在,若不存在就写0,所以一条总线上可挂的该类芯片也减少了。 附上开发板上芯片的连接方式 向...
stc89C52uart串口通道3通信代码
最新发布
06-03
以下是STC89C52单片机使用UART串口通信的代码示例,其中使用了UART3通道: ```c #include <STC89C5xRC.H> #define FOSC 22118400L #define BAUD 9600 void InitUART3() { S3CON = 0x50; // UART3模式,8位数据位,允许接收 S3RELH = (65536 - FOSC / 4 / BAUD) / 256; S3RELL = (65536 - FOSC / 4 / BAUD) % 256; S3CON |= 0x40; // 允许UART3通信 } void SendUART3(unsigned char dat) { S3BUF = dat; while (!(S3CON & 0x02)); // 等待发送完成 S3CON &= ~0x02; } unsigned char ReceiveUART3() { while (!(S3CON & 0x01)); // 等待接收完成 S3CON &= ~0x01; return S3BUF; } void main() { InitUART3(); while (1) { SendUART3('H'); SendUART3('e'); SendUART3('l'); SendUART3('l'); SendUART3('o'); SendUART3('!'); SendUART3('\r'); // 发送回车 SendUART3('\n'); // 发送换行 DelayMs(1000); } } ``` 该代码初始化了UART3通道,设置了波特率为9600,并提供了发送和接收函数。在`main()`函数中,程序会每隔1秒钟发送一次“Hello!”字符串,并在字符串末尾添加回车和换行符。 注意,在使用UART通信时,需要设置发送和接收的数据位数、停止位数、奇偶校验等参数,根据实际需求进行配置。此外,串口通信需要确保发送和接收的波特率一致,否则会出现数据传输错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 利用AT24C02进行数据存储 38646
  • 数字信号处理——DFT的一些理解 22515
  • 【实验2】——模糊函数 21383
  • DS1302时钟芯片的使用 20062
  • 【线性代数】——投影矩阵 17794

分类专栏

  • 数学 1篇
  • 线性代数 2篇
  • 物理
  • 声学理论 11篇
  • 水声仿真 1篇
  • 算法
  • 数据结构与算法分析 8篇
  • 数值计算方法 7篇
  • 控制算法 2篇
  • 信号 1篇
  • 信号理论 1篇
  • 数字图像处理 11篇
  • 数字信号处理 3篇
  • 声呐信号处理 8篇
  • 微控制器
  • 蓝桥杯——单片机 11篇
  • 微型计算机技术 17篇
  • STM32学习系列 11篇
  • 汇编 1篇
  • OpenMV 2篇
  • 上位机开发 1篇
  • MATLAB 2篇
  • FPGA 2篇
  • 集体智慧编程(python实现) 8篇
  • 计算机网络 8篇
  • 随记 2篇

最新评论

  • 【实验6】——时域波束形成与频域波束形成

    lixin_fortunate: 你好,请教下“x(b)=sf(b,f)*exp(-1j*2*pi*f*fs/8192*tt(b));”,这部分2*pi*f*tt(b)已经是相位了,为什么还*fs/8192?

  • 【实验2】——模糊函数

    insist是秘诀: 您好,请问您的代码就是严格按照模糊函数的定义编写的是吗?

  • 数字信号处理——巴特沃斯滤波器设计

    小莫同学Std: 请教一下这个与畸变校正的这个系数都是2*fs吗

  • 【波导】——理解群速度和相速度

    1057777777: 大佬,求求程序kki77105@126.com

  • 【波导】——理解群速度和相速度

    鲲啊鲲啊鲲: 大佬求求程序表情包邮箱3402332387@qq.com

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【FPGA】——UART串口通信
  • 【线性代数】——投影矩阵
  • 【声学基础】概述——吸收
2021年1篇
2020年25篇
2019年97篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源www.cfmmc.com五行缺火起名用的字ghostwin7下载骨头店起名第一庶女杭州移动营业厅总有一天会长大麻花加盟武汉蓝天歌剧院女宝姓程起名猪宝宝起名适合用什么字来酱香型白酒起名字o记三合会档案八佰演员韩国女装店起名大全唐氏起名大全男孩名字吗民间故事三百篇节日网男孩姓涂起什么名字好易语言破解版起个有深意的读书会名字起名字大全2013生源地护肤品取名起名大全姓张的猪起名大全郑氏女孩起名字有哪些李姓四字男孩起名小孩起名姓孙前程无忧招聘网站墙衣效果图淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化