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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51-數(shù)據(jù)存儲(chǔ)類型

          C51-數(shù)據(jù)存儲(chǔ)類型

          作者: 時(shí)間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
          KEILCx51是面向8051系列單片機(jī)及其硬件控制系統(tǒng)的開發(fā)工具。它定義的任何數(shù)據(jù)類型必須以一定的存儲(chǔ)類型的方式定位在8051的存儲(chǔ)區(qū)中,否則便沒有任何的實(shí)際意義。該編譯器通過將變量、常量定義成不同的存儲(chǔ)類型(data,bdata,idata,pdata,xdata,code)的方法,將他們定位在不同的存儲(chǔ)區(qū)中。

          8051系列單片機(jī)將程序存儲(chǔ)器(ROM,存儲(chǔ)空間)和數(shù)據(jù)存儲(chǔ)器(RAM,運(yùn)算空間)分開,并有各自的尋址方式(針對匯編語言)。8051系列單片機(jī)在物理上有四個(gè)存儲(chǔ)空間:1,片內(nèi)程序存儲(chǔ)空間;2,片外程序存儲(chǔ)空間;3,片內(nèi)數(shù)據(jù)存儲(chǔ)空間;4,片外數(shù)據(jù)存儲(chǔ)空間。
          先講數(shù)據(jù)存儲(chǔ)器。大家都知道8051單片機(jī)數(shù)據(jù)存儲(chǔ)器可劃分為兩大區(qū)域:00H~7FH為片內(nèi)低128字節(jié)RAM區(qū);80H~FFH為特殊功能寄存器區(qū)(SFR)。地址為00H~7FH的低128字節(jié)片內(nèi)RAM區(qū)又可劃分為三個(gè)區(qū)域:

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

          A,通用寄存器區(qū):地址(00H~1FH)通用寄存器區(qū)由4個(gè)寄存器組成:0組(00H~07H),1組(08H~0FH),2組(10H~17H),3組(18H~1FH),每個(gè)寄存器組含有8個(gè)通用寄存器:R0,R1,R2,R3,R4,R5,R6,R7,共有32個(gè)通用寄存器。

          B,可位尋址區(qū):8051系列單片機(jī)RAM的可位尋址區(qū)時(shí)字節(jié)地址位20H~2FH的16字節(jié)單元,共128位。

          C,用戶RAM區(qū):8051系列單片機(jī)片內(nèi)RAM的用戶RAM區(qū)地址位30H~7FH。堆棧也可以設(shè)置在這里。
          再講存儲(chǔ)類型,當(dāng)我們那使用存儲(chǔ)類型data,bdata定義常量和變量時(shí),Cx51編譯器會(huì)將它們定位在片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中(片內(nèi)RAM),不標(biāo)注默認(rèn)是DATA類型。當(dāng)使用code 存儲(chǔ)類型定義數(shù)據(jù)時(shí),Cx51編譯器會(huì)將其定義在代碼空間(ROM或者EPPROM)。當(dāng)使用 xdata 存儲(chǔ)類型定義常量或變量時(shí),Cx51編譯器將其定位在外部數(shù)據(jù)存儲(chǔ)空間(片外RAM)。
          存儲(chǔ)類型 與存儲(chǔ)空間的關(guān)系
          data 直接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問速度快(0X00-0X7F,128字節(jié))
          bdata (bit)可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混合訪問(0X20-0X2F,16字節(jié))
          idata (indirect)間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問片內(nèi)全部RAM空間(8052,256字節(jié))
          pdata (page)分頁尋址外部數(shù)據(jù)存儲(chǔ)區(qū)(256字節(jié))由MOVX @R0訪問
          xdata (extend)片外數(shù)據(jù)存儲(chǔ)區(qū)(64KB),由MOVX @ DPTR訪問。
          Code 代碼存儲(chǔ)區(qū)(64KB),由MOVC @DPTR訪問
          如上,這樣就足夠清晰了。uchar data x和data uchar x相等價(jià)都是在內(nèi)ram區(qū)分配一個(gè)字節(jié)的變量,但是對于指針變量的聲明,因涉及到指針變量本身的存儲(chǔ)位置和指針?biāo)赶虻拇鎯?chǔ)區(qū)位置不同而進(jìn)行相應(yīng)的存儲(chǔ)區(qū)類型關(guān)鍵字設(shè)置是要注意的。在MSTAR的KEIL51編譯工程中,ROM SIZE=CONST+CODE <64K。
          補(bǔ)充:長整型數(shù)與整形數(shù)差別:十進(jìn)制無符號(hào)整常數(shù)的范圍為0~65535,就是int型, 如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“l”來表示的。但長整數(shù)158L和基本整常數(shù)158 在數(shù)值上并無區(qū)別,這是因?yàn)橹徊贿^一個(gè)用長整形裝,一個(gè)用整形裝,就像兩顆蛋,一顆用小碗裝,一個(gè)用大碗,但他們還是同樣是蛋,在數(shù)值上并無區(qū)別!



          評論


          技術(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); })();