找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2167|回復: 5
打印 上一主題 下一主題
收起左側

請教51單片機串口中斷程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:891939 發(fā)表于 2021-3-31 11:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序如下:

void Usart() interrupt 4
{
        u8 re,dv;

        re=SBUF;
        RI = 0;
        
        i2c_eepromw(0xa0,1,re);
        dv=i2c_eepromr(0xa0,1);        


        SBUF=dv;        
        while(!TI);
        TI=0;



1、黃色底處把dv改成re,串口調試可以得到正確的返回值,即確定串口配置沒問題。
2、用其它方法調用i2c_eepromr(0xa0,1);,可以得到串口輸入的值,即確定IIC總線驅動沒問題。


但像上面這樣寫程序,無論串口輸入什么值,返回值都是FF。


請問這是什么原因


先謝了

未命名.JPG (120.85 KB, 下載次數(shù): 21)

未命名.JPG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:390416 發(fā)表于 2021-3-31 12:33 | 只看該作者
代碼不要這樣寫,串口就專門串口,IIC就專門IIC  EEPROM就調用IIC。不要在串口里面去調用EEPROM。多開一個緩存就行了。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:390416 發(fā)表于 2021-3-31 12:34 | 只看該作者
給你參考我們的串口發(fā)送代碼,不需要死等的。串口1可以打印3個十六位的變量http://www.torrancerestoration.com/bbs/dpj-201660-1.html
回復

使用道具 舉報

地板
ID:887371 發(fā)表于 2021-3-31 14:17 | 只看該作者
注意,51的函數(shù)不支持再入,所以中斷代碼盡量不要有函數(shù),如必須有,請自行保證該函數(shù)不會在其它部分調用。
另外進入中斷后要盡快退出。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:47286 發(fā)表于 2021-3-31 14:56 | 只看該作者
同沙發(fā)

你這樣弄聲明的變量只能在函數(shù)內起作用 執(zhí)行完畢就銷毀了

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:883031 發(fā)表于 2021-3-31 16:11 | 只看該作者
eeprom寫數(shù)據(jù)時,要先將頁清掉,再寫數(shù)據(jù),否則,會出錯。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表