單片機(jī)
/***************************************************************************************/
#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}
/*********串口初始化*******/
void Uart_Init(void) //9600bps@12.000MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0xD0; //8位數(shù)據(jù),可變波特率
TMOD &= 0x0F; //清除定時(shí)器1模式位
TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動重裝方式
TL1 = 0xFD; //設(shè)定定時(shí)初值
TH1 = 0xFD; //設(shè)定定時(shí)器重裝值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動定時(shí)器1
}
/********發(fā)送一個(gè)字節(jié)****/
void Uart_SendByte(uchar dat) //9位 (1校驗(yàn)位)
{
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();;
}
單片機(jī)串口通信中文時(shí)易出現(xiàn)亂碼?求大神指點(diǎn)!