51单片机串口通信(自动发送)
51单片机的串口通信,本次实验程序是实现字符的自动发送,该程序可以移植到其它项目程序进行使用,本人通过调试,程序无错误并实现了预期的功能,希望该程序能够给大家带来一些帮助。
//**********************************************************
//定义单片机的一些特殊功能寄存器
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
//**********************************************************
//延时函数
void us_delay(uint t)
{
while(t--);
while(t--);
}
//************************************************************
//串口设置
void UsartInit()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
//********************************************************************
//串口发送程序
void Send_Uart(uchar value) //串口发送函数
{
ES=0; //关闭串口中断
SBUF=value; //发送
while(!TI); //等待发送完毕
TI=0; //清发送完毕中断请求标志位
ES=1; //允许串口中断
}
//******************************************************************
// 用来发送字符串的函数
void HB_Set( uchar *puf)
{
while(*puf!='\0')
{
Send_Uart(*puf);
us_delay(10);
puf++;
}
us_delay(10);
Send_Uart('\r');
us_delay(10);
Send_Uart('\n');
}
//***************************************************************
//主函数
void main()
{
UsartInit() ;
while(1)
{
HB_Set("这么有钱");
}
}