新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)C語言學(xué)習(xí)筆記3: 存儲(chǔ)器結(jié)構(gòu)

        51單片機(jī)C語言學(xué)習(xí)筆記3: 存儲(chǔ)器結(jié)構(gòu)

        作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        MCS-51單片機(jī)在物理結(jié)構(gòu)上有四個(gè)存儲(chǔ)空間:

        1、片內(nèi)程序存儲(chǔ)器
        2、片外程序存儲(chǔ)器
        3、片內(nèi)數(shù)據(jù)存儲(chǔ)器
        4、片外數(shù)據(jù)存儲(chǔ)器



        但在邏輯上,即從用戶的角度上,8051單片機(jī)有三個(gè)存儲(chǔ)空間:

        1、片內(nèi)外統(tǒng)一編址的64K的程序存儲(chǔ)器地址空間(MOVC)
        2、256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器的地址空間(MOV)
        3、以及64K片外數(shù)據(jù)存儲(chǔ)器的地址空間(MOVX)
        在訪問三個(gè)不同的邏輯空間時(shí),應(yīng)采用不同形式的指令(具體我們在后面的指令系統(tǒng)學(xué)習(xí)時(shí)將會(huì)講解),以產(chǎn)生不同的存儲(chǔ)器空間的選通信號(hào)。



        程序內(nèi)存ROM

        尋址范圍:0000H ~ FFFFH容量64KB
        EA = 1,尋址內(nèi)部ROM;EA = 0,尋址外部ROM
        地址長度:16位
        作用:存放程序及程序運(yùn)行時(shí)所需的常數(shù)。
        七個(gè)具有特殊含義的單元是:
        0000H ——系統(tǒng)復(fù)位,PC指向此處;
        0003H ——外部中斷0入口
        000BH —— T0溢出中斷入口
        0013H ——外中斷1入口
        001BH —— T1溢出中斷入口
        0023H ——串口中斷入口
        002BH —— T2溢出中斷入口











        注意:

        ①但要注意的是8051內(nèi)部數(shù)據(jù)存儲(chǔ)器是256byte(字節(jié))。訪問低128B可以直接尋址也可以間接尋址,訪問8052內(nèi)部數(shù)據(jù)存儲(chǔ)器高128B時(shí)只能間接尋址(MOV @R0、@R1、DPTR),訪問特殊功能寄存器區(qū)SFR時(shí)只能直接尋址(MOV A,80H)。











        ②外部RAM是通過單片機(jī)外部總線連接的,有可能在片內(nèi)。如STC89C58RD+有1280B(字節(jié))位于片內(nèi)的外部SRAM



        再可以通過這個(gè)圖了解51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)









        變量定義及其存儲(chǔ)模式

        C語言中變量要“先聲明后使用”。

        變量定義格式:

        [存儲(chǔ)種類]數(shù)據(jù)類型[存儲(chǔ)器類型]變量名表;

        存儲(chǔ)種類:自動(dòng)(auto)、外部(extern)、靜態(tài)(static)、寄存器(register)

        存儲(chǔ)器類型:

        data可直接尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128字節(jié))。1個(gè)或2個(gè)指令周期,訪問速度較快。

        bdata可位尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(16字節(jié))。

        idata間接訪問的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(256字節(jié))。

        pdata分頁尋址的片外存儲(chǔ)器RAM(256字節(jié))——不常用。

        xdata片外數(shù)據(jù)存儲(chǔ)器RAM(64k字節(jié))至少3個(gè)指令周期。

        code程序存儲(chǔ)器ROM(64k字節(jié))









        注意:訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器(data,bdata,idata)比訪問片外數(shù)據(jù)存儲(chǔ)器(xdata,pdata)相對要快一些,因此可將經(jīng)常使用的變量至于片內(nèi)數(shù)據(jù)儲(chǔ)存器,而將規(guī)模較大的,或不常使用的數(shù)據(jù)至于片外數(shù)據(jù)儲(chǔ)存器中。





        如果在變量定義時(shí)略去存儲(chǔ)類型標(biāo)識(shí)符,編譯器會(huì)自動(dòng)選擇默認(rèn)的存儲(chǔ)類型。編譯時(shí)使用的存儲(chǔ)器模式small、compact或large來規(guī)定默認(rèn)存儲(chǔ)器類型。



        SMALL:參數(shù)及局部變量放入片內(nèi)數(shù)據(jù)存儲(chǔ)器(data);

        COMPACT:參數(shù)及局部變量放入分頁片外數(shù)據(jù)存儲(chǔ)器(pdata);

        LARGE:參數(shù)及局部變量放入片外數(shù)據(jù)存儲(chǔ)器(xdata);









        Keil中Option for Target ‘Target1’選項(xiàng)



        51單片機(jī)外部程序存儲(chǔ)器(ROM)和外部數(shù)據(jù)存儲(chǔ)器(RAM)的總線擴(kuò)展電路圖









        參考資料:

        1)8051單片機(jī)的存儲(chǔ)器結(jié)構(gòu)

        group.ednchina.com/377/3646.aspx

        2)Keil C51 Compiler Basics - The 8051 Architecture

        http://www.esacademy.com/automation/docs/c51primer/c02.htm

        3)單片機(jī)C語言日記九——登山的人ednchina blog

        http://blog.ednchina.com/klyzh2003/190102/message.aspx

        4)在51系列中data,idata,xdata,pdata的區(qū)別

        http://blog.ednchina.com/liyanesd/5800/message.aspx


        評論


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

        關(guān)閉
        主站蜘蛛池模板: 南康市| 资溪县| 威信县| 西贡区| 梅河口市| 天全县| 元阳县| 特克斯县| 日土县| 德安县| 西吉县| 普格县| 昭苏县| 眉山市| 湟中县| 阳高县| 嘉定区| 肥城市| 沈丘县| 东至县| 巢湖市| 兴城市| 苏尼特右旗| 会同县| 麻城市| 新建县| 仙居县| 深州市| 乌苏市| 武功县| 南安市| 融水| 儋州市| 牡丹江市| 临海市| 垣曲县| 竹溪县| 台南市| 含山县| 德阳市| 和静县|