keil中data,xdata,code指的是什麼,存放在哪裏,大小是否符合單片機參數規格

大多數單片機學習者入門時,在編譯過程中會遇到這樣一個問題:“編寫的程序大小超出了單片機規定的範圍”,如何解決呢?

 

以Keil爲例,首先我們在編譯結束後,會得到如下提示(單位爲字節Byte):

  • 其中,data,xdata,code指的是什麼呢?

  • data 可尋址片內ram
    xdata 可尋址片外ram (64k 地址範圍FFFFH)
    code 程序存儲區rom (64k 地址範圍),對應MOVC @DPTR

     

 

 

 

 

  • 這些數據存放在單片機的哪裏呢?

  • 1.瞭解單片機的Flash、RAM、ROM大小及功能
  1. 打開單片機芯片手冊:(以STC12C5A系列爲例)
  2. 根據具體型號找到對應的Flash、RAM、ROM大小
  3. 功能如下:
  4. ROM

    存儲固化程序【存放指令代碼和固定數值,程序運行後不可改動】
    RAM 程序運行中數據的隨機存取【掉電丟失數據】
    FLASH 存儲編寫的程序和永久保存的數據

 

 

 

  • 2.對應單片機和keil編譯後的大小,看是否滿足要求
  1. STC單片機的SRAM,一般包括內部RAM和片上RAM,其中內部RAM最大爲256字節,其餘SRAM爲片上RAM,片上RAM相當於外部數據存儲器。         故:片外ram=SRAM1280字節 減去 片內RAM256字節 =  1024KB
  2. 根據芯片手冊,用戶程序區的程序Flash可作爲ROM用。      故:EEROM+Flash=總rom大小
  3. 以我們最開始Keil中顯示的數據爲例,data=103.2KB保存在片內ram,小於128字節(片內RAM最大256字節,其中128字節是做寄存器用,用戶不可使用),符合要求!
  4. xdata=123KB保存在片外ram,遠小於1024KB,符合要求!
  5. code=12461保存在rom,遠小於(EEROM+Flash)大小,符合要求!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章