PC机用的是串口精灵对单片机发送16进位数据,每次一个
字节,单片机收到数据后发送P1口,由P1的小灯显示。当
发送11(16进制)时显示00010001(0表示暗,1表示亮)是正确,发达22时显示00100010是
正确,发44也正常,但发88时最高位灯不亮。发送33时显示00100010(应该是00110011),
发送77时显示01000100(应该是01110111)。。发现只要多个1连续时就不正常(只有最高
位的灯亮)。我用的是MAX232转换接口,它的四个电容是1UF
的钽电容。此问题困扰着我,如鱼刺在喉,望高手指点
单片机程序如下:
ORG 0000H
AJMP START
ORG 0100H
MOV SCON,#50H 串口方式1,SM1=1,REN=1
MOV TMOD,#20H TIME1 方式2
MOV TH1,#0F3H 波特率2400
MOV TL1,#0F3H
SETB TR1
LOOP:
JB RI,UART
AJMP LOOP
UART:
MOV A,SBUF
CPL A P1口低电平灯亮
MOV P1,A
CLR RI
JMP LOOP
END