/*******************************************************
程序功能:串口模块测试
开发环境:Keil4
硬件环境:CEPARK多功能开发学习板/实验箱(2013版),STC12C5A60S2,12M晶振
接线说明:单片机P31接底板JP8的TX1,单片机P30接底板JP8的RX1。
串口线接DB1串口母座。
跳线说明:无
实验现象:打开串口助手,波特率为9600.字符方式显示。
按下核心板复位按键,串口助手显示:welcome to china.
*******************************************************/
#include "STC12C5A60S2.h"
void UART_Init(void);
void UART_Send_Byte(unsigned char ucData);
void UART_Send_Str(char *pStr);
void UART_Send_Enter(void);
void main(void)
{
UART_Init();
UART_Send_Byte(11);
UART_Send_Str("welcome to china.");
UART_Send_Enter();
while(1);
}
//12MHZ 9600波特率,定时器1T方式,串口1,波特率倍数开启
void UART_Init(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xB2; //设定定时初值
TH1 = 0xB2; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/**************************************************************************
- 功能描述:51单片机的串口发送字节的函数
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:ucData:要发送的一个字节
- 返回说明:无
- 注:发送一个字节,是串口发送的基础操作
**************************************************************************/
void UART_Send_Byte(unsigned char ucData)
{
TI = 0;
SBUF = ucData;
while(!TI);
TI = 0;
}
/**************************************************************************
- 功能描述:51单片机的串口发送0d 0a ,即回车换行
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:无
- 返回说明:无
- 注:此函数就是发送0d 0a这两个字节,在“超级终端”上会有回车换行的效果
**************************************************************************/
void UART_Send_Enter()
{
UART_Send_Byte(0x0d);
UART_Send_Byte(0x0a);
}
/**************************************************************************
- 功能描述:51单片机的串口发送字符串
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:s:指向字符串的指针
- 返回说明:无
- 注:发送完一条字符串,回车
**************************************************************************/
void UART_Send_Str(char *pStr)
{
while(*pStr != '\0')
{
UART_Send_Byte(*pStr++);
}
UART_Send_Enter();
}
程序功能:串口模块测试
开发环境:Keil4
硬件环境:CEPARK多功能开发学习板/实验箱(2013版),STC12C5A60S2,12M晶振
接线说明:单片机P31接底板JP8的TX1,单片机P30接底板JP8的RX1。
串口线接DB1串口母座。
跳线说明:无
实验现象:打开串口助手,波特率为9600.字符方式显示。
按下核心板复位按键,串口助手显示:welcome to china.
*******************************************************/
#include "STC12C5A60S2.h"
void UART_Init(void);
void UART_Send_Byte(unsigned char ucData);
void UART_Send_Str(char *pStr);
void UART_Send_Enter(void);
void main(void)
{
UART_Init();
UART_Send_Byte(11);
UART_Send_Str("welcome to china.");
UART_Send_Enter();
while(1);
}
//12MHZ 9600波特率,定时器1T方式,串口1,波特率倍数开启
void UART_Init(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xB2; //设定定时初值
TH1 = 0xB2; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/**************************************************************************
- 功能描述:51单片机的串口发送字节的函数
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:ucData:要发送的一个字节
- 返回说明:无
- 注:发送一个字节,是串口发送的基础操作
**************************************************************************/
void UART_Send_Byte(unsigned char ucData)
{
TI = 0;
SBUF = ucData;
while(!TI);
TI = 0;
}
/**************************************************************************
- 功能描述:51单片机的串口发送0d 0a ,即回车换行
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:无
- 返回说明:无
- 注:此函数就是发送0d 0a这两个字节,在“超级终端”上会有回车换行的效果
**************************************************************************/
void UART_Send_Enter()
{
UART_Send_Byte(0x0d);
UART_Send_Byte(0x0a);
}
/**************************************************************************
- 功能描述:51单片机的串口发送字符串
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:s:指向字符串的指针
- 返回说明:无
- 注:发送完一条字符串,回车
**************************************************************************/
void UART_Send_Str(char *pStr)
{
while(*pStr != '\0')
{
UART_Send_Byte(*pStr++);
}
UART_Send_Enter();
}