大家是否思考過一個問題,為什么現(xiàn)在的51單片機在做宣傳的時候,不外乎都是稱作為“增強型51單片機”?與傳統(tǒng)的51單片機相比,究竟哪些地方得到了擴展?在回答這個問題之前,我們先來看一下本書的主角——STC8A8K64S4A12。圖1是傳統(tǒng)51單片機和STC8A8K64S4A12增強型51單片機的資源對比圖。
圖1 傳統(tǒng)MCS-51單片機和增強型51單片機的資源對比圖
通過圖1的資源對比圖我們可以發(fā)現(xiàn),就STC8A8K64S4A12這個增強型51單片機而言,它相比于傳統(tǒng)的51單片機主要在以下幾個方面做了提升:
增大了數(shù)據(jù)存儲器SRAM;
擴大了供電電壓的范圍;
增加了機器周期可配置功能,從而避免了外部晶振12分頻的問題;
增加了一系列外設。
接著,我們具體來看,這些功能到底是如何實現(xiàn)的。
1、內(nèi)部數(shù)據(jù)存儲器SRAM的增強單片機要想擴充資源,首先需要做的就是內(nèi)存的擴展。因為控制這些擴展資源的寄存器,都需要內(nèi)存地址的依托。另外,傳統(tǒng)的51單片機的內(nèi)存最大只有256字節(jié),我們在開發(fā)程序時,用戶所定義的變量都存放在這個內(nèi)存里面,其中還包括了位尋址區(qū),特殊功能寄存器區(qū)等我們無法使用的空間,早期的單片機應用,如控制一個開關,處理一個串口命令這些功能還夠用,但是隨著我們的應用越來越復雜,這么少的內(nèi)存真是“巧婦難為無米之炊”。因此,內(nèi)存的擴展非常必要。增強型51單片機的內(nèi)存擴展,還有一個無法改變的是傳統(tǒng)51單片的內(nèi)存排列,圖2列舉的MCS-51單片機內(nèi)部256字節(jié)RAM存儲分布,因為這個存儲分布是和整個51單片機架構息息相關的,無法對其有任何撼動。
圖2 傳統(tǒng)51單片機的內(nèi)存排列
增強型51單片機的內(nèi)存擴展,和傳統(tǒng)8051單片機訪問外部擴展RAM的方法相同,唯一區(qū)別是,傳統(tǒng)的51單片在內(nèi)存擴展之后,P0口和P2口將無法使用,但是增強型51單片機則仍然保留著這兩個口的正常功能。由于增強型單片機擴展出來的內(nèi)存是屬于外部存儲器擴展,因此如果你對于變量存儲的空間有需求,則在編程時需要顯示地指明這些變量的存儲位置。如果使用匯編語言,則需要使用“MOVX”指令。如果使用C語言,則需要使用“xdata”關鍵詞進行指定,不過為了C語言的可移植性,對于使用這種非標準C語言的關鍵詞,我還是持保留態(tài)度。
2、內(nèi)部程序存儲器FlashROM的增強內(nèi)部程序存儲器的擴展方式,也和傳統(tǒng)51單片機外部程序存儲器的擴展方式類似。但是STC8系列封裝管腳為40及以上的單片機,具有擴展64KB外部數(shù)據(jù)存儲器的能力。訪問外部數(shù)據(jù)存儲器期間,WR/RD,ALE信號要有效。除此之外,在內(nèi)部程序存儲器被擴大之后,一般增強型51單片機都會在一些特定地址的ROM和RAM之中,存入一些特定的產(chǎn)品信息。圖3是STC系列單片機中所保留的一些特定信息。
圖3 STC系列單片機中所保留的一些特定信息
3、外設如何擴展傳統(tǒng)的51單片機用于控制外設的寄存器地址都是排放在內(nèi)部RAM的128字節(jié)特殊功能寄存器區(qū)。這段特殊功能寄存器地址區(qū),傳統(tǒng)的8051單片機已經(jīng)用了一部分用于控制其資源,傳統(tǒng)8051單片機特殊功能寄存器區(qū)的使用如圖4所示。
圖4 傳統(tǒng)8051單片機的特殊功能寄存器使用傳統(tǒng)的
51單片機一共用了21個特殊功能寄存器地址。為了保持與傳統(tǒng)8051單片機的兼容,這段特殊功能寄存器原有的資源分配不能改變。因此,使用剩余的107個特殊功能寄存器地址,是外設寄存器擴展的一個途徑。如圖5所示,STC8數(shù)據(jù)手冊上面列出了STC8的特殊功能寄存器列表。
圖5 STC8數(shù)據(jù)手冊列出的特殊功能寄存器列表(1)
圖5 STC8數(shù)據(jù)手冊列出的特殊功能寄存器列表(續(xù)1)
圖5 STC8數(shù)據(jù)手冊列出的特殊功能寄存器列表(續(xù)2)
然而,隨著外設資源的不斷增加,越來越多的外設寄存器需要被編碼,原本128字節(jié)的特殊功能寄存器區(qū)已經(jīng)用完,想要再擴充資源,只能將這些特殊功能寄存器存放在內(nèi)部擴展的RAM上面。如圖6所示。
圖6 內(nèi)部數(shù)據(jù)存儲器排放的特殊功能寄存器
圖6 內(nèi)部數(shù)據(jù)存儲器排放的特殊功能寄存器(續(xù))