《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 其他 > 教程:增強(qiáng)型51單片機(jī)和傳統(tǒng)51單片機(jī)對(duì)比分析

教程:增強(qiáng)型51單片機(jī)和傳統(tǒng)51單片機(jī)對(duì)比分析

2023-01-31
來(lái)源:樂(lè)創(chuàng)客

  前面的內(nèi)容,,我們從傳統(tǒng)的單片機(jī)" target="_blank">51單片機(jī)出發(fā),從硬件的基礎(chǔ)上,,一步步衍生出了增強(qiáng)型51單片機(jī)所增強(qiáng)的地方?,F(xiàn)在我們可以清楚地了解,,增強(qiáng)型51單片機(jī)對(duì)比傳統(tǒng)的51單片機(jī),增強(qiáng)的地方在于存儲(chǔ)器的擴(kuò)展,。而51單片機(jī)對(duì)于片內(nèi)內(nèi)存的尋址方式和片外內(nèi)存的尋址方式有著很大的不同,。因此,我們?cè)谑褂肅語(yǔ)言對(duì)增強(qiáng)型51單片機(jī)編程的時(shí)候,,也需要按照寄存器位置的不同,,采用不同的操作方式。

  1寄存器位于內(nèi)部的特殊功能寄存器區(qū)

  我們之前介紹傳統(tǒng)8051單片機(jī)的時(shí)候,,曾經(jīng)列出了傳統(tǒng)8051單片機(jī)已經(jīng)使用的21個(gè)特殊功能寄存器,,因此擴(kuò)展外設(shè)寄存器的一個(gè)辦法就是利于剩余的特殊功能存儲(chǔ)器空間。

  由于51單片機(jī)的特殊功能寄存器尋址方式只能是直接尋址,,不可間接尋址,,因此在C語(yǔ)言中無(wú)法使用指針的方式去操作這些特殊功能寄存器。因?yàn)閷?duì)于C語(yǔ)言指針來(lái)說(shuō),,它對(duì)應(yīng)的匯編語(yǔ)言是一種間接尋址的方式,?;诖耍珻51在標(biāo)準(zhǔn)的C語(yǔ)言基礎(chǔ)上,,衍生出了一些額外的語(yǔ)法,,如當(dāng)需要定義這些特殊功能寄存器以便于程序訪問(wèn)的時(shí)候,C51加入了一個(gè)關(guān)鍵詞“sfr”,,使用“sfr”關(guān)鍵詞可以將特殊功能寄存器區(qū)的地址,,定義成某個(gè)變量,如“sfr P0 = 0x80;”,,這句語(yǔ)句的意思就是將位于內(nèi)部RAM 0x80地址上的寄存器,,定義成P0,由于0x80位于特殊功能寄存器區(qū),,因此這個(gè)定義是完全合法的,。在后面想要對(duì)P0進(jìn)行操作,只需要在C語(yǔ)言中直接使用“P0”這個(gè)標(biāo)號(hào)即可,。如“P0 = 0xff;”,。

  我們可以打開(kāi)傳統(tǒng)的keil C51頭文件“reg51.h”,可以發(fā)現(xiàn)這個(gè)頭文件中,,將傳統(tǒng)8051的所有寄存器全部定義出來(lái)了,,如圖1所示。

 241.JPG

  圖1傳統(tǒng)8051單片機(jī)的特殊功能寄存器定義

  對(duì)于增強(qiáng)型51單片機(jī)來(lái)說(shuō),,那些被排放在特殊功能寄存器區(qū)的外設(shè)控制寄存器只能使用“sfr”關(guān)鍵詞的方式去定義,,如圖2所示。

240.JPG

  圖2增強(qiáng)型單片機(jī)增加的資源示例

  除了“sfr”關(guān)鍵詞之外,,Keil C51還支持使用“sbit”關(guān)鍵詞定義特殊功能寄存器的某一位,,是因?yàn)?1單片機(jī)是所有單片機(jī)中唯一支持寄存器位尋址的芯片。不過(guò)為了程序方便移植到其它平臺(tái)上去,,對(duì)于這些特殊的關(guān)鍵詞,,還是盡可能將其限制在少量的文件中。

  2寄存器位于內(nèi)部的擴(kuò)展的RAM中

  當(dāng)內(nèi)部的特殊功能寄存器區(qū)用完之后,,如果想要繼續(xù)增加寄存器,,那么唯一可以選擇的空間也就只有特殊功能寄存器以外的區(qū)域了。對(duì)于增強(qiáng)型51單片機(jī)來(lái)說(shuō),,它的內(nèi)存空間刨去特殊功能寄存器區(qū),,還可以給其使用的空間有兩個(gè),一個(gè)是內(nèi)置RAM剩余空間,,還有一個(gè)是內(nèi)置的外擴(kuò)RAM,。

  對(duì)于STC8A8K系列的芯片來(lái)說(shuō),這些寄存器被設(shè)計(jì)到了內(nèi)置的外擴(kuò)RAM上。因此,,對(duì)于這一段內(nèi)存上的寄存器,,我們可以在C語(yǔ)言中使用常量指針的形式去定義,但是,,還是需要使用C51的關(guān)鍵詞“xdata”去聲明這些地址,,當(dāng)然,去優(yōu)化的“volatile”關(guān)鍵詞也不能少,,如圖3所示,。

239.JPG

  圖3內(nèi)置外擴(kuò)SRAM上寄存器的定義



更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。