TX BIT P1.0 ;;TX=0,接收数据 ORG 0000H JMP 0030H ORG 000BH JMP T0 ORG 0030H MAIN: MOV SP,#60H CLR TX MOV TMOD,#21H MOV PCON,#80H MOV SCON,#50H SETB TR1 MOV TL1,#0FAH MOV TH1,#0FAH ;;11.059M 9600BPS SMOD=1 NOP CALL SEARCH MOV A,R3 JZ MAIN0 MOV A,R2 MOV 2EH,A ;ADDR MDATA: MOV R2,2EH CALL RD_DATA MOV A,48H CJNE A,#0DH,MDATA1 MOV R0,#32H MOV R7,#21 MOV R3,#0 MD1: MOV A,@R0 INC R0 ADD A,R3 MOV R3,A DJNZ R7,MD1 CJNE A,47H,MD2 JMP MD3 MD2: ;;CHK ERROE JMP MDATA MDATA1: ;;NO ANSWER JMP MDATA MD3: ;;DATA RIGHT NOP SJMP $ MAIN0: NOP ;;ERROR SJMP $ SEARCH: ;;OUTPUT:R2--ADDR,R3--BPS,R3=0 IS NO EDA9033B MOV R3,#02H MOV TL1,#0FAH MOV TH1,#0FAH ;;11.059M 9600BPS SMOD=1 SE0: MOV R2,#00H MOV R6,#255 ;;SEARCH Longer=20 SEARCH2: CALL RD_ADDR MOV A,36H CJNE A,#0DH,SEARCH1 MOV A,32H CJNE A,02H,SEARCH1 JMP SEARCHOK SEARCH1:INC R2 DJNZ R6,SEARCH2 MOV A,R3 CJNE A,#07H,SE3 JMP SEARCHERR SE3: INC R3 MOV A,R3 CJNE A,#03H,SE4 MOV TL1,#0D0H ;;1200 MOV TH1,#0D0H JMP SE0 SE4: CJNE A,#04H,SE5 MOV TL1,#0E8H ;;2400 MOV TH1,#0E8H JMP SE0 SE5: CJNE A,#05H,SE6 MOV TL1,#0F4H ;;4800 MOV TH1,#0F4H JMP SE0 SE6: CJNE A,#06H,SE7 MOV TL1,#0FAH MOV TH1,#0FAH ;;11.059M 9600BPS SMOD=1 JMP SE0 SE7: MOV TH1,#0FDH MOV TL1,#0FDH ;;19200 JMP SE0 SEARCHOK: MOV A,R3 CJNE A,#02H,SE8 MOV R3,#06H SE8: ;;R2----ADDR,R3---BPS=03-07H RET SEARCHERR: MOV R2,#00H ;;NO EDA9033 ON Line MOV R3,#00H RET WR_BPS: ;;读写波特率 SETB TX ; MOV R2,#02H ;; ADDR ; MOV R3,#06H ;;NEW BPS MOV 30H,#4CH MOV 31H,#57H MOV 32H,R2 MOV 33H,#22H MOV 34H,R3 MOV A,R2 ADD A,R3 ADD A,#22H MOV 35H,A MOV 36H,#0DH MOV R7,#7 MOV R0,#30H WR_BPS1: MOV A,@R0 INC R0 CALL TX1 DJNZ R7,WR_BPS1 CLR TX MOV TH0,#1EH MOV TL0,#0F0H MOV 2FH,#04H CLR 00H SETB TR0 SETB ET0 SETB EA MOV R7,#7 MOV R0,#30H WR_BPS2: NOP CALL RX1 MOV @R0,A INC R0 DJNZ R7,WR_BPS2 CLR TR0 NOP RET WR_ADDR: ;;读写地址 SETB TX ; MOV R2,#01H ;;OLD ADDR ; MOV R3,#02H ;;NEW ADDR MOV 30H,#4CH MOV 31H,#57H MOV 32H,R2 MOV 33H,#21H MOV 34H,R3 MOV A,R2 ADD A,R3 ADD A,#21H MOV 35H,A MOV 36H,#0DH MOV R7,#7 MOV R0,#30H WR_ADDR1: MOV A,@R0 INC R0 CALL TX1 DJNZ R7,WR_ADDR1 CLR TX MOV TH0,#1EH MOV TL0,#0F0H MOV 2FH,#04H CLR 00H SETB TR0 SETB ET0 SETB EA MOV R7,#7 MOV R0,#30H WR_ADDR2: NOP CALL RX1 MOV @R0,A INC R0 DJNZ R7,WR_ADDR2 CLR TR0 NOP RET RD_ADDR: ;;USE:2F---36H,R0,R2,R7,ACC SETB TX ; MOV R2,#01H ;ADDR MOV 30H,#4CH MOV 31H,#57H MOV 32H,R2 MOV 33H,#20H MOV 34H,#00H MOV A,R2 ADD A,#20H MOV 35H,A MOV 36H,#0DH MOV R7,#7 MOV R0,#30H RD_ADDR1: MOV A,@R0 INC R0 CALL TX1 DJNZ R7,RD_ADDR1 CLR TX MOV TH0,#1EH MOV TL0,#0F0H MOV 2FH,#04H CLR 00H SETB TR0 SETB ET0 SETB EA MOV R7,#7 MOV R0,#30H RD_ADDR2: NOP CALL RX1 MOV @R0,A INC R0 DJNZ R7,RD_ADDR2 CLR TR0 NOP RET RD_DATA: ;;读书据 SETB TX ; MOV R2,#02H ;ADDR MOV 30H,#4CH MOV 31H,#57H MOV 32H,R2 MOV 33H,#30H MOV 34H,#01H ;;Read ALL Data MOV A,R2 ADD A,#31H MOV 35H,A MOV 36H,#0DH MOV R7,#7 MOV R0,#30H RD_DATA1: MOV A,@R0 INC R0 CALL TX1 DJNZ R7,RD_DATA1 CLR TX MOV TH0,#1EH MOV TL0,#0F0H MOV 2FH,#04H CLR 00H SETB TR0 SETB ET0 SETB EA MOV R7,#25 MOV R0,#30H RD_DATA2: NOP CALL RX1 MOV @R0,A INC R0 DJNZ R7,RD_DATA2 CLR TR0 NOP RET TX1: CLR TI MOV SBUF,A TX10: JNB TI,TX10 CLR TI RET RX1: NOP JB 00H,RX10 JNB RI,RX1 CLR RI RX10: MOV A,SBUF RET T0: PUSH ACC PUSH PSW CLR TR0 MOV TH0,#1EH MOV TL0,#0F0H SETB TR0 DJNZ 2FH,T01 MOV 2FH,#04H ;Delay 250ms SETB 00H T01: POP PSW POP ACC RETI
|