导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→还请熟悉串口通信的大虾们提点![zhangxu609]

 *第31342篇: 还请熟悉串口通信的大虾们提点!

  
楼 主:zhangxu609 2005年5月14日22:48
 还请熟悉串口通信的大虾们提点!
我正在做51单片机与pc机的232通信,单片机不断向上位机发送同一十六进制数据,我用示波器观察max202的输出,觉得脉冲波形还算正常,可是上位机就是接受不到,
  线是对的,我已经测试过了.
  一直找不到原因,痛苦啊,还请各位帮帮忙!
  
2楼:guest 2005年5月15日17:50
 看这个程序的问题
这段程序编译时有问题,如何解决?想用这段程序和串口进行通信测试,但程序编译时有错误,错误出现的地方我觉得是对的
每隔一段时间向主机轮流送数55H和AAH,并把主机送去的数送到P0口。在PC端用串口精灵来做实验
ORG 0000H 

AJMP START 

ORG 30H 

START: 

MOV SP,#5FH; 

MOV TMOD,#20H ;T1: 工作模式2
 
;MOV TL1,#0FDH ;

MOV TH1,#0FDH ;初始化波特率 

MOV PCON,#80H ;SMOD=1 ,问题在这里

MOV SCON,#50H ; 

MOV R0,#0AAH ;准备送出的数 

SETB REN ;允许接收 

SETB TR1 ;T1开始工作 

WAIT: 

MOV A,R0 

CPL A 

MOV R0,A 

MOV SBUF,A 

LCALL DELAY 

JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1 

AJMP WAIT 

WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ 

AJMP WAIT1 

READ: 

MOV A,SBUF ;将取得的数送P0口 

MOV P0,A 

LJMP WAIT 

DELAY: ;延时子程序 

MOV R7,#0FFH 

DJNZ R7,$ 

RET 

END

  
3楼:guest 2005年5月16日11:18
 我认为是这样
以下是引用guest在2005-5-15 17:50:45的发言:
 WAIT: 
...
 JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1 
 AJMP WAIT 
 WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ 
 AJMP WAIT1 
 READ: 
...
 RET 
 END


这些语句有误,TI不置位时,不会去检测RI,你应该写个小程序,先发完要发出的数据后,再在一段时间内检测RI并处理
  
4楼:zane 2005年5月15日22:04
 换下串口线 2.3
换下串口线 2.3
  
5楼:new_zh 2005年5月16日09:09
 可能原因
1、上位机程序问题。建议用串口调试精灵,注意波特率、数据长度、停止位和奇偶校验的设定。还要注意显示方式是否为16进制
2、上位机和下位机的连线接收和发送没有交叉。
  
6楼:xdqfc 2005年5月16日11:19
 happy!
上位机是以二进制接收的吗?
  
7楼:zhangxu609 2005年5月16日11:35
 感谢各位
果然我还是换错了2,3的线!多谢!

>>>>>>对该主题发表你的看法

本主题贴数7,分页: [第1页]


[上一篇主题]:[原创]请教!谁有过使用mc14489的经验

[下一篇主题]:请问:刚刚开始接触USB,该学些什么?