您现在所在的是:

单片机论坛

回帖:2个,阅读:612 [上一页] [1] [下一页]
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2011/1/10 20:05:25
#0楼
相关程序是从网上下载,其发送数据的部分没有问题也好如我之前的贴子一样,只是电平不同,
但收数部份总是不对,
按照我与一个仪表传回的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

;====================================================
;==模拟收发结束
;====================================================
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2011/1/13 20:39:11
#1楼
本来以为这几天想个办法看能不能只发出不回收,可惜最后还是失败了,但又必须两个串口

请各位老大提点下,这是什么原因啊

谢了
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2011/2/6 18:59:05
#2楼
最后改用了双串口单片机,

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002