陳業(yè)慧,涂德鳳,程 明(安徽新華學(xué)院 電子通信工程學(xué)院,安徽 合肥 230088)
?
單片機(jī)位地址計算方法研究
陳業(yè)慧,涂德鳳,程明
(安徽新華學(xué)院電子通信工程學(xué)院,安徽合肥230088)
摘要:介紹了一種單片機(jī)位地址計算方法,針對MCS-51內(nèi)部RAM256B中位地址段20H-2FH16個字節(jié)單元拆分成的128個位地址,無需查表,快速準(zhǔn)確地得到位地址,并就該計算方法在可位尋址的SFR以及其他主流單片機(jī)系列位地址計算的適用性進(jìn)行了分析.
關(guān)鍵詞:AT89S52;存儲器;位地址;SFR
自1980年直到現(xiàn)在,MCS-51系列單片機(jī)憑借其優(yōu)越的性能和完善的結(jié)構(gòu),成為一種通用計算機(jī).其強(qiáng)大的位處理功能,為處理復(fù)雜程序標(biāo)志位的置位、清零或檢測以及確定程序的運行方向等提供了極大的方便.但許多單片機(jī)愛好者在開始學(xué)習(xí)期間,對其存儲器地址沖突問題上倍感棘手.本文主要介紹了一種單片機(jī)位地址的計算方法,針對內(nèi)部RAM128字節(jié)中位地址段20H-2FH16個字節(jié)單元拆分成的128位地址,無需查表,快速準(zhǔn)確地得到位地址,并就該計算方法在可位尋址的SFR以及其他單片機(jī)系列位地址計算的適用性進(jìn)行了分析,也便于工作人員準(zhǔn)確定位地址并利用好每一個存儲單元.
MCS-51存儲器配置方式采用哈佛結(jié)構(gòu),結(jié)構(gòu)組織可以分成3個不同的存儲空間,64kB程序存儲器、64kB外部RAM和256B內(nèi)部RAM,其中256B的內(nèi)部RAM又分為兩部分:高128B和低128B,低128B的內(nèi)部RAM才是真正的RAM區(qū),主要被用來寫入或讀出數(shù)據(jù),結(jié)構(gòu)如圖1所示:
圖1 MCS-51存儲器基本機(jī)構(gòu)圖
51系列優(yōu)點之一是它從內(nèi)部的硬件到軟件有一套完整的按位操作系統(tǒng),稱作位處理器,或布爾處理器.它的處理對象不是字或字節(jié)而是位.它不光能對片內(nèi)某些特殊功能寄存器的某位進(jìn)行處理,如傳送、置位、清零、測試等,還能進(jìn)行位的邏輯運算,其功能十分完備,使用起來得心應(yīng)手.51系列在片內(nèi)RAM區(qū)間還特別開辟了一個雙重功能的地址區(qū)間,十六個字節(jié),單元地址20H~2FH,它既可作字節(jié)處理,也可作位處理(作位處理時,合128個位,相應(yīng)位地址為00H~7FH),使用極為靈活.這一功能無疑給使用者提供了極大的方便,因為一個較復(fù)雜的程序在運行過程中會遇到很多分支,因而需建立很多標(biāo)志位,在運行過程中,需要對有關(guān)的標(biāo)志位進(jìn)行置位、清零或檢測,以確定程序的運行方向.而實施這一處理(包括前面所有的位功能),只需用一條位操作指令即可.
2.1位尋址區(qū)(20H-2FH)
片內(nèi)RAM的20H—2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對它們的位進(jìn)行尋址,使用極其靈活.為使用者在復(fù)雜程序中分支程序標(biāo)志位的的置位、清零或檢測,以確定程序的運行方向提供了極大的方便.而實施這一處理(包括前面所有的位功能),只需用一條位操作指令即可.位地址分配如下表1所示:
表1 位地址分配
2.2計算方法
由于單片機(jī)中只有內(nèi)部RAM和特殊功能寄存器的部分單元有位地址,分別針對2部分分析位地址的計算方法.
(1)當(dāng)位地址涉及空間在內(nèi)部RAM位尋址20H~2FH段時,假設(shè)其位表示成2XH.Y,其中X∈(0,F(xiàn)),Y∈(0,7),即2XH.Y的范圍在20H.0-2FH.7,則計算方法如下:
由上式可得,20H.0=00H,2FH.7=FFH,故位地址表達(dá)的范圍落在00H-7FH范圍.
同理亦可反推位地址3BH=27.3,快速準(zhǔn)確,與表1相符.
(2)對于高128B片內(nèi)RAM來說,此公式不適用,比如P0.0即80H.0,如果用此公式將得到00H的結(jié)果,必然是錯誤的.
故修正如下,對于可位尋址的SFR,位地址與字節(jié)地址相關(guān),規(guī)則如下:字節(jié)地址高四位定義為M,低四位定義為N,則字節(jié)地址為MN.位號定義為Z,則MNH.Z=M(N+Z)H.
P0.0即80H.0,由規(guī)則可以得到該位位地址=80H.
PS即B8H.5,由規(guī)則可得該位位地址=BDH,與表2相符.
表2 特殊功能寄存器
對位地址中的內(nèi)容進(jìn)行位操作的尋址方式成為位尋址.對字節(jié)地址中的內(nèi)容進(jìn)行位操作的尋址方式稱為直接尋址.位尋址只能對有位地址的內(nèi)部RAM和特殊功能寄存器的部分單元進(jìn)行尋址操作.它是一種直接尋址方式,由指令給出直接位地址.而字節(jié)尋址給出的是字節(jié)地址.
區(qū)分兩者需要根據(jù)不同的指令及偽指令,酌情判斷.單片機(jī)有專用的12條指令專用于位操作,不會混淆,例如:
SETB TR0;(TR0)←1
CLR20H;(24H.0)←0
本文提出的單片機(jī)位地址計算方法針對Intel51系列及相關(guān)兼容性的單片機(jī),比如ATmel公司及STC的51系列的典型產(chǎn)品等,簡單迅速而準(zhǔn)確的得到位地址,有效解決復(fù)雜的組合邏輯問題,避免進(jìn)行大量的數(shù)據(jù)傳送、字節(jié)屏蔽和測試一分支等操作為初學(xué)者及單片機(jī)愛好者及工作人員準(zhǔn)確定位地址并利用好每一個存儲單元提供了便利.但因存儲器結(jié)構(gòu)及指令的不同,不適用于AVR、PIC單片機(jī),其中AVR系列單片機(jī)中并不能直接對RAM單元中的位進(jìn)行操作,若想對RAM中的某位置位時,必須通過狀態(tài)寄存器SREG的T位進(jìn)行中轉(zhuǎn).如對RAM中的R0寄存器的第4位置位,則:
BSET6;狀態(tài)寄存器T置位
BLDR0,4;將T位復(fù)制到R0的第4位顯然,后者比前者要復(fù)雜.
本文介紹的針對MCS-51系列單片機(jī)位地址計算方法,無需查表,快速準(zhǔn)確地得到位地址,有效解決了單片機(jī)初學(xué)者及工作人員對于位地址的定位,同時也為教學(xué)提供了方便.該方法簡單準(zhǔn)確,使用Inter、Atmel及STC等系列通用單片機(jī)中,為利用位尋址有效解決復(fù)雜的組合邏輯問題,避免進(jìn)行大量的數(shù)據(jù)傳送、字節(jié)屏蔽和測試一分支等操作提供了便利.
參考文獻(xiàn):
〔1〕王瓊.單片機(jī)原理及應(yīng)用(第二版)[M].合肥:合肥工業(yè)大學(xué)出版社,2013.
〔2〕張毅坤.單片微型計算機(jī)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2005.
〔3〕馬淑華,王鳳文,張美金.單片機(jī)原理與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2007.
〔4〕張毅剛.單片機(jī)原理及應(yīng)用-C51編程+Proteus仿真[M].北京:高等教育出版社,2012.
〔5〕劉海成.AVR單片機(jī)原理及測控工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.
〔6〕張明峰.PIC單片機(jī)入門與實戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2004.
中圖分類號:TP368
文獻(xiàn)標(biāo)識碼:A
文章編號:1673-260X(2016)06-0032-02
收稿日期:2016-02-11