51單片機ram區域劃分
51單片機ram區域劃分
51單片機的RAM分為片內和片外,標準的51內核是0x00~0x7F一共128B,而現在的大多數半導體廠商開發的51係列單片機都帶了擴展片內RAM,即片內RAM區域一般是從0x00到0xFF一共256B。隨著功能需求越來越多,程序量越來越大,那片內這256B也不夠用了,因此又擴展了片外RAM,片外RAM的預留比較大,最大可以從0x0000到0xFFFF一共64KB,當然了,每個具體型號有多大不一定,具體看通過芯片的手冊來了解。
而現在的51單片機的片外RAM, “片外”隻是一個名詞而已,實際上很多也是直接做到了單片機內部,但是訪問地址,還是以外部的起始地址的方式。就是說,片內RAM的地址從0x00到0xFF,而片外是從0x0000到0xFFFF;其中最開始的256B是重複的地址,這部分通常情況下隻要RAM夠用就可以不理會,軟件編譯器會自動給我們處理好。當選默認small模式,優先使用內部的前128B,而選Large模式,優先使用的是片外的64K。因此上麵那個同學的問題就在這裏了,因為他用的是AT89S51單片機,而這個單片機是沒有片外RAM的,如果選擇了Large模式,那優先使用的是片外,因此編譯完成,下載到單片機裏,程序運行時用了這個單片機所沒有的區域,那肯定就不行了。
通常KEIL C51語言中的以下幾個關鍵字,代表了RAM不同區域的劃分:
data:片內RAM從0x00~0x7F
idata:片內RAM從0x00~0xFF
pdata:片外RAM從0x00~0xFF
xdata:片外RAM從0x0000~0xFFFF
其中,data是idata的一部分,pdata是xdata的一部分。這個問題我們可以不關心,隻和彙編編程有關。
那如果選擇了small模式,我們定義一個變量a:unsigned char a = 0;他是默認保存在data區域,這個時候data是可以省略,但是我們想定義到xdata區域,就必須前邊加xdata關鍵字:unsigned char xdata a = 0;
如果選擇large模式,unsigned char a = 0;是定義在片外xdata區域,如果要定義在片內就必須加data關鍵字。
但是在RAM夠用的情況下,我們優先使用data的,其次使用idata關鍵字,再次使用pdata關鍵字,最後使用xdata。這個和底層訪問指令有關係,用前邊的讀寫速度要快一些,比如pdata訪問是單字節地址,而xdata是雙字節地址,訪問速度就慢了。
初學單片機從51入門的好處 | |
51單片機是一款已經出現很久的單片機,它的出現可以說是劃時代的。同時期出現的其它單片機都已經逐漸退出曆史的舞台,而它卻依舊出現在某些專業的教材上。從這點來看,它依舊有其學習的意義。下麵說說初學單片機從51入門的好處。 51單片機的學習資源非常多... |
如何使用C語言控製硬件 | |
C語言的應用編程在單片機的領域占了很大一部分,使用的比較多的51單片機和STM32單片機都可以使用MDK軟件編寫固件。 單片機燒寫了固件後可以點亮LED燈,可以驅動ADC檢測電壓,也可以驅動蜂鳴器發聲,這就是簡單地控製硬件。稍微複雜一點的,可以驅動NRF2401進... |
c語言怎麼讀取一個變量的二進製文件內容 | |
C語言是一種高級語言,很多設置都為了符合我們程序員的理解做了相應的調整。機器對於變量的理解是基於電路,也就是所謂的高低電平。也是因為這個出現了一個二進製。 而人類的計數更喜歡使用十進製,有專家說是因為是人類當初計數使用的手指,這樣十進製比較... |
單片機為啥叫單片機 | |
1、MCU 我一般在工作計劃和原理圖的說明上,就直接將STM32或者STC89的單片機,標注為MCU。 無論是理解為Micro CPU,還是Microcontroller Unit,我認為都行,也沒有仔細去區分去過。自從32位單片機出來後,一些單片機設計的係統確實是具備部分電腦的功能。 你... |
16位單片機低端打不過8位高端打不過32位怎 | |
有時間去了解一下TI的MPS係列的單片機,它的低功耗和8位的51還有32位的STM32還是有一定的區別度的。 就比如MSP430係列,一些醫療的應用也少不了它,其各種低功耗的應用和例子一抓一大把。 也許從價格上來說,感覺,8位的便宜好買;從性能上來說,感覺,32位的... |
- 單片機和嵌入式哪個好
- 單片機重要特性含義解讀
- 單片機三總線結構及時序分析
- 單片機沒有PWM外設也可以做可調占空比
- 開源硬件arduino是什麼
- 標誌寄存器中的狀態標誌和控製標誌
- at89c51和stc12c5a60s2的引腳的區別
- 學習51單片機要用到哪些硬件工具
- 單片機定時的時間怎麼改變
- 單片機自動斷電或關機電路圖講解
- 串口的波特率如何計算?串口通信波特率計
- 單片機波特率計算公式和方法
- 51單片機ram區域劃分
- spi時序圖怎麼看?spi時序圖閱讀方法
- 51單片機怎麼顯示出數字的?單片機數碼管
- 51單片機有幾個中斷源_52單片機中斷源
- 嵌入式係統的評價方法
- AT89C51單片機為核心的時鍾電路的程序設
- stm32學到什麼程度叫精通
- 用STM32隻會庫函數不會用寄存器有影響嗎