UART0与UART1共同使用定时器1产生波特率,都是使用8位,可变波特率工作方式,UART0与UART1的TX,RX相应连接。
UART0发送一个字节的程序如下:
void Send_Char(uchar ch)
{
SFRPAGE = UART0_PAGE;
SBUF0 = ch; //送入缓冲区
//ch = SBUF0 ;
while(TI0 == 0); //等待发送完毕
TI0 = 0; //软件清零
}
UART1我用中断方式接受,
void UART1_ISR(void) interrupt 20 using 2
{
uchar rxch;
if(RI1) //中断标志 RI0=1 数据完整接收
{
RI1 = 0; //软件清零
rxch = SBUF1; //读缓冲
if(readCounts >=MAX_LEN)
{
readCounts = 0;
}
trdata[readCounts] = rxch; //存入数组,供发送
readCounts++;
if (rxch==0x0A) //字符串结束标志
{
sendlen= readCounts;
readCounts = 0;
}
}
}
发送和接受都是可以的。也可以进入接受中断。但就是接受不都数据,也就是说进入void UART1_ISR(void)后,SBUF1中没用数据。
请问各位,问题出在什么地方呢?谢谢你们! |