第一,在串口程序中,为什么要设置串口的波特率可变呀,如果是为了满足不同单片机,或者以后升级用,我想把下面的这段改成固定的9600, 11.05M晶振用,怎么改呢?
void UART_init(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
BRT = RELOAD_COUNT; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
ES = 1; //允许串口中断
EA = 1; //开总中断
TI = 1;
}
每二个问题不是很明白是怎么样解析出正确的包头和包尾的,不明白下面程序的运行过程
void UART_Interrupt_Receive(void) interrupt 4
{
static uint8 i;
if(RI==1)
{
RI = 0;
if(rec_flag==0)
{
if(SBUF==0xff)
{
rec_flag=1;
i=0;
}
}
else
{
if(SBUF==0xff)
{
rec_flag=0;
if(i==3)
{
Communication_Decode();
}
i=0;
}
else
{
buffer[i]=SBUF;
i++;
}
}
}
else
{
TI = 0;
}
}
|