导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→MAX485双机串口通信问题,故障,从机不停的发送数据到主机

* 20828: MAX485双机串口通信问题,故障,从机不停的发送数据到主机

   longdan 
longdan发表的帖子 

 MAX485双机串口通信问题,故障,从机不停的发送数据到主机

主机发送程序

;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,RS485Rece_1  ;接收发送方的两次数据,比较两数据,判断数据是否正确
           RET
RS485Rece_1:   MOV A,#0   ;A=0,接收错误
          RET

SUN:     MOV P2 , A   ;接收到是数据送入P2口显示
         RET

  END


         


从机接收程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BIAOZHI BIT  20H.1   
            
                 DR BIT P3.2   ;485发送/接收使能
 ORG 0000H
 LJMP MAIN
               ORG 0100H
MAIN: MOV SP,#60H
               CALL RS485INIT  ;主程序初始化
              CLR BIAOZHI
              LCALL RS485Rece  ;接收数据
     LCALL RUN   ;根据接收的数据运行
 JNB   BIAOZHI , MAIN
 LCALL  FASONG
      SJMP MAIN

;主程序初始化
RS485INIT:      MOV         P0 , #0FFH
                    MOV        TMOD,#20H  ;定时器选用工作模式2
     MOV         TH1,#0F3H  ;设定波特率为4800
    MOV        TL1,#0F3H 
    ORL         PCON , #80H  
   MOV        SCON,#50H  ;串口工作方式1,开允许接收
            SETB       
                   RET
;接收数据,A-接收数据
RS485Rece:             CLR DR   ;接收使能
         JNB RI,$   ;等待接收
                            LCALL   DELAY  
         CLR RI
         MOV B,SBUF
         JNB RI,$   ;等待接收
                            LCALL   DELAY
         CLR RI
         MOV A,SBUF
         SETB  BIAOZHI
         CJNE A,B,RS485Rece_1  ;接收发送方的两次数据,比较两数据,判断数据是否正确
           RET
RS485Rece_1: MOV A,#0   ;A=0,接收错误
        RET

;根据接收的数据运行   
RUN:      CJNE A , #00000001B, LONG1                   
       CPL    P1.0   ;点亮红色发光管,0-亮
    MOV    P2 , #0FFH
      MOV    P0 , #03FH
      CLR   P2.1
      RET
LONG1:          CJNE A , #00000010B , LONG
                     CLR      P1.1
LONG:      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

 


FASONG:         MOV    A , #05H 
                PUSH ACC
                JNB BIAOZHI ,NO
                
  SETB DR   ;发送使能
  CLR TI
  MOV SBUF,A   ;发送数据
  JNB TI,$   ;等待发送结束标志
  LCALL Delay   ;延时
  POP ACC
  SETB DR   ;发送使能
  CLR TI
  MOV SBUF,A   ;发送数据
  JNB TI,$
  LCALL DELAY
  SETB P3.0
  SETB P3.1
  CLR P3.2
 
  CLR  BIAOZHI
  CLR  DR
           NO: RET
 END



发表时间:2007年8月12日10:57:01

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:WLAN 11g USB Adapter威盛无线WiFi模块USB&n
[下一篇帖子]:出售稳定MIPS板卡及设计图出售稳定MIPS板卡及设计图 /P P 芯片AU1500系列