STC12C5A60S2串口通信(使用独立波特率发生器)
快速导航
STC12已封装好的函数库
使用STC12C5A60S2做串口通信波特率初始化可以使用STC-ISP波特率计算器自动生成
本Demo使用STC12独立波特率发生器,晶振11.0592,波特率设置为9600,发送一个字符和一段字符串。并实现串口接收到数据自动回传。
#include <STC12C5A60S2.h>//串口初始化,晶振11.0592,波特率9600
void UartInit(void) //9600bps@11.0592MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1TBRT = 0xDC; //设定独立波特率发生器重装值AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器AUXR |= 0x10; //启动独立波特率发生器EA = 1;//开总中断ES = 1;//开串口中断
}//向串口发送一个字符
void putchar(char ch)
{SBUF = ch;while(!TI);TI = 0;
}//向串口发送一段字符串
void prints(char *s)
{while(*s != '\0')//发送字符串,直到遇到0才结束{SBUF = *s++;while(!TI);TI = 0;}
}void main()
{UartInit();putchar('x');prints("Hello World!");while(1);
}//串口中断处理函数
void uart_Interrupt() interrupt 4
{unsigned char UartData;//单字节串口数据if(RI){RI = 0;UartData = SBUF;SBUF = UartData;TI=0;//向PC返回接收的数据}
}
其他串口函数接口参考:
1、串口发送一段数组
/****************************************函数名称:void sendArray(uchar *s, uint len)*函数输入:*s 发送的数组指针,len数组长度*函数返回:无*函数说明:向串口发送一段数组***************************************/
void sendArray(uchar *s, uint len)
{uint i;for(i=0; i<len; i++){SBUF = *s++;while(!TI);TI = 0;}
}
2、使用printf和scanf函数
参考例程
经验分享,一定一定要在初始化的时候把TI=1,不然无法使用,这算是我学习stc单片机的一个小经验。
include <STC12C5A60S2.H>
#include <stdio.h>//串口初始化,晶振11.0592,波特率9600
void UartInit(void) //9600bps@11.0592MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1TBRT = 0xDC; //设定独立波特率发生器重装值AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器AUXR |= 0x10; //启动独立波特率发生器TI=1;
}void main()
{unsigned int i,j,k;UartInit();//printf("HelloWorld!\n");printf("---------------------------------\n");printf("请输入i,j,k的值,按回车结束:");scanf("%d%d%d",&i,&j,&k);printf("\n i=%d,j=%d,k=%d\n",i,j,k);printf("---------------------------------\n");while(1);
}
STC12C5A60S2串口通信(使用独立波特率发生器)相关推荐
- STC12单片机双串口共用独立波特率发生器发生波特率
#include <STC12C5A60S2.H>typedef unsigned char uchar ; typedef unsigned int uint ;uint Smog = ...
- STC11/10xx系列单片机独立波特率发生器设置
51的定时器本来就很不够用,用串口时再使用定时器1来产生波特率,那系统使用定时器就更加捉襟见肘了,STC11/10xx系列单片机内部自带的串口独立波特率发生器,使用它就可以将定时器1释放出来当定时器来 ...
- 单片机c语言波特率检测,基于MSP430系列微控制器串口通信时的波特率自动检测的实现...
通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主 ...
- STC12C5A60S2串口通信
STC12C5A60S2系列单片机有2个UART,每个串行口由 2个数据缓冲器. 1个移位寄存器. 1个串行控制寄存器 1个波特率发生器等组成. 每个串行口的数据缓冲器由2个互相独立的接收.发送缓冲器 ...
- 51单片机串口通信,及波特率计算
文章目录 串口基本认识 RS-232-C.RS-422与RS-485 关于串口的电平 串口通信 SCON SBUF:串行数据缓冲器 PCON IE 波特率计算 什么是波特率 实例计算 常用波特率及初值 ...
- UART RS-232 485通信 串口通信传输时间计算 波特率计算
波特率:是指串行端口每秒内可以传输的波特位数. 有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个 ...
- stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序
原标题:STC12C5A60S2 串口中断接收程序 #define UART0_BUF_LEN 32 int UART1_Recv_count; //接收计数 bit UART1_Overflow_F ...
- STC12C5A60S2单片机-双串口通信
STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同:特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器, ...
- 【51单片机快速入门指南】3.3:USART 串口通信
目录 快速使用 硬知识 串行口相关寄存器 串行口控制寄存器SCON和PCON 串行口数据缓冲寄存器SBUF 从机地址控制寄存器SADEN和SADDR 与串行口中断相关的寄存器IE和IPH.IP 串行口 ...
最新文章
- ISP算法高水平分析(上)
- 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别
- JAVA技术周刊第一期:关于JVM你了解多少?看这篇文章就够了!
- 今天这个日子,大多数人都不知道…
- 课时77.序选择器(掌握)
- apache cgi 模块安装
- 作者:余超(1993-),男,作者:华东政法大学民商法学硕士生,主要研究方向为民商法。...
- Linxu:磁盘分区
- 吴恩达《机器学习训练秘籍》中文版58章节完整开源
- Altium AD20焊盘样式、热焊盘与反焊盘与直接连接
- 使用 MobaXterm 连接矩池云 GPU服务器
- 俄国牛人写的开源爬虫xNet
- 相机模型与标定(二)--相机模型
- php网页文件在,php是网页文件吗
- Hibernate(2)
- 红外图像和热成像图像
- 5S管理活动的实施和运行方案
- 实验二 概念模型ER图
- 李彦宏清华经管学院演讲:11年创业心路历程与人生感悟
- autojs查找轮廓相似的图片
热门文章
- 蓝叠模拟器查看Android版本,BlueStacks蓝叠版本信息在哪看蓝叠模拟器版本信息查看方法...
- 1038	01背包动态规划
- Matlab三相全桥逆变电路的仿真
- 单相全桥逆变器仿真,simulink,matlab
- php ECShop form,在ecshop中添加页面并且实现后台管理
- 简易PC基准测试丨PerformanceTest功能简介
- com.alibaba.fastjson.JSONException: create instanc
- 无刷直流电动机矢量控制(三)——位置检测和换相
- ORACLE updata是提示违反唯一约束条件
- Multisim基础 发光二极管 添加元件的位置