导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[longdan]MAX485双机串口通信问题,故障,从机



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 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:12毫秒 最大:7276毫秒 查询6次