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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機 RAM 數(shù)據(jù)存儲區(qū)

          51單片機 RAM 數(shù)據(jù)存儲區(qū)

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          1.RAM keil C語言編程

          2.片內(nèi)數(shù)據(jù)存儲區(qū)

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

          (1) 工作寄存器區(qū)

          工作寄存器區(qū)位于片內(nèi)數(shù)據(jù)存儲器中的00H~1FH單元,共32字節(jié)( 如此說來每個單元是一個字節(jié)了 ),分成四組。每組8個字節(jié),分別記為R0~R7.

          編號起終地址寄存器名備注
          1其占據(jù)的物理地址為00H~07H對應(yīng)于指令中的R0~R70區(qū)工作寄存器組
          2其占據(jù)的物理地址為08H~0FH對應(yīng)于指令中的R0~R71區(qū)工作寄存器組
          3其占據(jù)的物理地址為10H~17H對應(yīng)于指令中的R0~R72區(qū)工作寄存器組
          4其占據(jù)的物理地址為18H~1FH對應(yīng)于指令中的R0~R73區(qū)工作寄存器組

          程序默認在0區(qū)工作寄存器組存放中間運算數(shù)據(jù)。等待中斷來時,中斷數(shù)據(jù)工作寄存器組由0區(qū)切換到其它區(qū)域。

          選擇四組工作寄存器區(qū)的哪一組作為R0~R7由位于PSW寄存器的兩位RS1,RS0來確定.

          RS1,RS0稱為區(qū)開關(guān)或組開關(guān),兩位就可決定四種狀態(tài).

          RS1RS0工作寄存器組
          00工作寄存器0組
          01工作寄存器1組
          1

          0

          工作寄存器2組
          11工作寄存器3組

          (2)位尋址區(qū)

          用戶存儲區(qū)位于片內(nèi)數(shù)據(jù)存儲器中的020H~02FH單元,共16個字節(jié),共128位,每個字節(jié)單元的位都有一個單獨的地址,分別為00H-07H,如020H.1表示020H單元的bit[1]位。020H~02FH單元可作為位尋址區(qū)。這個范圍內(nèi)的存儲單元最大的用處就是能進行位操作,在C語言中,只能用位操作運算符(&、|、^、~、<<、>>)來對字節(jié)數(shù)據(jù)進行位操作運算。如果用匯編指令就可以直接對此片存儲單片進行位操作。

          如 SETB, 020H.1 就將020H的bit[1]置為了1.

          除了RAM此片能進行位尋址的用戶存儲區(qū)以外,還有一些特殊的功能寄存器( SFR )也能進行位尋址。

          (3)數(shù)據(jù)緩沖區(qū)

          51系列數(shù)據(jù)緩沖區(qū)地址為30H-7FH,共80字節(jié)。只能字節(jié)尋址,不能位尋址。由于工作寄存器和位尋址區(qū),數(shù)據(jù)緩沖區(qū)是統(tǒng)一編址的,所以這三者都可以用作數(shù)據(jù)緩沖區(qū)。

          (4)堆,棧

          棧:由系統(tǒng)自動分配釋放,存局部值。

          堆:一般由程序員分配和釋放(在C中用malloc/free操作)。

          棧指針SP:8位寄存器,棧最大可達128單元,只可在片內(nèi)RAM中進行棧操作。

          棧作用:用來保存地址、數(shù)據(jù)信息、具有先進后出特性,也是一種能存放二進制數(shù)據(jù)的空間。

          MC51棧采用滿頂法向上生成的軟件堆棧。

          軟件棧:借助SP進行控制操作。

          棧向上生長:新壓棧的數(shù)據(jù)成為棧頂。

          棧向下生長:新壓入的數(shù)據(jù)遠離棧頂。

          地址大小還得看存儲方式。

          (5)專用寄存器區(qū)

          專用寄存器區(qū),也稱特殊功能寄存器區(qū) SFR

          SPECIAL FUNCTIONREGISTER

          尋址地址離散地分布在80H~FFH,共128字節(jié)的空間.而實際有用的只有21個字節(jié),即在這一空間里只有18個專用功能寄存器,其中有3個專用功能寄存器占用了兩個字節(jié).SFR主要用于片內(nèi)硬件的管理,通常只能以字節(jié)為單位借助于MOV指令直接尋址,但也有一些專用功能寄存器可以位尋址。

          包含程序狀態(tài)字PSW、數(shù)據(jù)指針寄存器DPTR、端口地址P0-P0、其它專用寄存器(累加器A、B)

          3.片外數(shù)據(jù)存儲區(qū)

          片外RAM區(qū):可尋空間為共64K 0000H~FFFFH,

          總是使用MOVX類指令尋址

          借助于工作寄存器R0或R1間接尋址時,可尋256字節(jié)

          從片外RAM區(qū)取數(shù)據(jù):MOVX A,@Rii=0-1

          向片外RAM區(qū)存數(shù)據(jù):MOVX @Ri,A

          借助16位的數(shù)據(jù)指針DPTR間接尋址,可尋64K字節(jié):

          從片外RAM區(qū)取數(shù)據(jù):MOVX A,@DPTR

          向片外RAM區(qū)存數(shù)據(jù):MOVX @DPTR,A

          <此段摘抄,防后會使用>

          區(qū)分是訪問內(nèi)部存儲器還是外部存儲器地址靠指令來區(qū)分。

          這里,片內(nèi)的存儲區(qū)即常念叨的“寄存器”,片外的ram存儲區(qū)即指“系統(tǒng)內(nèi)存”。

          Note Over。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();