SendCardData EQU 30H ReciCardData EQU 60H ORG 0000H START: LCALL WaitDelay LCALL Commu_Test
Commu_Test: ;---------------------------- ;command::AA FF 01 01 A1 F4 ;---------------------------- ;---------------------------- MOV SendCardData + 0, #0AAH MOV SendCardData + 1, #0FFH;开始标志 MOV SendCardData + 2, #01H;机号 MOV SendCardData + 3, #01H;待发送数据字节数 MOV SendCardData + 4, #0A1H;命令字 MOV SendCardData + 5, #0F4H;校验字 LCALL SoftUART_PutByte LCALL SoftUART_GetByte MOV P0, #00FH; RET
SoftUART_PutByte: MOV SP,#60H ; 设定堆栈区 MOV SCON,#01010000B ; 设定串列方式 MODE1,接收时 REN=1 MOV TMOD,#20H ; 设定计时器1 为 模式2 MOV TH1,#0FDH ; 设定波特率为 57600 SETB TR1 ; 计时器1 ,开始计时 SETB TI MOV R0,#SendCardData MOV R7,#6 AGAIN: MOV SBUF,@R0 ;送发送缓冲区 JNB TI,$ ;等待发送完成 CLR TI INC R0 ;发送下一个 DJNZ R7,AGAIN RET
SoftUART_GetByte: MOV SP,#60H ; 设定堆栈区 MOV SCON,#01010000B ; 设定串列方式 MODE1,接收时 REN=1 MOV TMOD,#20H ; 设定计时器1 为 模式2 MOV TH1,#0FDH ; 设定波特率为 4800 SETB TR1 ; 计时器1 ,开始计时 SETB TI MOV R0,#SendCardData MOV R7,#6 AGAIN1: JNB RI,$ CLR RI MOV A,SBUF MOV @R0,A INC R0 DJNZ R7,AGAIN1 RET WaitDelay: MOV R6,#50 MtDly_Loop2: MOV R7,#100 DJNZ R7,$ DJNZ R6,MtDly_Loop2 DJNZ R5, WaitDelay RET END 请问下为什么用串口调试助手看发送的指令时预计是AA FF 01 01 A1 F4 但总是观察出两串AA FF 01 01 A1 F4 AA FF 01 01 A1 F4? |