急!485通信,PC机不能正常接收!

2019-03-24 18:52发布

请教大家,
本人用单片机做的控制器通过485与PC机通信,波特率从600-19200,接收全波特率都能正常工作(能按要求指令执行命令,),但超过1200的波特率,PC机接收的就全是乱码了(用的串口调试助手2.1版,使用十六进制数据进行通信),单片机使用STC12C5A60S2,485芯片使用SP481R。用示波器测试发送和接收的波形都是比较正的方波。  先谢谢大家了! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
仙猫
1楼-- · 2019-03-26 10:23
 不知你仔细观察过发送波形没有,也不知延迟插在什么地方。是不是每次发新的数据帧时又重置了UART?(猜测)
 如是这样的话,那可能最后一个数据尚未发完就被腰斩了,因为那个标志位很可能是在数据寄存器或FIFO空,但移位寄存器还在逐位外送时就被置起的。
pv1986
2楼-- · 2019-03-26 13:08
应该没有,以下是我的发送代码,用的查询方式
SEND:  CLR REN
       CLR ES
       CLR EX1
       SETB P3.6        ;置发送
       mov 48h,#0ffh
       djnz 48h,$
       mov 48h,#0ffh
       djnz 48h,$
       mov 48h,#0ffh
       djnz 48h,$
       nop
       MOV R0,#28H
       MOV A,#0FH  ;
       MOV C,P
       MOV TB8,C    ;偶校验
       MOV SBUF,A
LOOP2:   JNB TI,$
         CLR TI
         nop
         mov 48h,#0ffh
         djnz 48h,$
         mov 48h,#0ffh
         djnz 48h,$
         mov 48h,#0ffh
         djnz 48h,$
         nop
         MOV A,@R0  ;R0初始值=28H
         MOV C,P
         MOV TB8,C
         MOV SBUF,A
         INC R0
         CJNE R0,#2FH,LOOP2
         JNB TI,$
         CLR TI
         CLR 20H.3    ;
         SETB ES
         SETB EX1
    RET
ddllxxrr
3楼-- · 2019-03-26 18:35
pv1986
4楼-- · 2019-03-26 23:00
呵呵 ,汇编更熟一点

一周热门 更多>