国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 14074|回復(fù): 19
打印 上一主題 下一主題

[提問(wèn)] 關(guān)于RS485通信數(shù)據(jù)丟失問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2011-9-9 16:09:50 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: RS485 , 數(shù)據(jù)丟失
10積分

最近用STC12C5202AD芯片,實(shí)現(xiàn)主機(jī)與從機(jī)通信功能,用的是RS485協(xié)議,上面是RS485電路圖,現(xiàn)在的情況是只能收發(fā)一個(gè)數(shù)據(jù),無(wú)論主機(jī)發(fā)送多少個(gè)數(shù)據(jù),從機(jī)也只能收發(fā)一個(gè)數(shù)據(jù),調(diào)試了整天也沒(méi)有找到原因,下面是我編寫(xiě)的程序:
#include
unsigned  char TEMP,a;
sbit RE = P1^2;      //接收允許開(kāi)關(guān)
sbit DE = P1^1;      //發(fā)送允許開(kāi)關(guān)
/**************************************
     延時(shí)程序
**************************************/
void delay(unsigned char i)
{
unsigned char j;
  for(i; i > 0; i--)
    for(j = 200; j > 0; j--);
}
void init()
{
  TMOD=0X20;      //設(shè)置定時(shí)器的工作方式為方式2,自動(dòng)重裝8位數(shù)據(jù)
  TH1=0XFD;       //波特率9600的初始值
  TL1=0XFD; //波特率9600的初始值
  SCON=0X50; //設(shè)置串口的模式為方式1并置為REN使串口工作
  TR1=1;  //啟動(dòng)定時(shí)器工作
  EA=1;  //開(kāi)啟總中斷
  ES=1;  //開(kāi)啟串口中斷  
  DE = 0;
  RE = 0;   //允許接收,禁止發(fā)送數(shù)據(jù)
}
void main()
{
  init();      //調(diào)用初始化子函數(shù)
  //delay(50);
  while(1)       //死循環(huán)
   {
     if(TEMP==1)     //判斷是否接收完數(shù)據(jù)
      {
       DE = 1;
      RE = 1;    //允許發(fā)送,禁止接收數(shù)據(jù)
      delay(50);
        EA=0;    //關(guān)閉串口中斷
        TEMP=0;    //變量TEMP清0
        SBUF = a;    //把a(bǔ)的值送到發(fā)送SBUF中去,注意此SBUF不同中斷函數(shù)里面的接收SBUF
        while(!TI) ;    //等待數(shù)據(jù)發(fā)送完畢
        TI = 0;  //發(fā)送完數(shù)據(jù)后清0
        delay(50);
        EA=1;  //開(kāi)啟串口中斷
        DE = 0;
   RE = 0;   //允許接收,禁止發(fā)送數(shù)據(jù)
   delay(50);
      }
   }

}
void ser() interrupt   4
{
  RI=0;     //接收完數(shù)據(jù)后軟件清除中斷標(biāo)志位
  a = SBUF;     //把他放進(jìn)變量A中為了讀取返回
TEMP=1;     //置位TEMP
}

該程序如果去掉延時(shí),用在RS232芯片上,通信一切正常,請(qǐng)各位高手幫我分析一下,是程序出現(xiàn)了問(wèn)題,還是電路問(wèn)題,謝謝大家!

沙發(fā)
發(fā)表于 2011-9-14 10:38:59 | 只看該作者
程序不懂,僅就硬件說(shuō)兩句:
1、輸出端,A、B兩線之間,要并聯(lián)一個(gè)120歐姆的負(fù)載匹配電阻。必要時(shí),最好再串接一個(gè)平衡濾波器。
2、供電腳(pin 8)最好能再并一個(gè)10uF的電解,以確保供電穩(wěn)定。
板凳
發(fā)表于 2011-9-14 13:17:59 | 只看該作者
你這個(gè)程序?qū)崿F(xiàn)的功能是:從主機(jī)收一個(gè)數(shù)據(jù),再將該數(shù)據(jù)發(fā)送給主機(jī)。當(dāng)然無(wú)法連續(xù)的接收到主機(jī)上發(fā)送的數(shù)據(jù)的。因?yàn)槟阍诎l(fā)數(shù)據(jù)的時(shí)候,就沒(méi)有辦法接收數(shù)據(jù)。這個(gè)485是工作在半雙工的狀態(tài)。
地板
發(fā)表于 2011-9-15 10:19:11 | 只看該作者
如果你是連續(xù)發(fā)送數(shù)據(jù),則串口一直產(chǎn)生中斷,無(wú)法執(zhí)行其他程序。
地下室
發(fā)表于 2011-9-18 13:27:15 | 只看該作者
我也正遇到同樣的問(wèn)題。四套STC11F04XE+MAX485CSE連接到一起。一個(gè)單片機(jī)發(fā)送,其他單片機(jī)接收。通過(guò)反復(fù)調(diào)試發(fā)現(xiàn),若連續(xù)發(fā)送4個(gè)字節(jié),只能接收到前兩個(gè)字節(jié)。若間隔1秒發(fā)送一個(gè)字節(jié),則都能收到。感覺(jué)到MAX485接收很慢。
6
發(fā)表于 2011-9-18 13:28:25 | 只看該作者
如果哪位高手解決問(wèn)題,請(qǐng)通知一聲c86518@163.com
網(wǎng)上相關(guān)485注意事項(xiàng)都看過(guò)了。
7
發(fā)表于 2011-9-27 15:57:38 | 只看該作者
好好研究
8
發(fā)表于 2011-9-28 22:07:45 | 只看該作者
那個(gè)3腳一邊是DE,一邊是DO,不會(huì)是這里有問(wèn)題吧,其他的我都看不懂.
9
發(fā)表于 2011-9-28 22:09:53 | 只看該作者
圖上3腳一個(gè)是DO,一個(gè)是DE
10
發(fā)表于 2011-9-28 22:13:57 | 只看該作者
那個(gè)3腳一邊是DE,一邊是DO,不會(huì)是這里有問(wèn)題吧,其他的我都看不懂.
11
發(fā)表于 2011-9-29 09:32:07 | 只看該作者
你這個(gè)程序這樣寫(xiě)也是沒(méi)問(wèn)題的。
只不過(guò)主機(jī)發(fā)送的程序要配合從機(jī)。
主機(jī)發(fā)了一個(gè)數(shù)據(jù),等從機(jī)收到并且返回了再發(fā)下一個(gè)就可以了。。。。。
你的程序有很多不好的地方,效率不高,盡量利用中斷來(lái)延時(shí)和中斷來(lái)發(fā)送數(shù)據(jù)就好點(diǎn)。。。。
12
發(fā)表于 2011-10-8 18:05:35 | 只看該作者
1 485芯片A、B端沒(méi)接上下拉電阻,沒(méi)接中間電阻,會(huì)導(dǎo)致控芯片制信號(hào)邏輯不正確,兩個(gè)控制端短接為一個(gè)讀寫(xiě)電平;
2 定義全局?jǐn)?shù)組,每次串口接收中斷把數(shù)據(jù)堆入數(shù)組,主程序每次循環(huán)都檢測(cè)數(shù)組里面的數(shù)據(jù)有效性,數(shù)組超限自動(dòng)出棧最先進(jìn)來(lái)的數(shù)。如果數(shù)據(jù)有效則取數(shù)到臨時(shí)數(shù)組后標(biāo)記全局?jǐn)?shù)組為無(wú)效數(shù)據(jù)。
3 默認(rèn)情況下主程序控制485芯片為接收狀態(tài)。當(dāng)需要發(fā)送數(shù)據(jù)時(shí)才控制485芯片為發(fā)送狀態(tài),狀態(tài)轉(zhuǎn)換時(shí)間可以累加變量來(lái)判斷,不要用延時(shí)子程序。while(!TI)也是用累加變量來(lái)判斷實(shí)現(xiàn)超時(shí)功能清TI,不要一直等待.....
建議去單片機(jī)仿真論壇看看吧http://proteus.5d6d.com
13
發(fā)表于 2011-10-11 14:37:33 | 只看該作者
學(xué)習(xí)中
14
發(fā)表于 2011-10-11 15:18:10 | 只看該作者
就硬件電路而言,我建議你改進(jìn)一下,貼一個(gè)我量產(chǎn)過(guò)的485電路
15
發(fā)表于 2014-3-13 09:09:46 | 只看該作者
Wilson2010888 發(fā)表于 2011-10-11 15:18
就硬件電路而言,我建議你改進(jìn)一下,貼一個(gè)我量產(chǎn)過(guò)的485電路

我沒(méi)看懂,請(qǐng)教一下,這個(gè)圖是怎么工作的呢?
16
發(fā)表于 2014-3-23 09:18:55 | 只看該作者
可能是主機(jī)發(fā)送的太頻繁,叢機(jī)沒(méi)有反應(yīng)過(guò)來(lái)主機(jī)的數(shù)據(jù)又來(lái)啦,叢機(jī)一直工作在中斷中自然數(shù)據(jù)發(fā)不回去
17
發(fā)表于 2014-3-23 09:19:48 | 只看該作者
距離短的話你的電路沒(méi)甚問(wèn)題
18
發(fā)表于 2015-2-22 14:30:05 | 只看該作者
支持一下
19
發(fā)表于 2015-5-26 11:25:25 | 只看該作者
呵呵。簡(jiǎn)單。下載一份485規(guī)格書(shū)就可以的了。
20
發(fā)表于 2015-6-10 22:03:40 來(lái)自手機(jī) | 只看該作者
我給你提一個(gè)意見(jiàn),硬件沒(méi)啥問(wèn)題,看到有人說(shuō)加匹配電阻,其實(shí)線很短,不加也沒(méi)事,你有兩個(gè)延時(shí)函數(shù),如果程序正在執(zhí)行第一個(gè)延時(shí)函數(shù),如果我給你串口發(fā)數(shù)據(jù)了,但是你還沒(méi)有拉低485接受信號(hào)線,也就是收不到,你不覺(jué)得邏輯有問(wèn)題嗎?

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产麻豆91久久久久久 | 男人的亚洲天堂 | 久草视频中文在线 | 亚洲va国产日韩欧美精品色婷婷 | 国产精品国产三级国产专区不 | 久久观看午夜精品 | 四虎 在线播放 | sprd在线 | 四虎永久在线精品视频免费观看 | 日本免费观看视频 | 九九热精品视频在线观看 | 亚州一级毛片 | 七客分享十大app | 综合久久久久久久 | 福利社在线播放 | 四虎成人永久地址 | 四虎影视com88 | 在线观看免费亚洲 | 狠狠操社区 | 国产一级高清免费观看 | 欧美一区二区精品系列在线观看 | 97视频免费看 | 视频黄页在线观看 | 在线一区播放 | 国产精品公开免费视频 | 欧美一级视频在线 | 国产免费播放 | 狼伊千合综网中文 | 国产精品久久久久久久久 | 在线播放黄色片 | 一级毛片在线播放 | 久久福利网 | 国产成人综合洲欧美在线 | 欧美日韩一区二区三区在线观看 | 欧美交 | 青草午夜精品视频在线观看 | 色播在线视频 | 黄色成人在线视频 | 成人福利网站在线看视频 | 麻豆91在线播放 | 国产在线麻豆自在拍91精品 |