以下是官方说明,当时我们这边官方给的程序是有问题的,在实验室朋友帮助下重新改写了代码,简洁许多,而且可以正常使用了。 后来公司还找我们要程序,但是比赛前我们还是不给了,虽然没考到。想到我以前另一个比赛,官方也是没写好某个传感器程序,主要是那个国产芯片寄存器变了,内核是cm0,而且手册内容很少。我写了有些时间,给官方看看改改,然后被他们拿去用了= =

这里只需要注意校验就行了,我们直接跳过第一个校验,校验第二个0xAA就行了。最奇葩的是倒过来的。
不需要程序都可以用usb转串口发数据.
bit f_r;
unsigned char f_1,r[3];
void UartInit(void) //[email protected]
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES = 1; //Enable UART interrupt
EA = 1;
}
void Uart_Isr() interrupt 4
{
if (RI)
{
RI = 0; //Clear receive interrupt flag
if(SBUF==0xAA)
{
f_1=0; //P0 show UART data
f_r=1;
}
else if(f_1<3)
{
r[f_1]=SBUF;
f_1++;
}
}
}
void main()
{
int db;
UartInit();
initlcd();
dis(2,0," db");
while(1)
{
if(f_r)
{
f_r=0;
if(r[0]==1)
db=(r[2]<<8)|r[1];
wcode(0x80);
wdata(db/1000+0x30);
wdata(db%1000/100+0x30);
wdata(db%100/10+0x30);
wdata('.');
wdata(db%10+0x30);
//send();
}
}
}