導航:首頁 > 操作系統 > 單片機把某個函數放進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相關的資料

熱點內容
項目編譯後瀏覽器不對應刷新 瀏覽:564
三星升級android60 瀏覽:292
粘土的壓縮模量 瀏覽:115
美國程序員生活 瀏覽:219
51單片機摘要 瀏覽:405
英語經典pdf下載 瀏覽:317
大學文件夾怎麼刪除 瀏覽:668
linux科研軟體 瀏覽:553
ue4打包編譯著色器 瀏覽:775
雲伺服器可以在手機上登錄嗎 瀏覽:676
網游腳本為什麼要連接伺服器 瀏覽:7
程序員發展路線圖 瀏覽:318
手機語音加密會議 瀏覽:591
冰與火pdf 瀏覽:420
為什麼叫我買阿里雲伺服器 瀏覽:475
加密貨幣征稅一覽表 瀏覽:964
llc編譯器 瀏覽:927
數控可編程電阻器 瀏覽:762
培訓app源碼 瀏覽:436
phpcurl啟用 瀏覽:538