用过stc12C5A60S2单片机的朋友都知道,该单片机有两个串口可用,看到官网的程序注释的也是比较多,所以自己写了个串口2使用的程序,由于代码相对简单,所以这里只罗列出了串口2的的初始化、发送和接收函数供大家参考。
程序包含了STC12C5A60S2.H的头文件,这个网上都有,大家懂的。
这个是初始化的函数,可以添加到程序中调用就可以了。这里是用了独立波特率发生器产生4800的波特率,晶振是24M,这个是用STC波特率计算机生成后添加了后面红字部分,大家如果用其他晶振或者波特率可以下个重新生成然后修改即可。
void uart_2_Init(void)//4800bps@24MHz
{
AUXR &= 0xf7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
BRT = 0x64; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x10; //启动独立波特率发生器
IE2 = 0x01;
EA = 1;
}
下面就是发送程序代码,不多说了,和串口1使用其实差不多,大家可以看看
/**
* This is the send data methond of serial port two.
*/
void uartSendByte_2(unsigned char recTemp)
{
unsigned char temp=0;
IE2 = 0X00;
S2CON = S2CON&0XFD; //Clear TI flag
S2BUF =recTemp;
do{
temp = S2CON;
temp = temp&0x02;
}while(temp == 0); //Send data until temp`s value is true;
S2CON=S2CON&0XFD; //Clear TI flag after send is over..
IE2=0X01; //Enable uart 2 interrupt.
}
好了,最后一部分就是接收中断了,串口2使用的中断号是8,程序大家看下述代码,如果要获取接收到的数据只需要读取S2BUF就可以了,例如将接收到的数据存到变量c中只需在定义c,然后在红字部分添加c = S2BUF;代码即可。其他其实也和串口1差不多,亲,你懂的。
/**
*This is the receive data methond of serial port two.
*/
void uartReceive_2(void) interrupt 8
{
unsigned char _RI2 = 0;
_RI2 = S2CON;
_RI2 = _RI2&0X01;
if(_RI2) {
S2CON = S2CON&0XFE;
//Add code here!
}
else {
S2CON=S2CON&0XFD; //S2TI=0
}
}
关键字:STC 12C5A60S2 串口 通信
引用地址:
STC 12C5A60S2串口2通信主要代码示例
推荐阅读最新更新时间:2024-03-16 16:06
STC单片机8个LED闪烁程序
ORG 000H ;起始地址 START: ;入口标号 MOV R0,#5 ;设置5次计数 LP: ;入口标号 MOV P1,#00H;向P1口载入低电平(LED共阳极) CALL DE ;调入延时(我延时写得简单,就用DE表示) MOV P1,#0FFH;向P1口载入高电平 CALL DE ;调入延时(如果大家看到,多多支持我哈-蓝色梦幻) DJNZ R0,LP ;如果R0不为零,继续执行LP
[单片机]
基于AT89C51单片机无线收发控制的交通信号灯模型
引言 随着我国经济的高速发展,人们对私家车、公交车的需求越来越大。相应地,我国进入WTO以后,我国经济贸易与世界接轨,汽车业关税大大降低,使很多人都能负担得起,买私家车不再是梦想。但是,私家车、公交车的大增无疑会对我国交通系统带来沉重的压力。放眼现在的中国,如广州、香港、上海等大都市,无不受到交通堵塞的困扰。中国要发展,交通事业决不能停步不前。有及于此,我国交通管制系统应当以人性化、智能化为目的,作出相应的改善。本论文正是以此为出发点,对单片机控制的交通信号灯模型作了较详尽的介绍。 单片机无线收发控制的交通信号灯模型可以分为电源电路、单片机主控电路、无线收发控制电路和显示电路四部分组成,组成电路如图1: 由于
[单片机]
51单片机串行通信奇偶校验的设置方法
通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。 有时为了提高准确度,需要增加一个 奇 校验位或者 偶 校验位。 对于高级语言的做法是很简单的,只要把格式命令 8-n-1 ,改为 8-P-1 或 8-O-1 即可。 串行口在带有校验位的通信方式中,是先发送8位数据,然后再发送校验位。 51单片机也可以按照带有校验位的方式进行串行通信,这在51单片机中称为9位数据方式。 51单片机中有两个位,分别称为TB8和RB8,它们在 无校验 的时候,并没有用处。 当51单片机用9位数据方式进行串行通信的时候,TB8和RB8的作用如下: 51单片机在发送的时候,先发送8位数据,然后发送TB8中的内容; 51单片机在接收
[单片机]
基于STC89C52单片机的数字电压表
一、设计题目 基于STC89C52的简易数字电压表的设计。 二、设计内容与要求 用STC89C52单片机和ADC0809组成一个数字电压表,要求能够测量0~5V的直流电压值,并用四位数码管显示,并要求所用元器件最少。 三、设计目的意义 1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。 2.通过数字电压表的设计系统掌握51单片机的应用。掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入EPROM并进行调试等。 四、系统硬件电路图 4.1 系统原理框图 选择STC89
[单片机]
UART0串口编程(一):通信协议设计;RS232标准
嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段。现在由于各类CPU均集成了UART部件。本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。 1. 通信协议设计 在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信帧”。通信协议设计就是帧结构设计。在一帧内容中,通常包括以下部分。 (1)起始码:由一个或若干个包含特定内容的字节,表示一个通信帧的开始。起始码的内容必须与通信数据内容有明显区别(不能在通信数据里出现与起始码相同的内容)。当通信帧的总长度比较短,信道质量比较高时,为了提高效率,可
[单片机]
通信系统中二次电源电路的滤波保护电路及缓启电路原理
本文主要论述了二次电源系统中-48V电路经DC/DC变换3.3V模块中的滤波、保护电路,以及在采用电源热备份集中供电系统中,拔插采用3.3V电源的单板时抑止浪涌电流的电源缓启电路。 引言 现代集成电路工艺已进入亚微米阶段,数字信号的上升/下降时间普遍为亚纳秒量级,这使高速数字系统的设计面临巨大挑战。晶体管尺寸越来越小,使得其工作电压越来越低,同时时钟频率不断上升,微处理器(CPU)和各种专用芯片(ASIC)集成的功能越来越多,其消耗的功率也越来越大,这对电源系统的稳定性和可靠性提出了更高的要求。 在通信系统设备中,电源的设计通常分一次电源和二次电源两部分,一次电源系统的输入是50Hz交流电,电压根据国家不同分220V和
[电源管理]
STC8PROG - Linux下的 STC8G STC8H 烧录工具
动机 在Linux下用 VSCode + PlatformIO 做开发, 因为VSCode的界面字体代码提示, 以及自定义的类JetBrain风格快捷键, 开发体验非常好. 在这个环境下, 有两个基础工具链必不可少, 一个是SDCC, 另一个是stcgal. 前者是MCS-51的编译工具, 后者是用于STC系列MCU的烧录工具. 在前一阵开始使用STC8后, stcgal这个工具链掉链子了, 无法烧录STC8系列的芯片. 进一步了解后发现的几个问题: PlatformIO 的 MCS-51 Platform 停止更新 PlatformIO 项目是活跃的, 但是这个平台模块子项目处于停滞状态, 项目地址 platformio/p
[单片机]
一种新的短波跳频通信网位同步方法及其实现
跳频通信是一种载频按照一定规律变化的多频率移频键控,具有抗干扰性强、保密性好、频带利用率高的特点,易于兼容,便于构成多种通信网。正是由于这些特点,跳频通信系统在现代军事和交通运输通信中得到了广泛的应用。国外近几年推出了大量跳频电台的产品,如美国HAKRIS公司的中速跳频电台RF-5010、美国Rockwell公司的SINGARS-U超快速跳频电台等。这些电台均采用微处理机控制,功能齐全,轻便灵活,操作简单。 利用跳频图案的良好正交性和随机性,可以在一个宽的频带内容纳多个跳频通信系统同时工作,将多个电台组成通信网络,完成专向通信或网络通信,达到频谱资源共享的目的,从
[工业控制]