No.20828 作者:longdan 邮件:long5dan20@163.com ID:86836 登陆:4次 文章数:1篇 最后登陆IP:61.186.100.22 最后登陆:2007/10/23 18:23:17 注册:2007/8/12 10:43:33 财富:116 发帖时间:2007/8/12 10:57:01 发贴者IP:61.186.100.22 标题:longdan:MAX485双机串口通信问题,故障,从机不停的发送数据到主机 摘要:No.20828MAX485双机串口通信问题,故障,从机不停的发送数据到主机 主机发送程序 ;RS485: E8区-> A3区 ; RE/DE-> P3.2(INT0),RS485接收/发送使能端 ; RO-> TXD,数据由CPU-> RS485 ; DI-> RXD,数据由RS485-> CPU ;按键: G6区-> A3区 ; 1号键-> P1.0 ; 2号键-> P1.1 ; 3号键-> P1.2 ; 4号键-> P1.3 ;******************************************************* K1 BIT P1.0 ;按键1 K2 BIT P1.1 ;按键2 K3 BIT P1.2 ;按键3 K4 BIT P1.3 ;按键4 DR BIT P3.2 ;485发送/接收使能 ORG 0000H LJMP START ORG 0100H START: MOV SP,#60H LCALL RS485INIT ;主程序初始化 MAIN: LCALL KeyScan ;按键扫描 JZ MAIN LCALL RS485Send ;发送数据,A-键值 LCALL JIESHOU LCALL SUN SJMP MAIN ;主程序初始化 RS485INIT: MOV TMOD,#20H ;定时器选用工作模式2 MOV TH1,#0F3H ;设定波特率为4800 MOV TL1,#0F3H ORL PCON , #80H MOV SCON,#50H ;串口工作方式1,开允许接收 SETB TR1 RET ;485发送数据,重复发送A中数据两次,用于接收两次比较发送的数据是否正确 RS485Send: PUSH ACC SETB DR ;发送使能 CLR TI MOV SBUF,A ;发送数据 JNB TI,$ ;等待发送结束标志 LCALL Delay ;延时 POP ACC SETB DR ;发送使能 CLR TI MOV SBUF,A ;发送数据 JNB TI,$ CLR DR RET ;按键扫描,扫描结果在A中 KeyScan: MOV A,#1 ;按键识别号 JNB K1,KeyScan_1 ;A=1,1号键 INC A JNB K2,KeyScan_1 ;A=2,2号键 INC A JNB K3,KeyScan_1 ;A=3,3号键 INC A JNB K4,KeyScan_1 ;A=4,4号键 MOV A,#0 ;A=0,无按键 RET KeyScan_1: LCALL Delay20ms ;延时10ms,防抖动 MOV B,A MOV A,#1 ;按键识别号 JNB K1,KeyScan_2 ;A=1,1号键 INC A JNB K2,KeyScan_2 ;A=2,2号键 INC A JNB K3,KeyScan_2 ;A=3,3号键 INC A JNB K4,KeyScan_2 ;A=4,4号键 MOV A,#0 ;A=0,无按键 RET KeyScan_2: CJNE A,B,KeyScan_3 RET KeyScan_3: MOV A,#0 ;A=0,无按键 RET ;延时10ms Delay20ms: PUSH 06H PUSH 07H MOV R6,#50 Delay20ms_1: MOV R7,#100 DJNZ R7,$ DJNZ R6,Delay20ms_1 POP 07H POP 06H RET ;延时 Delay: PUSH 06H PUSH 07H MOV R6,#10 Delay_1: MOV R7,#200 DJNZ R7,$ DJNZ R6,Delay_1 POP 07H POP 06H RET JIESHOU: CLR DR ;接收使能 JNB RI,$ ;等待接收 LCALL DELAY CLR RI MOV B,SBUF JNB RI,$ ;等待接收 LCALL DELAY CLR RI MOV A,SBUF CJNE A,B,RS485R ......
>>返回讨论的主题
|