單片機的特殊功能寄存器完整功能分析
我們已知單片機的內(nèi)部有ROM、有RAM、有并行I/O口,那么,除了這些東西之外,單片機內(nèi)部究竟還有些什么,這些個零碎的東西怎么連在一起的,讓我們來對單片機內(nèi)部的寄存器作一個完整的功能分析吧!
下圖中我們能看出,在51單片機內(nèi)部有一個CPU用來運算、控制,有四個并行I/O口,分別是P0、P1、P2、P3,有ROM,用來存放程序,有RAM,用來存放中間結(jié)果,此外還有定時/計數(shù)器,串行I/O口,中斷系統(tǒng),以及一個內(nèi)部的時鐘電路。在一個51單片機的內(nèi)部包含了這么多的東西。
單片機內(nèi)部結(jié)構(gòu)圖>
javascript:resizepic(this) border=0>
javascript:resizepic(this) border=0>
對上面的圖進行進一步的分析,我們已知,對并行I/O口的讀寫只要將數(shù)據(jù)送入到對應I/O口的鎖存器就能了,那么對于定時/計數(shù)器,串行I/O口等怎么用呢?在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。事實上,我們已接觸過P1這個特殊功能寄存器了,還有哪些呢?看下表1
符號 | 地址 | 功能介紹 |
B | F0H | B寄存器 |
ACC | E0H | 累加器 |
PSW | D0H | 程序狀態(tài)字 |
IP | B8H | 中斷優(yōu)先級控制寄存器 |
P3 | B0H | P3口鎖存器 |
IE | A8H | 中斷允許控制寄存器 |
P2 | A0H | P2口鎖存器 |
SBUF | 99H | 串行口鎖存器 |
SCON | 98H | 串行口控制寄存器 |
P1 | 90H | P1口鎖存器 |
TH1 | 8DH | 定時器/計數(shù)器1(高8位) |
TH0 | 8CH | 定時器/計數(shù)器1(低8位) |
TL1 | 8BH | 定時器/計數(shù)器0(高8位) |
TL0 | 8AH | 定時器/計數(shù)器0(低8位) |
TMOD | 89A | 定時器/計數(shù)器方式控制寄存器 |
TCON | 88H | 定時器/計數(shù)器控制寄存器 |
DPH | 83H | 數(shù)據(jù)地址指針(高8位) |
DPL | 82H | 數(shù)據(jù)地址指針(低8位) |
SP | 81H | 堆棧指針 |
P0 | 80H | P0口鎖存器 |
PCON | 87H | 電源控制寄存器 |
表1
特殊功能寄存器地址映象表(一)>
javascript:resizepic(this) border=0>
特殊功能寄存器地址映象表(二)>
javascript:resizepic(this) border=0>
特殊功能寄存器地址映象表(三)>
javascript:resizepic(this) border=0>
下面,我們介紹一下幾個常用的SFR,看圖2。
ACC:累加器,常常用A表示。這是個什么東西,可不能從名字上理解,它是一個寄存器,而不是一個做加法的東西,為什么給它這么一個名字呢?或許是因為在運算器做運算時其中一個數(shù)一定是在ACC中的緣故吧。它的名字特殊,身份也特殊,稍后我們將學到指令,能發(fā)現(xiàn),所有的運算類指令都離不開它。
2、B:一個寄存器。在做乘、除法時放乘數(shù)或除數(shù),不做乘除法時,隨你怎么用。
3、PSW:程序狀態(tài)字。這是一個很重要的東西,里面放了CPU工作時的很多狀態(tài),借此,我們能了解CPU的當前狀態(tài),并作出對應的處理。它的各位功能請看表2
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
CY | AC | F0 | RS1 | RS0 | OV | P |
評論