單片機上電清空RAM區

2021-01-07 電子產品世界
上電後清空RAM是必須要做的,由於上電後RAM中的數據處於不確定的狀態,會給單片機的運算或者條件判斷帶來影響,所以是必須必須清空的。清空做的操作也不難,做成子程序後,在程序的開始調用一下就完事了,挺方便。下面分別是 EM78P156 , EM78P259/260 ,EM78P468 等有不同RAM數的單片機的清RAM操作。

本文引用地址:http://www.eepw.com.cn/article/201611/315481.htm

編程的基本思想,根據白皮書(ELAN的官方說明書,咱們習慣的叫法)R0是間接尋址,R4是RAM選擇,根據這兩個的組合就可以完成操作。具體操作和說明可以參考白皮書。

hint: 根據我的理解,這裡其實可以很簡單的,只需要知道,R4放的是寄存器的地址,R0是放對應的那個寄存器的數據,就OK了,例如

MOV A,@0X10

MOV R4,A

MOV A,@0X11

MOV R0,A

根據hint裡面說的,R4放地址,看前兩句,將 0x10移入R4,對了,表示地址,表示 0x10號寄存器,而後面將0x11移入R0,這個就是數據,放在什麼地方?就是放在當前R4指向的寄存器裡面,也就是說 0x10地址放的數據是 0x 11,可能開始看有點抽象,不過相信我,那是很簡單的東西。

下面的程序都是按照這種思想來做的 EM78P156 的RAM從 0x10 ~ 0x3f ,如果153的話只有 0x2f,修改一下就行了,而259/260 468 的RAM比較多,ELAN 是以bank來處理的,也就是分頁處理,所以在清空的時候切換一下bank就可以了,關於bank的操作,看白皮書,說到低就是對R4最高兩位的操作而已。

有問題的話歡迎回帖子,或者發我郵件 etual@163.com

當然如果有更好的思想,或者我的程序裡面犯錯誤的話,非常歡迎大家指出,大家共同討論,共同學習和進步,在下不吝賜教。

;---

; 適用於 em78p156 & 153

; 如果Em78P153S 將 0x3f 改成 0x2f就可以了

;---

clear_all_ram:

mov a,@0x10 ; 開始地址

mov r4,a

clr_ram:

clr r0 ; 清空內容

inc r4 ; 地址加1

mov a,@0x3f ; 是否達到最大的地址 ,bank最大為0x3f

and a,r4

jbs psw,z

jmp clr_ram ; 是的話推出,不是的話繼續循環

ret

;--

; 適用於 em78p259/260 等只有2個bank的mcu

; 先做一下宏定義,不同的mcu宏定義可能不同,注意修改一下

;--

;macro definition-

bank0 macro

bc 0x04,6 ; R4 的第六位決定是bank0 還是bank1

endm

;----

bank1 macro

bs 0x04,6

endm

;--clear rams of all banks--

clear_all_ram:

mov a,@0x10

mov r4,a

bank0

call clr_ram

bank1

call clr_ram

ret

clr_ram:

clr r0

inc r4

mov a,@0x3f

and a,r4

jbs psw,z

jmp clr_ram

mov a,@0x10

mov r4,a

ret

;--

; 適用於 em78p468 4個bank , 而且本身有bank指令不用宏定義

;--

;--clear rams of all banks--

clear_all_ram:

mov a,@0x10

mov r4,a

bank 0

call clr_ram

bank 1

call clr_ram

bank 2

call clr_ram

bank 3

call clr_ram

jmp clr_ram_end

clr_ram:

clr r0

inc r4

mov a,@0x3f

and a,r4

jbs psw,z

jmp clr_ram

mov a,@0x10

mov r4,a

clr_ram_end:

ret

相關焦點

  • 單片機RAM的作用
    前128單元具體分為:1.工作寄存器區:共4個組,每組為8個存儲單元,即00H-07H,08H-0FH,10H-17H,18H-1FH,具體選擇哪一個由程序狀態字(PSW)中的RS1和RS0的組合決定(在此我就不展開了,呵呵……)2.位尋址區:20H-2FH,共16個單元,每一位可以進行位尋址(16*8=128個位地址),就是每一個觸發位,就是bit可以尋址
  • 單片機中空間和堆棧的意義
    關於單片機的知識,體積龐大且結構複雜。初學者很容易陷入困境,最終失去對單片機的興趣。因此在學習單片機時一定要對基礎知識進行特別的鞏固。在本文中,小編將為大家介紹單片機地址空間以及堆棧的相關知識,下面大家就隨小編來一起看一看吧。
  • 51單片機資源擴展:擴展片外RAM
    51單片機資源擴展:從片內ROM跳轉到片外ROM 一文中擴展了單片機的程序存儲器,4KB存儲空間提升到64KB。本文引用地址:http://www.eepw.com.cn/article/201611/318425.htm 對應於彙編語言用R1,R0/DPTR訪問外部RAM,keil C擴展了存儲類型,增加了如pdata(等同用movx @Rn訪問方式)/xdata(等同於movx @DPTR訪問方式)存儲類型用於訪問片外ram。
  • 單片機中的數據存儲器ram
    數據存儲器ram這是個可以隨時存取數據的一塊存儲器,也就是可以讀(取)也可以寫(存)的存儲器,簡稱為RAM存儲。現在單片機裡面所使用的RAM存儲器,屬於靜態RAM或SRAM存儲晶片,這個和電腦用的內存條有所不同。
  • 單片機中data,idata,xdata,pdata,code區別
    從數據存儲類型來說,8051系列單片機有片內、片外程序存儲器,片內、片外數據存儲器,片內程序存儲器還分直接尋址區和間接尋址類型,分別對應code、data、xdata、idata以及根據51系列單片機特點而設定的pdata類型,使用不同的存儲器,將使程序執行效率不同,在編寫C51程序時,最好指定變量的存儲類型,這樣將有利於提高程序執行效率(此問題將在後面專門講述)。
  • 單片機系統ram的低功耗測試方法
    在各種單片機應用系統中,存儲器的正常與否,直接關係到該系統的正常工作。為了提高系統的可靠性,對系統的可靠性進行測試是十分必要的。通過測試可以有效地發現並解決因存儲器發生故障對系統帶來的破壞問題。專注於銷售各種存儲晶片供應商英尚微電子介紹常用的單片機系統RAM測試方法,並在MARCH-G算法的基礎上提出了一種低功耗的改進方法。它具有測試功耗低,故障覆蓋率較高的特點。
  • 單片機下程序RAM, ROM ,Flash
    單片機FLASH主要用作程序存貯器,就是替代以前的ROM,最大的有有點是降低了晶片的成本並且可以做到電擦寫,目前市場上單片機的FALSH壽命相差比較大,擦寫次數從1000~10萬的都有,但存儲時間可以保證40年,在選用時要注意.還有一些廉價的單片機為了集成可掉電的數據存儲器,沒有選用價格昂貴的EEPROM,而用FALSH來做的,但要注意其壽命最多就10萬次,而且擦寫不能字節擦寫,這要注意使用的場合其壽命是否滿足要求
  • 手機rom和ram的區別是什麼?
    關注 點擊上方↑藍色 手機世界 加關注3533手機世界 手機改變世界  手機rom和ram很多朋友都在問rom和ram有什麼區別,哪個比較好一點!想知道的朋友現在就隨小編一起來看看rom和ram的區別吧!希望可以幫到大家。
  • 51單片機ROM與RAM
    先說說這個4K字節的程序存儲器或者說只讀存儲器,我們寫的程序經過編譯器編譯成機器碼都是存在這個區域,所以稱為程序存儲器;但單片機上電執行的時候,此區域內的數據只能讀取而不能寫入,他的只讀存儲器的名稱從這而來。
  • 單片機ROM,RAM都是幹啥的?
    常規上ROM譬如說,現在家用的電子式電度表,它的內核是一款單片機,該單片機的程序就是存放在ROM裡的。電度表在工作過程中,是要運算數據的,要採集電壓和電流,並根據電壓和電流計算出電度來。--ROM存放指令代碼和一些固定數值,程序運行後不可改動;RAM用於程序運行中數據的隨機存取,掉電後數據消失..code就是指將數據定義在ROM區域,具只讀屬性,例如一些LED顯示的表頭數據就可以定義成code存儲在ROM。
  • 單片機ROM,RAM和FLASH的作用
    要回答這個問題,首先必須明確一條:ROM是只讀存儲器,CPU只能從裡面讀數據,而不能往裡面寫數據,掉電後數據依然保存在存儲器中;RAM是隨機存儲器,CPU既可以從裡面讀出數據,又可以往裡面寫入數據,掉電後數據不保存,這是條永恆的真理,始終記掛在心。
  • 單片機原理簡介
    隨著大規模集成電路的出現和發展,將計算機的cpu 、ram 、 rom 、定時/數器和多種i/o接口集成在一片晶片上,形成晶片級的計算機,因此單片機早期的含義稱為單片微型計算機,直譯為單片機。 3 、在實時過程控制中的應用:用單片機實時進行數據處理和控制,使系統保持最佳工作狀態,提高系統的工作效率和產品的質量。 4 、在人類生活中的應用:目前國外各種家用電器已普通採用單片機代替傳統的控制電路。 5 、在其它方面的應用:單片機除以上各方面的應用,它還廣泛應用於辦公自動化領域、商業營銷領域、汽車及通信、計算機外部設備、模糊控制等各領域中。
  • 單片機堆棧溢出怎麼解決?
    KEIL C51的堆棧不需要你去設置的,編譯器會把DATA ram剩餘的空間都劃分給棧,所以儘量減少對DATA的使用。51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管 STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:        STC15W408AS_DIP16 x1        DS18B20  x1        TM1637數碼管 x1
  • 《60天學會STM32單片機線上培訓班》第二期開班倒計時2天
    單片機又稱單片微控制器,它是把一個計算機系統,包括cpu、ram、rom、定時/計數器和多種i/o接口集成到一個晶片上。由於單片機的種種優點和特性,其應用領域極其廣泛。單片機系統同樣也由硬體系統和軟體系統構成。 想知道更多關於單片機的知識嗎?
  • stm32為什麼短短幾年就佔領了單片機的大半江山?來了解一下
    一、前言還記得12年的時候,當時市場上8位機還很多,尤其51單片機在stc的帶領下,佔據著大片的單片機市場,學單片機大家都用51,大學教材也是以51來入門,雖然此時Atmel系列51單片機已經不太常見了,但國產51任佔據著90%的國內51市場,可謂是51單片機經久不衰,低端8位機市場基本不可替代
  • 單片機數據存儲器RAM的擴展實例
    RAM是用來存放各種數據的,MCS-51系列8位單片機內部有128 B RAM存儲器,CPU對內部RAM具有豐富的操作指令。但是,當單片機用於實時數據採集或處理大批量數據時,僅靠片內提供的RAM是遠遠不夠的。
  • 51單片機擴展外部RAM
    今天這個是是以前做過的,沒做成,擴展ROM的時候失敗了~~不過今天主要的就是擴展外部的RAM,這個相對比較簡單點,不想外部的ROM還要設置太多的編譯器~~本文引用地址:http://www.eepw.com.cn/article/201611/322138.htm單片機擴展外部
  • 如何用單片機控制220V交流電的通斷
    如何用單片機控制220V交流電的通斷 首先來說,220V交流電的負載是多大,是感性負載負載還是阻性負載,正常輸出功率是多大等這些都要考慮進去。 使用可控矽三極體MOS管的單片機控制220V交流電通斷電路圖解 使用單片機控制220V交流電的通斷,方法非常多。
  • DS1302有備用電源的情況下 單片機上電時間讀取為0?
    自己搭建的模塊 接好上拉電阻程序我以前就寫過,現成的,連接好上電,時間顯示正常可斷電在上電,發現時間全0,在備用電池連接的情況下,時鐘不連續計時?這個就很奇怪了。檢查程序和電路沒有發現任何問題。這時我就懷疑晶片了。
  • 分析STM32的三種上電啟動過程
    分析STM32的三種上電啟動過程 HACK實驗室 發表於 2020-05-03 18:03:00 上一篇文章我寫了STM32的RAM和Flash,文章最後我建議大家來深入研究一下