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