⑴ 51單片機code存儲區是片內的存儲區還是擴展的存儲區
data bdata idata,這些,肯定都是片內的。
其它部分:codepdata xdata,就要看你買到的單片機晶元,是什麼型號。
⑵ 51單片機code的問題(RAM和ROM)+50
1,把段碼放在code里,是為了節省RAM。如果放在前256位元組內,查表時只要八位地址即可,所以會快些。ROM讀取不會慢。單片機執行的每一條指令都是從ROM區讀取的。
ROM區的內容是只讀的,所以你不能將改變(程序運行中改變)的數組放進去。
2,單片機源程序首先要經過編譯,生成機器碼,下載到單片機中才可以運行,編譯C程序時,從main()開始編譯,如果main()程序中用到main()前面的程序,就會編譯進去。然後下載到單片機ROM區。也就是燒到ROM區,在單片機運行中用到的變數,會放在RAM區。
3,局部就量或全局就量,都是放在RAM區的,因為RAM區可以讀寫,這樣才可以保存臨時數據。for(i=1;i<9;i++)前面肯定會有定義i,如 char i;單片機碰到char i;就會在RAM區分配一個位元組,8bit給i用。然後再執行for(i=1;i<9;i++),這時i是可變的,因為執行的是RAM區的i地址內放的數據。
4,你理解的對,補充一下。全局變數一般佔用RAM區較高位,如從32H開始,根據編譯器不同而不同。且所佔用RAM一直佔用。局部變數一般臨時存放在REGISTER中,執行速度較快。且當子程序執行完畢,資源回收。
上例是那個for循環就是用的局部變數,存放在寄存器中的,子程序執行完畢,寄存器可用作他用。
希望能回答你的問題。
⑶ 51單片機中能不能創建一個鏈表在code區
一般的51單片機的CODE區是唯讀的,所以只能在編譯的時候先創建好鏈表,但有些支持IAP的51則可以動態的創建,不過對CODE區來說,寫入速度沒有DATA區快,而且有壽命問題。
⑷ 求助51單片機C程序code問題
如果定義在code也就是rom區(硬碟),數組里的個數就跟硬碟的大小有關系,如果說你的ROM足夠大,可以存很多個。
至於為什麼讀到255就回到開始,那麼這個取決於你讀取數據的方法。可能定義的變數為unsigned char型。那麼剛好最大就是255.
⑸ 51單片機code地址范圍為
地址范圍是8751,89X51,一般是EPROM,EEPROM:4K,0000H~0FFFH。
⑹ C51單片機中code有什麼用
你說的是在定義一組數組時,可以作為數據表格時,就用code 語句,意思是這些數據放在程序存儲器中。
如下:
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
這就是典型的用法,這是定義一組數據,即為數碼管的段碼表,因都是常數,就可以放在程序存儲區。
如果沒有code 就放在數據存儲區了,但是,因單片機的內部RAM容量比較小,像這樣的常數就不必放在RAM數據區,以節省RAM數據區的使用。
⑺ 對51單片機進行編程時,定義數組前面加code的作用是什麼
1、你可以通過外接RAM來擴展,最多可擴展到64KByte,外存使用MOVX指令或者是使用xdata進行強制申明為外部RAM。
2、購買新型的單片機,例如STC的89C51系列的單片機都已經內部擴展了RAM,可以有1KB
⑻ 51單片機code類型 數組式指針
這個要理清楚加不加code的區別。
不加code,變數是存在片內RAM裡面,就是通常意義上的變數,是運行時才從RAM裡面分配的,可以在代碼中修改變數的值。
加code,雖然寫法上是變數,實際上是存儲在ROM裡面的,就是在程序燒寫到單片機時已經分配好了,就是固定的常量,不能在代碼中對其值進行修改的。
加不加code區分以後就很好解釋了,語句4加code,在燒寫進去時是必須定好的常量,語句 1 2 3就必須加code,因為不能在燒寫程序時的ROM空間的指針指向尚未初始化的RAM內容。語句4不加code,在運行後分配的RAM指針指向不加code的RAM空間也行,指向加code的ROM空間也行。
⑼ 這是51單片機編程語言。這個code是什麼作用在C語言中怎麼沒有
因為單片機RAM很有限,這些數組里的內容是不變的,所以將他們保存到ROM中,CODE關鍵字的作用就是告訴編譯器把這些內容寫到ROM中