新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MCS51存儲器訪問相關

        MCS51存儲器訪問相關

        作者: 時間:2016-11-17 來源:網絡 收藏
        程序存儲空間:存放程序及程序運行時所需的常數。

        51的程序存儲空間尋址地址長度有16位,可尋址64KB大小的OTP ROM或FLASH空間,其中這16位的地址線,有8位的地址線可用于內部ROM的擴展,所以內部ROM最大的尋址空間為4KB。或者16位的地址空間全部用于片外擴展,這取決于EA腳置1或置0,當EA腳置1是程序從片內ROM開始執行,當PC值超過片內ROM容量時會自動轉向外部ROM空間,當EA腳置0時程序直接從外部存儲器開始執行,例如前面提到的片內無ROM的8031單片機,在實際應用中就要把8031的引腳接為低電平。其中該程序地址空間有七個地址單元用于中斷向量:如下:每個向量包含8個地址單元

        本文引用地址:http://www.104case.com/article/201611/315543.htm

        七個具有特殊含義的單元是:

        0000H —— 系統復位,PC指向此處;

        0003H —— 外部中斷0入口

        000BH —— T0溢出中斷入口

        0013H —— 外中斷1入口

        001BH —— T1溢出中斷入口

        0023H —— 串口中斷入口

        002BH —— T2溢出中斷入口

        數據存儲空間:

        數據存儲器也稱為隨機存取數據存儲器。數據存儲器分為內部數據存儲和外部數據存儲。MCS-51內部RAM有128或256個字節的用戶數據存儲(不同的型號有分別),片外最多可擴展64KB的RAM,構成兩個地址空間,訪問片內RAM用“MOV”指令,訪問片外RAM用“MOVX”指令。它們是用于存放執行的中間結果和過程數據的。MCS-51的數據存儲器均可讀寫,部分單元還可以位尋址。

        MCS-51單片機的內部數據存儲器在物理上和邏輯上都分為兩個地址空間,即:

        數據存儲器空間(低128單元);

        特殊功能寄存器SFR空間(高128單元), 而與SFR重合的DATA空間因為只能做成間接尋址(indirect),所以叫iDATA空間;

        這兩個空間是相連的,從用戶角度而言,低128單元才是真正的數據存儲器。下面我們就來詳細的與大家講解一下:

        低128單元:

        片內數據存儲器為8位地址,所以最大可尋址的范圍為256個單元地址,對片外數據存儲器采用間接尋址方式,R0、R1和DPTR都可以做為間接尋址寄存器,R0、R1是8位的寄存器,即R0、R1的尋址范圍最大為256個單元,而DPTR是16位地址指針,尋址范圍就可達到64KB。也就是說在尋址片外數據存儲器時,尋址范圍超過了256B,就不能用R0、R1做為間接尋址寄存器,而必須用DPTR寄存器做為間接尋址寄存器。

        < xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />

        從上圖中我們可以看到,8051單片機片內RAM共有256個單元(00H-FFH),這256個單元共分為兩部分。其一是地址從00H—7FH單元(共128個字節)為用戶數據RAM。從80H—FFH地址單元(也是128個字節)為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。

        1、通用寄存器區(00H-1FH)

        在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那么在程序中怎么區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程序狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的D3和D4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關系如下表所示。惹程序中并不需要用4組,那么其余的可用做一般的數據緩沖器,CPU在復位后,選中第0組工作寄存器。

        組< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

        RS1 RS0

        R0

        R1

        R2

        R3

        R4

        R5

        R6

        R7

        0

        1

        2

        3

        0 0

        0 1

        1 0

        1 1

        00H

        08H

        10H

        18H

        01H

        09H

        11H

        19H

        02H

        0AH

        12H

        1AH

        03H

        0BH

        13H

        1BH

        04H

        0CH

        14H

        1CH

        05H

        0DH

        15H

        1DH

        06H

        0EH

        16H

        1EH

        07H

        0FH

        17H

        1FH

        2、位尋址區(20H-2FH)

        片內RAM的20H—2FH單元為位尋址區,既可作為一般單元用字節尋址,也可對它們的位進行尋址。位尋址區共有16個字節,128個位,位地址為00H—7FH。位地址分配如下表所示:

        RAM位尋址區地址表

        單元地址

        MSB位地址LSB

        2FH

        7FH

        7EH

        7DH

        7CH

        7BH

        7AH

        79H

        78H

        2EH

        77H

        76H

        75H

        74H

        73H

        72H

        71H

        70H

        2DH

        6FH

        6EH

        6DH

        6CH

        6BH

        6AH

        69H

        68H

        2CH

        67H

        66H

        65H

        64H

        63H

        62H

        61H

        60H

        2BH

        5FH

        5EH

        5DH

        5CH

        5BH

        5AH

        59H

        58H

        2AH

        57H

        56H

        55H

        54H

        53H

        52H

        51H

        50H

        29H

        4FH

        4EH

        4DH

        4CH

        4BH

        4AH

        49H

        48H

        28H

        47H

        46H

        45H

        44H

        43H

        42H

        41H

        40H

        27H

        3FH

        3EH

        3DH

        3CH

        3BH

        3AH

        39H

        38H

        26H

        37H

        36H

        35H

        34H

        33H

        32H

        31H

        30H

        25H

        2FH

        2EH

        2DH

        2CH

        2BH

        2AH

        29H

        28H

        24H

        27H

        26H

        25H

        24H

        23H

        22H

        21H

        20H

        23H

        1FH

        1EH

        1DH

        1CH

        1BH

        1AH

        19H

        18H

        22H

        17H

        16H

        15H

        14H

        13H

        12H

        11H

        10H

        21H

        0FH

        0EH

        0DH

        0CH

        0BH

        0AH

        09H

        08

        H

        20H

        07H

        06H

        05H

        04H

        03H

        02H

        01H

        00H

        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位,即專用寄存器區。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 电白县| 沅江市| 黄骅市| 洛隆县| 石泉县| 沾化县| 宝应县| 苍梧县| 包头市| 清镇市| 青浦区| 若尔盖县| 陵川县| 玉溪市| 宜川县| 奎屯市| 磐安县| 民权县| 青神县| 定结县| 修文县| 龙川县| 宝清县| 金门县| 焉耆| 宜丰县| 竹山县| 菏泽市| 怀安县| 乌鲁木齐市| 西吉县| 布尔津县| 东方市| 东丰县| 黄平县| 阿拉善盟| 镇雄县| 邢台市| 余江县| 绵竹市| 开江县|