打印

串口通讯芯片使能的问题

[复制链接]
3142|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
czha1|  楼主 | 2008-4-21 07:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  最近搞一个多机通讯,用的MC3486和MC3487.
(MC3486和MC3487为四个集成收发器)
MC3486接收端和MC3487的发送端全部接在一起
分别接单片机RXD和TXD,二块芯片的使能端全接
高电平。
实验证明。数据可以正常通过MC3487发送到从机。
主机MC3486接收端数据不能正常接收,断开主机
MC3486接收端,数据能单独接收,也就是说明
MC3486其他三个接收端影响正在接收数据的端口。

问怎么解决?
谢谢。
 程序调试基本通过,可交流

接收数据
        LJMP      MAIN
        ORG       0023H
        LJMP      SSP
        ORG       0030H
MAIN:   MOV       SCON,#50H ;串口方式3,允许接收
        MOV       TH1,#0CCH
        MOV       TL1,#0CCH
    MOV       TMOD,#20H  ;定时器工作方式
        SETB      TR1        ;开定时器
        MOV       CJAD,#03H  ;从机地址
        SETB      EA
        SETB      ES         ;
        SETB      SM2        ;设置接收地址标志
LOOP:   SJMP      LOOP
SSP:    CLR       ES         ;进入中断,关串行中断
        PUSH      PSW        ;至串行数据接收结束
        PUSH      ACC        ;保护现场
        JNB       RI,$       ;
        CLR       RI         ;清接收中断标志
        MOV       A,SBUF     ;取串行数据CLR
        JNB       RB8,SRET   ;=0转移   
        MOV       P1,#0D0H   ;第九位标志
        CJNE      A,#03H,SRET
        MOV       P1,#0FH    ;地址标志
    AJMP      SSI
SRET:   SETB      ES
        POP       ACC
        POP       PSW
    RETI
SSI:    CLR       SM2
        MOV       SBUF,#03H
        JNB       TI,$       ;等待发送结束
        CLR       TI         ;清发送中断标志
        MOV       R3,#00H
SS2:    JNB       RI,$       ;
        CLR       RI         ;清接收中断标志
        MOV       A,SBUF     ;取串行数据CLR
        MOV       P1,A
        MOV       SBUF,#07H  ;接收数据应答信号
        JNB       TI,$       ;等待发送结束
        CLR       TI         ;清发送中断标志
        INC       R3
        CJNE      R3,#08H,SS2
    MOV       P1,#66H    ;接收八位数据结束标志
        SETB      SM2
        AJMP      SRET       ;返回重新联络接收主机数据
D1:     MOV       R0,#05H    ;
DE1:    MOV       R1,#0FFH   ;
DE2:    MOV       R2,#0FFH   ;
        DJNZ      R2,$       ;
        DJNZ      R1,DE2     ;
        DJNZ      R0,DE1
        RET
        END
;***************主机程序****************
        CJAD    EQU    50H  ;从机地址
        START   EQU    51H
        ORG     0000H
        LJMP    MAIN
        ORG     0030H
MAIN:   SETB    P0.0
        MOV     SCON,#50H  ;通讯方式允许接收
        MOV     TL1,#0CCH
        MOV     TH1,#0CCH
    MOV     TMOD,#20H  ;定时器工作方式
        SETB    TR1        ;开定时器
        SETB    P2.0
        CLR     P2.1
        ACALL   D1
        CLR     P2.0
        SETB    P2.1       ;运行指示
MIN:    MOV     50H,#05H
        MOV     R1,#00H
        MOV     A,R1
        MOV     R0,#START
        MOV     DPTR,#TAB
DDD:    MOVC    A,@A+DPTR
        MOV     @R0,A
        INC     R0
        INC     R1
        MOV     A,R1
        CJNE    R1,#08H,DDD
LP:     MOV     A,50H      ;从机地址
LOOP:   LCALL   DF
        MOV     P2,#18H
        SETB    TB8
        MOV     SBUF,A     ;发送从机地址
        JNB     TI,$       ;等待发送结束
        CLR     TI         ;清发送中断标志
    MOV     P2,#10H
        JNB     RI,$       ;从机发送,主机等待寻址的从机应答
        CLR     RI         ;清接收中断标志
        MOV     P2,#0FH    ;运行标志
        LCALL   DF
        MOV     A,SBUF     ;读从机应答信号
        CJNE    A,#05H,LP 
LOP1:   MOV     R1,#00H    ;数据长度
        CLR     TB8        ;数据帧(只有寻址的从机能收到)
        MOV     R0,#START
LOP2:   LCALL   DF
        MOV     A,@R0
        MOV     SBUF,A    ;发送数据
        JNB     TI,$       ;等待发送结束
        CLR     TI         ;清发送中断标志
        JNB     RI,$       ;等待从机应答
        CLR     RI         ;清接收中断标志
        MOV     A,SBUF     ;读应答信息
        CJNE    A,#01H,LOP1;如非法命令,重发
        LCALL   DF
    INC     R0
        INC     R1
    CJNE    R1,#08H,LOP2
;-------------------------------
LP1:    MOV     A,#03H
LOOP1:  LCALL   DF
        MOV     P2,#18H
        SETB    TB8
        MOV     SBUF,A     ;发送从机地址
        JNB     TI,$       ;等待发送结束
        CLR     TI         ;清发送中断标志
    MOV     P2,#10H
        JNB     RI,$       ;从机发送,主机等待寻址的从机应答
        CLR     RI         ;清接收中断标志
        MOV     P2,#0FH    ;运行标志
        LCALL   DF
        MOV     A,SBUF     ;读从机应答信号
        CJNE    A,#03H,LP1 
LOP11:  MOV     R1,#00H    ;数据长度
        CLR     TB8        ;数据帧(只有寻址的从机能收到)
        MOV     R0,#START
LOP21:  LCALL   DF
        MOV     A,@R0
        MOV     SBUF,A    ;发送数据
        JNB     TI,$       ;等待发送结束
        CLR     TI         ;清发送中断标志
        JNB     RI,$       ;等待从机应答
        CLR     RI         ;清接收中断标志
        MOV     A,SBUF     ;读应答信息
        CJNE    A,#07H,LOP11;如非法命令,重发
        LCALL   DF
    INC     R0
        INC     R1
    CJNE    R1,#08H,LOP21
        AJMP    MIN
D1:     MOV     R5,#05H
D2:     MOV     R6,#08H
D3:     MOV     R7,#8FH
        DJNZ    R7,$
        DJNZ    R6,D3
        DJNZ    R5,D2
        RET
DF:     MOV     R3,#02H
DG:     ACALL   DE
        DJNZ    R3,DG
    RET
DE:     MOV     R4,#02FH
DE1:    ACALL   D1
        DJNZ    R4,DE1
        RET
    ORG    0300H
TAB:    DB     001H,010H,002H,020H,004H,040H,008H,080H
        END

相关帖子

沙发
czha1|  楼主 | 2008-4-21 12:43 | 只看该作者

有没有现成的直接接RXD TXD四路收发器卖

程序调试基本通过.

主要是四个接收端并在一起。逻辑混乱。

有没有现成的直接接RXD  TXD四路收发器卖

使用特权

评论回复
板凳
2shift| | 2008-4-21 14:22 | 只看该作者

zhijie

使用特权

评论回复
地板
CPLAX| | 2014-9-25 22:48 | 只看该作者
楼主问题怎么解决的,我现在也遇到了类似的问题,一台好用,并一起通讯就不好使了,互相干扰似的,急需解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

103

帖子

1

粉丝