|
要控制485芯片,必须从RS-232接口信号中选用一根作为控制信号,要求在发送的时候保持高电平,接受时候保持低电平;一般选用RTS信号作为控制信号。由于控制信号是232标准的电平信号,一般还要转换为0~5V的TTL信号。调试程序部分如下(采用应答方式):见附1(加入方块图,程序可以不写) ······
MOV DX ,3F8H ;将DLAB标志位置位
MOV AL ,80H
OUT DX ,AL
MOV DX ,3F8H ;设置 波特率=1843200÷16÷12=9600
MOV AL ,0CH
OUT DX ,AL
MOV DX ,3F9H
MOV AL ,00H
OUT DX ,AL
NOP
MOV DX ,3FBH ;2BH=0010,1011
MOV AL ,2BH ;DLAB复位,附加奇校验位1
OUT DX ,AL ;起始位+8位数据+奇校验位1+END
MOV DX ,3F9H ;以上与MCS51的第9位数据相应
MOV AL ,00H
;禁止任何中断
OUT DX ,AL
BBB: MOV DX ,3FCH ;将RTS、DTR置位,允许发送数据
MOV AL ,03H
OUT DX ,AL
IN00: MOV DX ,3FDH ;检查线路状态寄存器的THRE位
IN AL ,DX ;判断是否允许写数据
TEST AL ,20H
JZ IN00
MOV DX ,3F8H
MOV AL ,01
OUT DX ,AL
NOP
MOV DX ,3FDH ;检查线路状态寄存器的TSRE位
IN01: IN AL ,DX ;等待发送结束
TEST AL ,40H
JZ IN01
TEST AL ,1EH ;判断发送过程中是否出错
JNZ IN00 ;出错重发
MOV DX ,3FCH ;将RTS置0,允许485接受数据
MOV AL ,01
OUT DX ,AL
NOP
MOV DX ,3FDH ;等待DR置1
IN02: IN AL ,DX
TEST AL ,01
JZ IN02
MOV DX ,3F8H ;读取数据
IN AL ,DX ;判断下位机数据是否正确
JNZ BBB
;若不正确重来
NOP
MOV DX ,3FBH ;将RTS置位,允许485发送数据
MOV AL ,3BH ;附加偶校验位0
OUT DX ,AL
MOV DX ,3FCH
MOV AL ,03H
OUT DX ,AL
MOV DX ,3FDH
IN03: IN AL ,DX
TEST AL ,20H
JZ IN03
OUT1: MOV DX ,3F8H ;发送数据“AA”,便于观察
MOV AL ,AAH
OUT DX ,AL
MOV DX ,3FDH
IN AL ,DX
TEST AL ,1EH
JNZ AL ,OUT1 ······四、工业集散系统中RS-485接口标准的抗干扰问题解决方案 虽然RS-485接口标准的优点很多,但在实际使用中也会遇到一些问题,其中最常见的是抗干扰和抗雷击两个问题。(抗雷击盐各上说也是抗干扰的一部分,但实际问题比较多,因此单独讨论)。
|