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

熱點內容
資料庫查詢系統源碼 瀏覽:614
php5314 瀏覽:354
完美國際安裝到哪個文件夾 瀏覽:666
什麼app可以掃一掃做題 瀏覽:537
程序員編碼論壇 瀏覽:923
淘點是什麼app 瀏覽:658
中國高等植物pdf 瀏覽:453
51單片機時間 瀏覽:181
後台如何獲取伺服器ip 瀏覽:264
單片機流水燈程序c語言 瀏覽:232
程序員第二職業掙錢 瀏覽:237
運行里怎麼輸入伺服器路徑 瀏覽:837
pythonstepwise 瀏覽:508
劉一男詞彙速記指南pdf 瀏覽:61
php認證級別 瀏覽:366
方舟編譯啥時候推送 瀏覽:1009
php手機驗證碼生成 瀏覽:674
哲學思維pdf 瀏覽:14
凌達壓縮機有限公司招聘 瀏覽:533
weblogic命令部署 瀏覽:35