標(biāo)題: 關(guān)于單片機(jī)+sx1278無(wú)線模塊只能接收1個(gè)字節(jié)的問(wèn)題 [打印本頁(yè)]

作者: a123456789abc    時(shí)間: 2018-11-3 19:25
標(biāo)題: 關(guān)于單片機(jī)+sx1278無(wú)線模塊只能接收1個(gè)字節(jié)的問(wèn)題
單片機(jī)使用 stc59c52 用的澤耀公司的 AS32-ttl-100 無(wú)線模塊     使用串口 接收 發(fā)送數(shù)據(jù) SCON=0x50 8位    TMOD = 0x20 8位自動(dòng)重裝在
TH1 = 0xfd   TL1=0xfd     波特率 9600     發(fā)送波特率9600
發(fā)送端:模塊介紹 一次發(fā)送32字節(jié)  不滿(mǎn)32 等待3字節(jié) 認(rèn)為數(shù)據(jù)終止 模塊發(fā)射數(shù)據(jù)。

問(wèn)題 : SBUF  只能送到單片機(jī) 一個(gè)字節(jié)的數(shù)據(jù) 。   


  1. void jieshou()    接收的代碼
  2. {
  3. uchar b,a;
  4. uint c=0x7fff;
  5. while(c--)
  6. {
  7.   if(0!=RI)
  8.   {
  9.    for(b=0;b<4;b++)
  10.    {
  11.     a=SBUF;
  12.     shuzu[b]=a;
  13.     c=0x7fff;
  14.    }
  15.   RI=0;
  16.   }
  17. }
  18. }
復(fù)制代碼

求解啊    試過(guò)很多種辦法了  但沒(méi)什么卵用   難道只能一個(gè)字節(jié)一個(gè)字節(jié)的發(fā)么   



作者: yzwzfyz    時(shí)間: 2018-11-3 21:36
9600的波特率傳送一個(gè)字節(jié)約需要1.5ms,在這個(gè)時(shí)間里足以將收到的字節(jié)保存起來(lái),而后再收下個(gè)字節(jié),如果5ms內(nèi)收不到就認(rèn)為結(jié)束了一幀,
你邏輯混亂!
正確的做法:串口中斷后首先清中斷標(biāo)記,再下載數(shù)據(jù),再保存數(shù)據(jù),再將保存數(shù)據(jù)的地址+1,退出中斷程序
你呢:中斷后,下載了4次數(shù)據(jù),用時(shí)不會(huì)超0.1ms,再下多些,也都是同一個(gè)數(shù)據(jù),因?yàn)橄聜(gè)數(shù)據(jù)還沒(méi)有到來(lái)!
作者: devcang    時(shí)間: 2018-11-3 22:39
首先,使用電腦兩個(gè)串口,測(cè)試模塊是正常的,,,,,然后把單片機(jī)的串口程序?qū)﹄娔X通訊,看看是否正常。。。。。最后,單片機(jī)連接模塊,進(jìn)行通訊、接收測(cè)試 。


——這模塊,在壞掉的情況,會(huì)只收到1個(gè)字節(jié)的、模塊還會(huì)比正常時(shí)過(guò)熱。
作者: hange_v    時(shí)間: 2018-11-3 22:45
發(fā)完一個(gè)再發(fā)下一個(gè),直到發(fā)完




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1