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