/***************************************************************************************/
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define error 0
uchar flag;
uchar temp;
/***************************/
void delay(uint z)
{
uint x,y;
for(x=0;x<110;x++)
for(y=0;y<z;y++);
}
/*********串口初始化*******/
void Uart_Init(void) //9600bps@12.000MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0xD0; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/********发送一个字节****/
void Uart_SendByte(uchar dat) //9位 (1校验位)
{
ACC=dat;
TB8=P;
SBUF=dat;
while(TI==0);
TI=0;
}
/**************************/
void Uart_SendStr(uchar *s)
{
uchar i;
for(i=0;s[i]!='\0';i++)
{
ACC=s[i];
TB8=P;
SBUF=s[i];
while(TI==0);
TI=0;
}
delay(800);
}
/*************************/
uchar Uart_Receive()
{
uchar dat,buf;
if(RI==1)
{
dat=SBUF;
ACC=dat;
if(RB8==P)
{
buf=dat;
RI=0;
return buf;
}
else
{
RI=0;
return error;
}
}
}
/*******************/
void main()
{
Uart_Init();
ES=1;
EA=1;
while(1)
{
Uart_SendStr("狂奔的蜗牛哥 !");
Uart_SendStr("\n");
delay(5000);
Uart_SendStr("START.......");
delay(5000);
}
}
/************串口中断*****************/
void Uart_ser()interrupt 4
{
temp=Uart_Receive();;
}
单片机串口通信中文时易出现乱码?求大神指点! |