#include<reg52.h>
void main(void)
{
RCAP2H=(65536-11059200/32/14400)>>8;
RCAP2L=(65536-11059200/32/14400)&0Xff;
T2CON=0X34;
SCON=0X50;
ES=1;
EA=1;
while(1);
}
unsigned char temp;
void serial_int(void) interrupt 4
{
if(RI)
{
RI=0;
temp=SBUF;
SBUF=temp;
while(!TI);
TI=0;
}
}
单片机串口传送 晶振是24M的除了9600波特率,其他波特率均不能正常显示在串口调试助手里,换成11.0592的我试了一下9600 和14400能传送,其他的也不能正常显示,为什么呢?高手们给指点一下
用11.0592 除了9600波特率也不能正常回传到串口调试助手啊,请问为什么呢
追答你的程序有问题!
SBUF=temp;
while(!TI);
TI=0;
在中断里还使用查询方式发送数据?
发送用查询 接收用中断,这个没问题的,现在的问题是为什么换别的波特率就不能正常发送
追答那再仔细看T2作为波特率发生器时的注意事项了,我试验的还没遇到这种问题。
追问改成T1也一样的,你可以把程序放你的单片机里看看
追答中断程序的写法;
void serial_int(void) interrupt 4
{
if(RI)
{
RI=0;
//其他程序
}
if(TI)
{
TI=0;
//其他程序
}
}
如果波特率高的时候通信不正常,那就只有怀疑MAX232的电路有没有问题了。我以前遇到过,如果MAX232用的电容偏小,高波特率的通信就不成功。一般电容用1uF。