導航:首頁 > 操作系統 > 單片機把某個函數放進ram

單片機把某個函數放進ram

發布時間:2023-06-30 07:41:27

1. 單片機程序運行要不要把程序從ROM中讀入到RAM中

不要。但是ram中肯定會保留與當前程序運行狀態有關的寄存器(SFR,對於ST89C52應該就是0x80~0xFF的單元)。
對於51系列或者類51的單片機,程序空間和數據空間是分開的,並不存在由rom載入到ram的問題。
這么說吧,ST89C52可以支持到64K的程序存儲,如果都載入到外部RAM里,那RAM肯定是放不下了。

data是內部直接定址的RAM,idata是內部間接定址的RAM

2. 單片機 ram 中執行代碼的 如何鏈接

單片機的程序一般默認從Fash啟動。要想在RAM執行程序,首先得單片機支持,一般只要Flash和RAM是統一編址的都可以在RAM運行程序。

程序的啟動一般都是從一個固定地址(廠家規定)啟動的,而這個地址一般都不在RAM地址范圍內。因此常用的做法是在單片機廠家規定的啟動的地址開始處預先燒錄一段啟動代碼,這就是我們常說的BootLoader,然後再在BootLoader中按照單片機的運行規則跳轉到RAM中代碼(我們一般稱為App程序)的起始地址。

鏈接的不同之處就是ROM模型,一般,按照單片機對應的開發工具,默認都是將ROM的起始地址設置到了廠家規定的啟動地址處,要將程序編譯到其他地址,只需要找到這個ROM的配置修改其起始地址和空間大小即可。例如Keil裡面的Target頁面或者sct文件,還有DSP中的link文件……

根據上述說明可知想要在非廠家規定的地址跑程序,需要有一個BootLoader引導程序(如果是使用在線模擬器模擬跑可以不要):

  1. App程序:鏈接到實際需要的地址(可能是Flash也可能是RAM),如果為RAM要注意掉電後程序丟失;

  2. BootLoader程序:鏈接到廠家規定的啟動地址,在BootLoader中再通過軟體跳轉到App的地址。

3. 單片機 51的一個項目的參數是放在ram裡面的,下次在上電應該數據會丟失啊但是,下面,一定採納

這是一條 偽指令 設置 setno 變數為 23h,
至於在程序中 怎麼使用 這個 setno 變數 是另外回事,
如果在 變數中 存放 一個什麼 數據 (這個數據是存放在 23h RAM 中)
你們關閉電源後 過 一段時間 再打開電源 這個變數 中的數據 就不一定 了。
這要看你 單片機 的電 是否 完全 放盡。如果 放盡電後肯定 保存不住的。

閱讀全文

與單片機把某個函數放進ram相關的資料

熱點內容
part伺服器是什麼 瀏覽:417
isp演算法處理 瀏覽:54
app帳戶在哪裡找 瀏覽:422
哪裡可以下載黃頁app 瀏覽:237
app加密視頻怎麼導出 瀏覽:595
智慧鎖app驗證碼怎麼來的 瀏覽:176
pdf文檔怎麼簽名 瀏覽:929
騰訊雲伺服器存在違規行為 瀏覽:655
魅族手機解壓縮 瀏覽:66
方舟編譯設置後台優化 瀏覽:272
浦發銀行app有什麼優點 瀏覽:968
緩解壓力放鬆心情的辦法是吵架 瀏覽:780
pythonmap使用方法 瀏覽:784
旅行世界app叫什麼 瀏覽:923
加密篦子怎麼製造視頻 瀏覽:905
電腦主伺服器未運行怎麼解決 瀏覽:330
js超級瑪麗源碼 瀏覽:310
雲鏡下載什麼格式app 瀏覽:767
iosAndroidjava 瀏覽:402
外賣員轉型做程序員 瀏覽:927