找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1457|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

用FPGA給51單片機串口發(fā)送字節(jié)的問題,求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:872683 發(fā)表于 2021-6-18 19:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我用FPGA給51單片機,每秒鐘發(fā)送了兩個字節(jié)的數(shù)據(jù),00 00,然后用51采集電壓產(chǎn)生了1個字節(jié),71.現(xiàn)在我想將這三個數(shù)據(jù)從51串口發(fā)送到上位機,我程序是這樣寫的,如圖,在中斷里發(fā)出去。adval是采集到的電壓數(shù)據(jù)。


當只發(fā)送SBUF的時候,也就是只發(fā)送FPGA給的數(shù)據(jù)的時候,串口顯示00 00,是正確的,但是一旦加上發(fā)送電壓,就會顯示如下


他會在00 00 之間多發(fā)送一個電壓數(shù)據(jù),71。原因我理解的是 :SBUF一次只能發(fā)送一個字節(jié),所以在FPGA發(fā)送的兩個字節(jié)00 00 之間夾雜了一個71
但是該如何解決這個問題呢,我想讓他發(fā)送的結(jié)果是,00 00 71.
急求各位大佬解決!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:872683 發(fā)表于 2021-6-19 14:57 | 只看該作者
剛剛想到了一個辦法,解決了,就是設(shè)置一個接受標識符。代碼如下:
  1. void UART_Routine() interrupt 4       
  2. {
  3.         if(time_ri==0)
  4.         {
  5.                 if(RI==1)
  6.                 {                       
  7.                         RI = 0;
  8.                         Send_Byte(SBUF);
  9.                         time_ri++;
  10.                 }
  11.         }
  12.        
  13.         if(time_ri==1)
  14.         {
  15.                 if(RI==1)
  16.                 {                       
  17.                         RI = 0;
  18.                         Send_Byte(SBUF);
  19.                         time_ri=0;
  20.                         Send_Byte(adval);
  21.                 }
  22.         }

  23. }
復(fù)制代碼

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表