在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            單片機(jī)RAM的用法

            作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
            任何一本單片機(jī)的數(shù)據(jù)都不會(huì)不提存儲(chǔ)器的問題,但是沒有基本能說的讓人一下就領(lǐng)悟過來(lái)。菜鳥時(shí)候的特權(quán)也是一知半解的過來(lái)的,我想如果讀51的存儲(chǔ)器(主要是RAM)做一下歸納,列一張表,我想一定會(huì)讓初學(xué)者少走很多彎路,希望這張表還有下面的一些個(gè)人的經(jīng)驗(yàn)只談能給你一些啟迪。也許有些地方說的不是很專業(yè),或者說是表達(dá)不太合適,很歡迎各路高手拍磚指正。EDN這個(gè)大家庭就是讓我們互相學(xué)習(xí)共同進(jìn)步的樂土!

            本文引用地址:http://www.biyoush.com/article/201611/322419.htm

            51單片機(jī)存儲(chǔ)區(qū)分配如下:

            存儲(chǔ)區(qū)

            地址范圍

            功能說明

            內(nèi)部RAM

            (256Byte)

            00H-1FH

            內(nèi)部使用DATA區(qū),四個(gè)工作寄存器組(4*8=32Byte),用于內(nèi)部參數(shù)傳遞

            20H-2FH1

            BDATA區(qū),DATA 區(qū)的16 個(gè)字節(jié)的可位尋址區(qū)

            30H-7FH2

            用戶可用非位尋址DATA區(qū),可在一個(gè)周期內(nèi)直接尋址

            80H-FFH

            IDATA區(qū),用戶可用的內(nèi)部RAM 區(qū)的高128 個(gè)字節(jié),必須采用間接尋址

            80H-FFH3

            可以進(jìn)行位尋址的特殊功能寄存器(SFR)

            外部擴(kuò)展RAM

            (最大64KByte)

            00H-FFH

            PDATA區(qū),外部存儲(chǔ)區(qū)的256 個(gè)字節(jié)通過P0 口的地址對(duì)其尋址,需要兩個(gè)指令周期

            00H-FFFFH4

            XDATA區(qū)(外部存儲(chǔ)區(qū)),使用DPTR 尋址

            ROM

            (最大64KByte)

            00H-FFFFH

            CODE區(qū)(程序存儲(chǔ)區(qū)),使用DPTR 尋址

            對(duì)上表的一些說明:

            1編程定義為: uchar bdata test;

            所謂的可位尋址,如果你這么用:if(test^0)…else…;我的經(jīng)驗(yàn)告訴我編譯出來(lái)的程序會(huì)出錯(cuò)的。

            我們一般可以這么用:

            先做一個(gè)位定義:sbit test0 = test^0;

            然后再程序中使用:if(test0)…else…;表示判斷test的第0bit位的值,然后執(zhí)行相應(yīng)程序。其它位的用法類似。

            2編程定義為: uchar data test;

            因?yàn)閐ata區(qū)時(shí)直接存取存儲(chǔ),也就是說它在編程的時(shí)候最快的RAM區(qū),所以我們往往把使用最頻繁或者說對(duì)實(shí)時(shí)性要求高的數(shù)據(jù)都定義在data區(qū)(keil C中是可以設(shè)置優(yōu)先存放RAM區(qū)的)。

            Data區(qū)包括了4個(gè)工作寄存器組(32Byte)、位尋址區(qū)(16Byte)、用戶data區(qū)(80Byte)。其實(shí)位尋址區(qū)也應(yīng)該歸類到用戶可用data區(qū)中,所以一般用戶可以使用的直接尋址的RAM為96Byte。而實(shí)際上,一種比較極端的情況,因?yàn)閱纹瑱C(jī)工作時(shí)只使用4組工作寄存器組中的一組,我們可編程的data區(qū)可以有120Byte(我在keilC下編譯測(cè)試的結(jié)果是,只有在不使用bdata的情況下才可以定義120Byte的data區(qū)數(shù)據(jù))。

            3編程定義為: uchar idata test;

            如果你沒有完全弄懂一個(gè)MPU的SFR,那么只能說你沒有弄懂這個(gè)MPU了。所以這里不細(xì)說單片機(jī)的SFR,只提一點(diǎn),它的地址是和IDATA區(qū)重疊的,單片機(jī)內(nèi)部時(shí)通過區(qū)分所訪問的存儲(chǔ)區(qū)來(lái)解決地址重疊問題的,因?yàn)镮DATA 區(qū)只能通過間接尋址來(lái)訪問。在我們的實(shí)時(shí)性要求不那么高,或者DATA區(qū)不夠用的情況下我們就應(yīng)該啟用IDATA區(qū)。

            4編程定義為:ucharxdataLD_at_0x7f;

            也可以這么使用:(需包含頭文件absacc.h)

            A = XBYTE[0x8100]; //從地址8100H讀一個(gè)字節(jié)

            B = *((char xdata *) 0x0000); // 從地址0000H讀一個(gè)字節(jié)

            XBYTE[0x7500] = 0xf0; // 寫一個(gè)字節(jié)到7500H

            P2和P0口為16bit的地址總線接口,P0口為數(shù)據(jù)總線口,數(shù)據(jù)和地址時(shí)分時(shí)傳輸?shù)摹?/p>

            51單片機(jī)的最后一個(gè)存儲(chǔ)空間為64K, 和CODE 區(qū)一樣采用16 位尋址,屬于外部數(shù)據(jù)存儲(chǔ)區(qū),即XDATA區(qū)。這個(gè)區(qū)通常包括一些RAM器件(如SRAM)或是一些需要通過總線接口的外圍器件(特權(quán)在以前的BLOG里多次談過這個(gè)擴(kuò)展RAM的問題,這里也不多涉及了)。對(duì)XDATA的讀寫操作需要至少兩個(gè)處理周期來(lái)裝入地址,而讀寫又需要兩個(gè)處理周期。



            關(guān)鍵詞: 單片機(jī)RA

            評(píng)論


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

            關(guān)閉