大家好,请教大家一个问题,特别着急,我用STC12C2052AD写了段串口通讯程序如下,然后用STC-ISP与其通讯,发送一个数据给单片机,并把数据加1,然后单片机返回给STC-ISP,但是目前遇到两个问题:
1)波特率在单片机程序中只有设置成9600,并且STC-ISP上设置成4800才能获取到有几个正确的数据,大部分还是不对。
2)测试了几个数据如下:
发送 接收
00 01
01 02
02 03
03 0C
04 0D
05 0E
06 0F
07 10
08 11
程序如下:
#include "reg51.h"
#include "intrins.h"
void ConfigUART(unsigned int baud);
void main()
{
EA = 1;
ConfigUART(9600);
while(1);
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = TL1 = 256 - (11059200 / 12 / 32) / baud;
ET1 = 0;
ES = 1;
TR1 = 1;
}
void InterruptUART() interrupt 4
{
if(RI)
{
RI = 0;
SBUF = SBUF + 1;
}
if(TI)
TI = 0;
}
已经核对过单片机用的晶振是11.0592MHZ,搜索了一些网上的案例,说是波特率设置的问题,但是我也没能看出什么问题来,请大家帮忙看看,谢谢~~ |