首先我们51串口的初始化
unsigned char usart_rx[40];
unsigned char usart_num = 0;
void usart_Init(void)
{
TOMD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
TR0 = 0;
SCON = 0x50;
ES = 1;
EA =1;
}
我们要将数据写入51的寄存器中,并将数据发送出去,发送完成的标志位“TI”,在51中发送完成后硬件不会为我们将发送完成标志位为我们置零,因此我们需要通过软件将发送完成标志位置零
发送完成后TI会被置位1
void usart_send(char ch)
{
//将需要发送的数据给SBUF
SBUF = ch;
while(TI == 0);//等待发送完成
TI = 0;//通过软件的方式置零
}
然后我们将数据依次发送出去
void usart_send_string(char *str)
{
int i;
for(i = 0; str[i] != '\0'; i++)
{
usart_send(str[i]);
}
}
我们将发送的数据打印到串口调试助手上,我要进行重定向
char putchar(char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
return ch;
}
为了随时可以调用函数,我们可以用中断
void usart_interrput(void) interrupt 4
{
if(RI != 0)
{
RI = 0;
usart_rx[usart_num++] = SBUF;
}
}
写的不好,希望能有所帮助