登录
首页 单片机论坛
回帖 发帖
正文

主题:模拟串口收的数总不对!

点击:635 回复:2

相关程序是从网上下载,其发送数据的部分没有问题也好如我之前的贴子一样,只是电平不同,
但收数部份总是不对,
按照我与一个仪表传回的485信号来看,应是有6个字节传回,前面两个字节表示当前的温度数
但用此方法收回的字节数不定
由6~12位,通常,11位时前面的四位会是00 00 00 00或者是80 00 00 00
后面的第五位六位才是想要的数据,而且,约有70%收到的数据是正确的,其余的全部不对
请教各位老师,都几个星期搞不定啊!
;********从PC 机接收数据子程序********
OUTPUT:
       ;程序一开始是用了SETB RXD
       JB RXD, $        ;判断是否有起始位出现 这个起始位由谁来定? 等待起始位!判断0的出现!
;应有个时间限制.过时不候
       ;是发送回来吗?如果一直是1就不变动了
lcall delaybps
MOV R3,#8
OUT:
MOV C ,RXD
       clr P1.7;收数时灯亮
RRC A
lcall delaybps
DJNZ R3,OUT      ;接收8 位数据
JNB RXD ,$       ;判断是否有停止位出现,如果通信出了问题就要S循环了
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delaybps: ;一直等到计时到了再做工作
       JNB    TF1, $ ;查计时器0的溢出标志,为0则转移,且不影响标志位
  ;此时为标志有溢出,即时间到,重新计数
CLR    TF1   ;计时器0溢出标志清空
       MOV    TH1, #0feH ;重置计时器0的高8位; 自动重装,作用是否多余?
       MOV    TL1, #07FH ;重置计时器0的低8位
       RET
;====================================================
;==模拟收发结束
;====================================================
11-01-10 20:05
本来以为这几天想个办法看能不能只发出不回收,可惜最后还是失败了,但又必须两个串口
请各位老大提点下,这是什么原因啊
谢了
11-01-13 20:39
最后改用了双串口单片机,
11-02-06 18:59

工控新闻

更多新闻资讯