新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 80c51內部RAM空間分配

        80c51內部RAM空間分配

        作者: 時間:2016-11-09 來源:網絡 收藏
        keil編譯的時候,在開始時候會清零所有內存.在main之前,所以,只要復位,內存肯定是0


        MCS-51單片機的內部數據存儲器在物理上和邏輯上都分為兩個地址空間,即:
        數據存儲器空間(低128單元),“用戶可用的”;
        特殊功能寄存器空間(高128單元);
        這兩個空間是相連的,從用戶角度而言,低128單元才是真正的數據存儲器。下面我們就來詳細的與大家講解一下:
        低128單元:
        片內數據存儲器為8位地址,所以最大可尋址的范圍為256個單元地址,對片外數據存儲器采用間接尋址方式,R0、R1和DPTR都可以做為間接尋址寄存器,R0、R1是8位的寄存器,即R0、R1的尋址范圍最大為256個單元,而DPTR是16位地址指針,尋址范圍就可達到64KB。也就是說在尋址片外數據存儲器時,尋址范圍超過了256B,就不能用R0、R1做為間接尋址寄存器,而必須用DPTR寄存器做為間接尋址寄存器。
        1、通用寄存器區(00H-1FH)
        在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那么在程序中怎么區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程序狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的D3和D4位(RS0和RS1),即可選中這四組通用寄存器。程序中并不需要用4組,那么其余的可用做一般的數據緩沖器,CPU在復位后,選中第0組工作寄存器。
        2、位尋址區(20H-2FH)
        片內RAM的20H—2FH單元為位尋址區,既可作單元用字節尋址,也可對它們的位進行尋址。位尋址區共有16個字節,128個位,位地址為00H—7FH。

        CPU能直接尋址這些位,執行例如置“1”、清“0”、求“反”、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為尋址區。
        3、用戶RAM區(30H-7FH)
        在片內RAM低128單元中,通用寄存器占去32個單元,位尋址區占去16個單元,剩下的80個單元就是供用戶使用的一般RAM區了,地址單元為30H-7FH。對這部份區域的使用不作任何規定和限制,但應說明的是,堆棧一般開辟在這個區域。
        高128單元:(80H-FFH)
        前面提到,在片內的RAM中,高128位是專用寄存器區,因這節比較重要,所以我們單獨的安排一節課跟大家介紹。下節課我們就重點介紹51單片機片內RAM的高128位,即專用寄存器區



        data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。

        idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好)
        bdata:它只是說明你定義的變量儲存在可位尋址區域

        xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

        pdata:外部擴展RAM的低256個字節

        bit和sbit都是C51擴展的變量類型
        bit位標量是C51編譯器一種擴充數據類型,它的值是一個二進制位,不是0就是1
        sbit 可定義可位尋址對象.如訪問特殊功能寄存器中的某位


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阜新| 绩溪县| 隆德县| 环江| 根河市| 贵南县| 曲松县| 广西| 明星| 峨边| 涿鹿县| 任丘市| 佛学| 凤庆县| 芒康县| 色达县| 洪雅县| 东乡县| 定远县| 乌什县| 东兴市| 遂川县| 布尔津县| 于田县| 惠来县| 左云县| 丹江口市| 大同县| 鹤壁市| 元阳县| 安新县| 柘城县| 韩城市| 浮山县| 通河县| 虎林市| 盖州市| 时尚| 新竹县| 安西县| 伊吾县|