色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          8051系列單片機(jī)將程序存儲(chǔ)器(ROM,存儲(chǔ)空間)和數(shù)據(jù)存儲(chǔ)器(RAM,運(yùn)算空間)分開,并有各自的尋址方式(針對(duì)匯編語(yǔ)言)。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://cafeforensic.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ū),訪問(wèn)速度快(0X00-0X7F,128字節(jié))
          bdata (bit)可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混合訪問(wèn)(0X20-0X2F,16字節(jié))
          idata (indirect)間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)片內(nèi)全部RAM空間(8052,256字節(jié))
          pdata (page)分頁(yè)尋址外部數(shù)據(jù)存儲(chǔ)區(qū)(256字節(jié))由MOVX @R0訪問(wèn)
          xdata (extend)片外數(shù)據(jù)存儲(chǔ)區(qū)(64KB),由MOVX @ DPTR訪問(wèn)。
          Code 代碼存儲(chǔ)區(qū)(64KB),由MOVC @DPTR訪問(wèn)
          如上,這樣就足夠清晰了。uchar data x和data uchar x相等價(jià)都是在內(nèi)ram區(qū)分配一個(gè)字節(jié)的變量,但是對(duì)于指針變量的聲明,因涉及到指針變量本身的存儲(chǔ)位置和指針?biāo)赶虻拇鎯?chǔ)區(qū)位置不同而進(jìn)行相應(yīng)的存儲(chǔ)區(qū)類型關(guān)鍵字設(shè)置是要注意的。在MSTAR的KEIL51編譯工程中,ROM SIZE=CONST+CODE <64K。
          補(bǔ)充:長(zhǎng)整型數(shù)與整形數(shù)差別:十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為0~65535,就是int型, 如果使用的數(shù)超過(guò)了上述范圍,就必須用長(zhǎng)整型數(shù)來(lái)表示。長(zhǎng)整型數(shù)是用后綴“L”或“l”來(lái)表示的。但長(zhǎng)整數(shù)158L和基本整常數(shù)158 在數(shù)值上并無(wú)區(qū)別,這是因?yàn)橹徊贿^(guò)一個(gè)用長(zhǎng)整形裝,一個(gè)用整形裝,就像兩顆蛋,一顆用小碗裝,一個(gè)用大碗,但他們還是同樣是蛋,在數(shù)值上并無(wú)區(qū)別!



          評(píng)論


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

          關(guān)閉