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

熱點內容
私有雲主要伺服器 瀏覽:935
為什麼主題解壓那麼慢 瀏覽:858
怎麼下載掃描二維碼的手機app 瀏覽:727
雲伺服器創建私有鏡像的時候一定要關機嗎 瀏覽:113
php開發學習門戶 瀏覽:385
傳奇游戲伺服器怎麼設置 瀏覽:823
敲擊東西解壓完整版 瀏覽:401
刺絡學pdf 瀏覽:868
怎麼給手機文件夾設置封面 瀏覽:931
汽車保養app怎麼用 瀏覽:62
線程javalock 瀏覽:896
c語言編譯運行結果查看器 瀏覽:112
androidpx轉dip 瀏覽:841
西藏編譯局是什麼級別 瀏覽:1001
php提交代碼 瀏覽:597
如何用命令查找並刪除代碼塊 瀏覽:582
python初學路線圖 瀏覽:534
matlab遺傳演算法旅行商問題 瀏覽:304
將辦公軟體加入加密軟體的進程 瀏覽:724
聯想小新pro14編譯器 瀏覽:462