快速导航
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串口通信(使用独立波特率发生器)相关推荐

  1. STC12单片机双串口共用独立波特率发生器发生波特率

    #include <STC12C5A60S2.H>typedef unsigned char uchar ; typedef unsigned int uint ;uint Smog = ...

  2. STC11/10xx系列单片机独立波特率发生器设置

    51的定时器本来就很不够用,用串口时再使用定时器1来产生波特率,那系统使用定时器就更加捉襟见肘了,STC11/10xx系列单片机内部自带的串口独立波特率发生器,使用它就可以将定时器1释放出来当定时器来 ...

  3. 单片机c语言波特率检测,基于MSP430系列微控制器串口通信时的波特率自动检测的实现...

    通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主 ...

  4. STC12C5A60S2串口通信

    STC12C5A60S2系列单片机有2个UART,每个串行口由 2个数据缓冲器. 1个移位寄存器. 1个串行控制寄存器 1个波特率发生器等组成. 每个串行口的数据缓冲器由2个互相独立的接收.发送缓冲器 ...

  5. 51单片机串口通信,及波特率计算

    文章目录 串口基本认识 RS-232-C.RS-422与RS-485 关于串口的电平 串口通信 SCON SBUF:串行数据缓冲器 PCON IE 波特率计算 什么是波特率 实例计算 常用波特率及初值 ...

  6. UART RS-232 485通信 串口通信传输时间计算 波特率计算

    波特率:是指串行端口每秒内可以传输的波特位数. 有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个 ...

  7. stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序

    原标题:STC12C5A60S2 串口中断接收程序 #define UART0_BUF_LEN 32 int UART1_Recv_count; //接收计数 bit UART1_Overflow_F ...

  8. STC12C5A60S2单片机-双串口通信

    STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同:特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器, ...

  9. 【51单片机快速入门指南】3.3:USART 串口通信

    目录 快速使用 硬知识 串行口相关寄存器 串行口控制寄存器SCON和PCON 串行口数据缓冲寄存器SBUF 从机地址控制寄存器SADEN和SADDR 与串行口中断相关的寄存器IE和IPH.IP 串行口 ...

最新文章

  1. ISP算法高水平分析(上)
  2. 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别
  3. JAVA技术周刊第一期:关于JVM你了解多少?看这篇文章就够了!
  4. 今天这个日子,大多数人都不知道…
  5. 课时77.序选择器(掌握)
  6. apache cgi 模块安装
  7. 作者:余超(1993-),男,作者:华东政法大学民商法学硕士生,主要研究方向为民商法。...
  8. Linxu:磁盘分区
  9. 吴恩达《机器学习训练秘籍》中文版58章节完整开源
  10. Altium AD20焊盘样式、热焊盘与反焊盘与直接连接
  11. 使用 MobaXterm 连接矩池云 GPU服务器
  12. 俄国牛人写的开源爬虫xNet
  13. 相机模型与标定(二)--相机模型
  14. php网页文件在,php是网页文件吗
  15. Hibernate(2)
  16. 红外图像和热成像图像
  17. 5S管理活动的实施和运行方案
  18. 实验二 概念模型ER图
  19. 李彦宏清华经管学院演讲:11年创业心路历程与人生感悟
  20. autojs查找轮廓相似的图片

热门文章

  1. 蓝叠模拟器查看Android版本,BlueStacks蓝叠版本信息在哪看蓝叠模拟器版本信息查看方法...
  2. 1038 01背包动态规划
  3. Matlab三相全桥逆变电路的仿真
  4. 单相全桥逆变器仿真,simulink,matlab
  5. php ECShop form,在ecshop中添加页面并且实现后台管理
  6. 简易PC基准测试丨PerformanceTest功能简介
  7. com.alibaba.fastjson.JSONException: create instanc
  8. 无刷直流电动机矢量控制(三)——位置检测和换相
  9. ORACLE updata是提示违反唯一约束条件
  10. Multisim基础 发光二极管 添加元件的位置