请朋友们根据下面数据帮我分析一下出错的原因:
我是用串口调试小助手作为上位机,单片机作为下位机,并用P1口显示上位机发来的数据(接了8只发光二极管,电平转换用的是MAX232CPE). 发送一组两位16进制数。
测试16进制高位。
串口小助手 P1口
发送 接收 (1是亮,0是灭)
10 80 0010 0000
20 a0 0100 0000
30 b0 0110 0000
40 c0 1000 0000
50 d0 1010 0000
60 e0 0110 0000
70 f0 1110 0000
80 80 0000 0000
90 90 0010 0000
a0 a0 0100 0000
b0 b0 0110 0000
c0 c0 1000 0000
d0 d0 1010 0000
e0 e0 1100 0000
f0 f0 1110 0000
测试16进制低位。
串口小助手 P1口
发送 接收 (1是亮,0是灭)
01 81 0000 0001
02 86 0000 0110
03 87 0000 0111
04 80 0001 0000
05 81 0000 1001
06 86 0000 1110
07 87 0000 1111
08 88 0001 0000
09 89 0010 0001
0a 8e 0001 1110
0b 8f 0001 0111
0c 88 0001 1000
0d 89 0001 1001
0e 8e 0001 1110
0f 8f 0001 1111
void uart(void) interrupt 4
{
unsigned char a,b;
if(RI)
{
a=SBUF;
p1=a;//
RI=0;
if(a==0x84)//接收到字头
{
b=0x0f;
SBUF=b;
while(TI!=1);
TI=0;
}
else
{
SBUF=a;
while(TI!=1);
TI=0;
p2=~p2;
}
}
}
|