![]() |
發(fā)布時間: 2023-11-16 11:56
正文摘要:STC單片機(jī)做學(xué)習(xí)型紅外遙控,單片機(jī)內(nèi)存4K。20個按鍵。每個鍵值236個字節(jié)。保存到單片機(jī)內(nèi)部EEPROM。 程序設(shè)計,上電先把所有鍵值讀到內(nèi)存里,內(nèi)存不夠,就算內(nèi)存夠的話,也不能保證程序運(yùn)行時,內(nèi)存數(shù)據(jù)的正確性。 ... |
最長256字節(jié),不一定都要全部保存,選取用到的關(guān)鍵信息保存 |
hi等你 發(fā)表于 2023-11-17 15:19 每個鍵值的紅外數(shù)據(jù)除了開頭兩個字節(jié)和結(jié)尾兩個字節(jié)都是一樣,中間的字節(jié)都是不同的。我已經(jīng)想到解決辦法了。 |
hi等你 發(fā)表于 2023-11-17 15:19 此遙控器的原理相當(dāng)于錄音機(jī),將未知編碼的遙控信號時序波形記錄下(比如空調(diào)遙控),再將采樣的信號發(fā)射出去。 |
如果我沒猜錯的話,樓主是用直接錄取電平的方式來存鍵值的。不用解協(xié)議的,直接按1010的方式,所以才需要200+字節(jié)。比如NEC協(xié)議有個前導(dǎo)碼9ms,就存成100000000000....這樣的格式![]() |
1,STC系列,讀Eeprom 是不影響壽命的。 2,既然你需要寫 236 x 20 字節(jié)到 Eeprom 說明你單片機(jī)的 Eeprom容量需要 5K 以上的,應(yīng)該也不會是太老的單片機(jī),但凡你用 STC15系(204s,408s等老型號除外)及以上型號單片機(jī),有什么必要從 Eeproim 里面先讀出來呢?直接從Eeprom讀,又不會比XDATA慢…… |
李冬 發(fā)表于 2023-11-17 08:48 學(xué)習(xí)模塊畢竟是學(xué)習(xí)用的,我也不知道您的解碼數(shù)據(jù)怎么需要上百個字節(jié)來判斷鍵值, 我也看過您歷來的提問,很多都是作為思維嚴(yán)謹(jǐn)?shù)某绦蛟巢辉搯柕?+1的較真提問,你 真的需要用上千k的容量來揮霍簡簡單單的紅外數(shù)據(jù),得多大的單片機(jī)來滿足這些垃圾 數(shù)據(jù)?做這樣的產(chǎn)品你的老板會被你氣死,上分析儀多看看紅外時序,判斷一下哪些是有效 數(shù)據(jù),哪些是無效丟棄的。1個字節(jié)有二百多個變化值,有幾個字節(jié)判斷頂天了,實(shí)在不 濟(jì)就改行吧,樓主真的不適合這行 |
首先,先搞清楚236字節(jié)數(shù)據(jù)真的都有效嗎? 其次,從EEPROM讀數(shù)據(jù)不減少EEPROM壽命,而且速度也夠快。 |
如果一個鍵值必需是236個字節(jié)的話,可以對20個鍵值研究一下,找找共同點(diǎn),構(gòu)思出一個壓縮方案,壓縮后使用。 |
EEPROM里的數(shù)據(jù)不用讀到緩存里,可以用unsigned char code 指針或匯編MOVC指令訪問。 |
一個鍵值居然用了236個字節(jié),一看是原來是想用只用一個P30引腳RX,可以下載程序的 奇思妙想的樓主,我覺得樓主遇到的不是eeprom壽命問題,編程需要天賦,需要嚴(yán)謹(jǐn)?shù)?br /> 邏輯能力,如果樓主從事此職業(yè),還是改行比較好,如果樓主是編程興趣愛好,還是走藝術(shù) 路線吧 |
一個鍵值為啥會有236個字節(jié)? |
讀取不會,頻發(fā)擦除會 |
Powered by 單片機(jī)教程網(wǎng)