1个回答
展开全部
收到空字符,也许是晶振用错了,可以检查一下你的晶振是12.000还是11.059
程序给上,自己写的,很稳定。有疑问找我
//串口通信初始设定
void serialcom_init(void)
{
SCON = 0x50; //UART为模式1,8位数据,允许接收
TMOD |= 0x20; //定时器1为模式2,8位自动重装
//PCON |= 0x80; //SMOD=1;
TH1 = 0xFD; //Baud:9600 fosc="11.0592"MHz
TL1 = 0xFD;
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
}
//向串口发送一个字符
void send_char_com(unsigned char ch)
{
SBUF=ch;
while (TI==0);
TI=0 ;
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI)
{
RI=0;
ch=SBUF;
read_flag=1 ; //就置位取数标志
}
}
程序给上,自己写的,很稳定。有疑问找我
//串口通信初始设定
void serialcom_init(void)
{
SCON = 0x50; //UART为模式1,8位数据,允许接收
TMOD |= 0x20; //定时器1为模式2,8位自动重装
//PCON |= 0x80; //SMOD=1;
TH1 = 0xFD; //Baud:9600 fosc="11.0592"MHz
TL1 = 0xFD;
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
}
//向串口发送一个字符
void send_char_com(unsigned char ch)
{
SBUF=ch;
while (TI==0);
TI=0 ;
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI)
{
RI=0;
ch=SBUF;
read_flag=1 ; //就置位取数标志
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询