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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC單片機(jī)內(nèi)部擴(kuò)展RAM的應(yīng)用

          STC單片機(jī)內(nèi)部擴(kuò)展RAM的應(yīng)用

          作者: 時(shí)間:2011-09-28 來源:網(wǎng)絡(luò) 收藏

            RAM是用來在程序運(yùn)行中存放隨機(jī)變量的數(shù)據(jù)空間,51單片機(jī)默認(rèn)的內(nèi)部RAM只有128字節(jié),52單片機(jī)增加至256字節(jié),STC89C52增加到512字節(jié),STC89C54、55、58、516等增加到1280字節(jié),對(duì)于編程者來說,一個(gè)芯片的RAM越多,寫起程序來就越容易得心應(yīng)手,不會(huì)總考慮RAM不夠用而擔(dān)心這擔(dān)心那,連過多的變量都不敢定義。

            在前面我們寫程序時(shí)曾講到過,如果定義一個(gè)變量后,不對(duì)這個(gè)變量進(jìn)行初始化,這個(gè)變量默認(rèn)的初值就是0,其實(shí)這個(gè)結(jié)論是需要一定的條件的,在用KEIL編寫程序時(shí),總程序中所有變量占用的字節(jié)之和小于128字節(jié),并且存儲(chǔ)器模式為small模式的前提下,對(duì)定義的變量不進(jìn)行初始化時(shí),編譯器會(huì)默認(rèn)將變量值設(shè)定為0。一旦程序中的總變量超過128字節(jié),必須對(duì)所有變量進(jìn)行初始化,否則,沒有被初始化的變量默認(rèn)值將是不確定的。當(dāng)變量總和超過128字節(jié)時(shí),必須還要在編譯器中重新設(shè)定存儲(chǔ)器的存儲(chǔ)模式,存儲(chǔ)器模式一共有3種,分別為small、compact和large模式,在KEIL編譯器中有選項(xiàng)可進(jìn)行選擇,選項(xiàng)表如圖4.4.1所示。它決定了沒有明確指定存儲(chǔ)類型的變量、函數(shù)參數(shù)等數(shù)據(jù)的默認(rèn)存儲(chǔ)區(qū)域。如果在某些函數(shù)中需要使用非默認(rèn)的存儲(chǔ)模式,也可以使用關(guān)健字直接說明。下面對(duì)這三種模式分別做介紹。

            1. small模式

            small模式中,所有缺省變量參數(shù)均裝入單片機(jī)內(nèi)部128字節(jié)RAM中,當(dāng)定義類似如:uchar a; float b;等變量時(shí),這些變量都裝入內(nèi)部128字節(jié)RAM中。使用該模式的優(yōu)點(diǎn)是訪問速度快,缺點(diǎn)是空間有限,而且是對(duì)堆棧的空間分配比較少,難以把握,碰到需要遞歸調(diào)用的時(shí)候需要小心。所以這種模式只適用于小程序。

            2. compact模式

            compact模式中,所有缺省變量均位于單片機(jī)內(nèi)部256字節(jié)RAM中,和在small模式中使用關(guān)健字pdata來定義變量的效果相同,如:uchar pdata a[100];在該種模式下,程序總變量不得超過256字節(jié),對(duì)于只有128字節(jié)的單片機(jī),使用此模式定義變量超過128字節(jié)時(shí),程序?qū)⒊鲥e(cuò)。優(yōu)點(diǎn)是空間較small模式寬裕,速度較small慢,但較large要快,是一種中間狀態(tài)。

            3. large模式

            在large模式中,所有缺省變量可放在多達(dá)64KB的RAM區(qū),包括內(nèi)部RAM和外部RAM,和使用關(guān)健字xdata來定義變量的效果相同。這種模式的優(yōu)點(diǎn)是空間大,可存變量多,缺點(diǎn)是訪問速度慢,尤其對(duì)于2個(gè)以上的多字節(jié)變量訪問速度來說更是如此。

            方便起見,要訪問時(shí),可直接用以下方法:首先在編譯器中設(shè)置存儲(chǔ)器模式為large模式。

            其次,為安全起見,當(dāng)程序中定義多于128字節(jié)的其它變量時(shí),最好申明為xdata型,如 uchar xdata table[100];意思為定義一個(gè)100個(gè)字節(jié)容量的數(shù)組,將其在中分配存儲(chǔ)空間。另外一定要注意,在large模式下,編寫程序時(shí),定義的變量總數(shù)千萬不要超過對(duì)應(yīng)單片機(jī)的內(nèi)部最大RAM字節(jié)數(shù),因?yàn)榧词钩^了,編譯器也不會(huì)提示錯(cuò)誤,但是程序必定會(huì)出錯(cuò)。



          關(guān)鍵詞: STC單片機(jī) 擴(kuò)展RAM

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉