用过stc12C5A60S2单片机的朋友都知道,该单片机有两个串口可用,看到官网的程序注释的也是比较多,所以自己写了个串口2使用的程序,由于代码相对简单,所以这里只罗列出了串口2的的初始化、发送和接收函数供大家参考。
程序包含了STC12C5A60S2.H的头文件,这个网上都有,大家懂的。
这个是初始化的函数,可以添加到程序中调用就可以了。这里是用了独立波特率发生器产生4800的波特率,晶振是24M,这个是用STC波特率计算机生成后添加了后面红字部分,大家如果用其他晶振或者波特率可以下个重新生成然后修改即可。
/*描述:
电脑串口显示程序
用Windows系统中的“超级终端”软件,将串口端设置 [ 4800,8,无,1,无 ]
*/
#include《STC12C5A60S2.H》 //单片机头文件
#include 《intrins.H》
/******自定义函数**************/
void UART_init (void); /**UART串口初始化函数**********/
void UART_T (unsigned char UART_data);/****************UART串口发送函数**************************/
void UART_TC (unsigned char *str);/*****UART串口发送字符串函数 */
/***********************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:
/**********************************************************************************************/
void main (void)
{
UART_init();
UART_T(0x30);
UART_TC(“操妈逼”);
while(1);
}
/*********************************************************************************************
函数名:UART串口初始化函数
调 用:UART_init();
参 数:无
返回值:无
结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
/**********************************************************************************************/
void UART_init (void)
{
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
ES = 1; //允许UART串口的中断
TMOD = 0x20; //定时器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
TH1 = 0xF3; //定时器初值高8位设置
TL1 = 0xF3; //定时器初值低8位设置
PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)
TR1 = 1; //定时器启动
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口发送函数
调 用:UART_T (?);
参 数:需要UART串口发送的数据(8位/1字节)
返回值:无
结 果:将参数中的数据发送给UART串口,确认发送完成后退出
备 注:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定义串口发送数据变量
SBUF = UART_data; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0; //令发送中断标志位为0(软件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口发送字符串函数
调 用:UART_TC (?);
参 数:需要UART串口发送的数据(8位/1字节)
返回值:无
结
果:向串口发送一个字符串,长度不限。
备 注:例:UART_TC(“d9887321$”); 此函数需要#include 《string.h》头文件支持。
/**********************************************************************************************/
void UART_TC (unsigned char *str)
{
while(*str != ‘\0’)
{
UART_T(*str);
*str=*str++; //无聊警告。。。
}
*str = 0;
}
评论
查看更多