<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          MCS51存儲器訪問相關

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/315543.htm

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

          0000H —— 系統(tǒng)復位,PC指向此處;

          0003H —— 外部中斷0入口

          000BH —— T0溢出中斷入口

          0013H —— 外中斷1入口

          001BH —— T1溢出中斷入口

          0023H —— 串口中斷入口

          002BH —— T2溢出中斷入口

          數(shù)據(jù)存儲空間:

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

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

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

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

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

          低128單元:

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

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

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

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

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

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

          RAM位尋址區(qū)地址表

          單元地址

          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能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為尋址區(qū)。

          3、用戶RAM區(qū)(30H-7FH)

          在片內(nèi)RAM低128單元中,通用寄存器占去32個單元,位尋址區(qū)占去16個單元,剩下的80個單元就是供用戶使用的一般RAM區(qū)了,地址單元為30H-7FH。對這部份區(qū)域的使用不作任何規(guī)定和限制,但應說明的是,堆棧一般開辟在這個區(qū)域。

          高128單元:(80H-FFH)

          前面提到,在片內(nèi)的RAM中,高128位是專用寄存器區(qū),因這節(jié)比較重要,所以我們單獨的安排一節(jié)課跟大家介紹。下節(jié)課我們就重點介紹51單片機片內(nèi)RAM的高128位,即專用寄存器區(qū)。



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();