串口初始化代码
bit busy;//全局变量
void UartInit(void) //串口初始化,9600bps@11.0592MHz
{
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(11059200L/12/32/9600); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
中断服务函数代码
void Uart_Isr(void) interrupt 4 //中断服务函数
{
unsigned char Res;
if(RI)
{
RI = 0;
}
if(TI)
{
TI = 0; //清中断标志
busy = 0;
}
}
附赠2个1串口发送函数
1、发送一个字节(十六进制)
void SendData(unsigned char dat)
{
while (busy); //Wait for the completion of the previous data is sent
ACC = dat; //Calculate the even parity bit P (PSW.0)
busy = 1;
SBUF = ACC; //Send data to UART buffer
}
2、发送字符串
void SendString(char *s)
{
while (*s) //Check the end of the string
{
SendData(*s++); //Send current char and increment string ptr
}
}