最近做了一个数据采集系统,用的AT89C2051和TLC1549采用串行通信输出到上位机。但调试中有一个问题: 没有模拟输入时,电脑显示的数据时03 FF 03 FF。。。。拔掉TLC1549,仍不接采集的模拟量,电脑显示的是乱码。 附上程序和电路图,希望大家帮忙看看问题在哪,谢谢了。 程序ORG 0000H LJMP START ORG 0023H AJMP RECIVE ORG 0100H START: MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB EA CLR ET1 SETB ES SETB TR1 MOV SCON,#50H SJMP $ RECIVE: MOV A,SBUF CLR RI CJNE A,#0AH,RECIVE ; JIE SHOU R LJMP REC REC: MOV A,#59H ; FA SONG Y MOV SBUF,A WAIT: JBC TI,READ SJMP WAIT READ: CLR P1.2 NOP SETB P1.0 MOV R0,#08H MOV A,#00H LCALL AD MOV R2,A MOV A,#00H MOV R0,#02H LCALL AD MOV R3,A SETB P1.2 SEND1: MOV A,R3 MOV SBUF,A WAIT1: JBC TI,SEND2 SJMP WAIT1 SEND2: MOV A,R2 MOV SBUF,A WAIT2: JBC TI,DELAY;不能跳转 SJMP WAIT2 DELAY: MOV R4,#200 D50MS: MOV R5,#250 ;延时100毫秒 DJNZ R5,$ DJNZ R4,D50MS SJMP READ RETI AD: RL A CLR P1.0 NOP MOV C,P1.1 MOV ACC.0,C SETB P1.0 DJNZ R0,AD RET END
|