串口初始化代码
bit busy;//全局变量void UartInit(void)//串口初始化,9600bps@11.0592MHz{SCON = 0x50; //8-bit variable UARTTMOD = 0x20; //Set Timer1 as 8-bit auto reload modeTH1 = TL1 = -(11059200L/12/32/9600); //Set auto-reload vauleTR1 = 1;//Timer1 start runES = 1; //Enable UART interruptEA = 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 sentACC = 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}}