找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于STC8A8H64D4單片機(jī)eeprom讀寫(xiě)問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:712072 發(fā)表于 2023-11-16 10:47 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
       問(wèn)題:現(xiàn)定義  unsigned  int  ledld[4]=0;    使用eeprom讀取數(shù)據(jù)的時(shí)候發(fā)數(shù)組里面的數(shù)字大于900,然后發(fā)現(xiàn)讀取的數(shù)據(jù)是錯(cuò)誤的。后續(xù)反復(fù)試驗(yàn)發(fā)現(xiàn)數(shù)字只要大于640的話就無(wú)法讀取正確的值,低于640可以正常讀取。
       想問(wèn)問(wèn)有沒(méi)有遇到這種情況的,幫我解答一下,謝謝。后面又用了STC8H3K64S4這個(gè)單片機(jī)也是一樣的問(wèn)題

1.png (5.96 KB, 下載次數(shù): 57)

1.png

2.png (4.46 KB, 下載次數(shù): 64)

2.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:712072 發(fā)表于 2023-11-16 11:25 | 只看該作者
以下是eeprom的程序

3.png (48.36 KB, 下載次數(shù): 53)

3.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2023-11-16 15:06 | 只看該作者
代碼不全,猜不出來(lái)。單片機(jī)本身不會(huì)發(fā)生這樣的問(wèn)題,只能是樓主的代碼有問(wèn)題。
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2023-11-16 15:23 | 只看該作者
注意以下:
1、表達(dá)一個(gè)數(shù)所用的字節(jié)數(shù)N,即一個(gè)數(shù)要分成N個(gè)字節(jié)讀、寫(xiě)。
2、EEPROM只能寫(xiě)0不能寫(xiě)1(1是擦除后自然形成的,例:可以將11110000,改成00110000,不可以改成11110011)。
3、先擦后寫(xiě),已擦了不用再擦(擦的目的是改0為1)。
4、關(guān)注擦除的范圍(當(dāng)心擦到其它數(shù)據(jù),擦是按頁(yè)進(jìn)行的,即一擦一大片。)
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2023-11-16 17:01 | 只看該作者
試試
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0] << 8 | ispdu(0x0011);
回復(fù)

使用道具 舉報(bào)

6#
ID:712072 發(fā)表于 2023-11-16 17:57 | 只看該作者
wulin 發(fā)表于 2023-11-16 15:06
代碼不全,猜不出來(lái)。單片機(jī)本身不會(huì)發(fā)生這樣的問(wèn)題,只能是樓主的代碼有問(wèn)題。

     以下是算是完整代碼,后續(xù)會(huì)加其它功能,但現(xiàn)在卡在這個(gè)eeprom中

1.png (22.09 KB, 下載次數(shù): 66)

1.png

2.png (20.37 KB, 下載次數(shù): 69)

2.png
回復(fù)

使用道具 舉報(bào)

7#
ID:712072 發(fā)表于 2023-11-16 17:58 | 只看該作者
lkc8210 發(fā)表于 2023-11-16 17:01
試試
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0]

這種形式也試過(guò),也是不行的
回復(fù)

使用道具 舉報(bào)

8#
ID:213173 發(fā)表于 2023-11-16 19:04 | 只看該作者
本帖最后由 wulin 于 2023-11-17 06:35 編輯
395164965 發(fā)表于 2023-11-16 17:57
以下是算是完整代碼,后續(xù)會(huì)加其它功能,但現(xiàn)在卡在這個(gè)eeprom中

讀、寫(xiě)、清除EEPROM是在IAP方式操作。試試讀、寫(xiě)、清除EEPROM時(shí)關(guān)閉總中斷。EA=0;。完成后再開(kāi)總中斷。
回復(fù)

使用道具 舉報(bào)

9#
ID:1034262 發(fā)表于 2023-11-16 20:43 | 只看該作者
程序問(wèn)題,EEPROM只能單字節(jié)讀寫(xiě)。
回復(fù)

使用道具 舉報(bào)

10#
ID:57657 發(fā)表于 2023-11-16 22:01 | 只看該作者
wulin 發(fā)表于 2023-11-16 19:04
讀、寫(xiě)、清除EEPROM是在ISP環(huán)境操作。試試讀、寫(xiě)、清除EEPROM時(shí)關(guān)閉總中斷。EA=0;。完成后再開(kāi)總中斷。

EEPROM可以使用unsigned char/int/long code指針(匯編MOVC指令)讀取,無(wú)需配置什么ISP寄存器。
回復(fù)

使用道具 舉報(bào)

11#
ID:712072 發(fā)表于 2023-11-17 08:44 | 只看該作者
coody_sz 發(fā)表于 2023-11-16 20:43
程序問(wèn)題,EEPROM只能單字節(jié)讀寫(xiě)。

那怎么讀寫(xiě)16位數(shù)據(jù),我現(xiàn)在就是將16位數(shù)據(jù)分成兩個(gè)字節(jié)讀取,不就相當(dāng)于單字節(jié)讀取嗎?
回復(fù)

使用道具 舉報(bào)

12#
ID:712072 發(fā)表于 2023-11-20 16:03 | 只看該作者
     現(xiàn)在算是解決了這個(gè)問(wèn)題了,改了一下程序,將eeprom讀寫(xiě)程序從8位改為16位就可以正確讀取數(shù)字超過(guò)640的。
     至于8位的為什么不可以,后續(xù)我再查找一下問(wèn)題。

1.png (59.37 KB, 下載次數(shù): 50)

1.png
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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