從零開始51單片機教程——連載8 特殊功能寄存器

2021-01-12 電子產品世界

詳細介紹什麼是寄存器 寄存器能做什麼

通過前面的學習,我們已知單片機的內部有ROM、有RAM、有並行I/O口,那麼,除了這些東西之外,單片機內部究竟還有些什麼,這些個零碎的東西怎麼連在一起的,讓我們來對單片機內部的寄存器作一個完整的功能分析吧!

下圖中我們能看出,在51單片機內部有一個CPU用來運算、控制,有四個並行I/O口,分別是P0、P1、P2、P3,有ROM,用來存放程序,有RAM,用來存放中間結果,此外還有定時/計數器,串行I/O口,中斷系統,以及一個內部的時鐘電路。在一個51單片機的內部包含了這麼多的東西。

單片機內部結構圖>

對上面的圖進行進一步的分析,我們已知,對並行I/O口的讀寫只要將數據送入到對應I/O口的鎖存器就能了,那麼對於定時/計數器,串行I/O口等怎麼用呢?在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。事實上,我們已接觸過P1這個特殊功能寄存器了,還有哪些呢?看下表1

符號

地址

功能介紹

B

F0H

B寄存器

ACC

E0H

累加器

PSW

D0H

程序狀態字

IP

B8H

中斷優先級控制寄存器

P3

B0H

P3口鎖存器

IE

A8H

中斷允許控制寄存器

P2

A0H

P2口鎖存器

SBUF

99H

串行口鎖存器

SCON

98H

串行口控制寄存器

P1

90H

P1口鎖存器

TH1

8DH

定時器/計數器1(高8位)

TH0

8CH

定時器/計數器1(低8位)

TL1

8BH

定時器/計數器0(高8位)

TL0

8AH

定時器/計數器0(低8位)

TMOD

89A

定時器/計數器方式控制寄存器

TCON

88H

定時器/計數器控制寄存器

DPH

83H

數據地址指針(高8位)

DPL

82H

數據地址指針(低8位)

SP

81H

堆棧指針

P0

80H

P0口鎖存器

PCON

87H

電源控制寄存器

表1

特殊功能寄存器地址映象表(一)>

特殊功能寄存器地址映象表(二)>

特殊功能寄存器地址映象表(三)>

下面,我們介紹一下幾個常用的SFR,看圖2。

ACC:累加器,常常用A表示。這是個什麼東西,可不能從名字上理解,它是一個寄存器,而不是一個做加法的東西,為什麼給它這麼一個名字呢?或許是因為在運算器做運算時其中一個數一定是在ACC中的緣故吧。它的名字特殊,身份也特殊,稍後我們將學到指令,能發現,所有的運算類指令都離不開它。

2、B:一個寄存器。在做乘、除法時放乘數或除數,不做乘除法時,隨你怎麼用。

3、PSW:程序狀態字。這是一個很重要的東西,裡面放了CPU工作時的很多狀態,藉此,我們能了解CPU的當前狀態,並作出對應的處理。它的各位功能請看表2

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

 

P

表2

PSW也稱為標誌寄存器,了解這個對於了解單片機原理非常的重要,存放各有關標誌。其結構和定義如下:

下面我們逐一介紹sfr各位的用途

(1)CY:進位標誌。用於表示Acc.7有否向更高位進位。8051中的運算器是一種8位的運算器,我們知道,8位運算器只能表示到0-255,如果做加法的話,兩數相加可能會超過255,這樣最高位就會丟失,造成運算的錯誤,怎麼辦?最高位就進到這裡來。這樣就沒事了。

例:78H+97H(01111000+10010111)

(2)AC:輔助進位標誌也叫半進位標誌。 用於表示Acc.3有否向Acc.4進位

例:57H+3AH(01010111+00111010)

(3)F0:用戶標誌位,由我們(編程人員)決定什麼時候用,什麼時候不用。

(4)RS1、RS0:工作寄存器組選擇位。這個我們已知了。
RS1、RS0 = 00 —— 0區(00H~07H)

RS1、RS0 = 01 —— 1區(08H~0FH)

RS1、RS0 = 10 —— 2區(10H~17H)

RS1、RS0 = 11 —— 3區(18H~1FH)

(5)0V:溢出標誌位。 表示Acc在有符號數算術運算中的溢出,什麼是溢出我們稍後再談吧。

(6)P:奇偶校驗位:它用來表示ALU運算結果中二進位數位「1」的個數的奇偶性。若為奇數,則P=1,不然為0。

例:某運算結果是78H(01111000),顯然1的個數為偶數,所以P=0。

4、DPTR(DPH、DPL):數據指針,能用它來訪問外部數據存儲器中的任一單元,如果不用,也能作為通用寄存器來用,由我們自已決定如何使用。16位,由兩個8位寄存器DPH、DPL組成。主要用於存放一個16位地址,作為訪問外部存儲器(外RAM和ROM)的地址指針。

5、P0、P1、P2、P3:這個我們已經知道,是四個並行輸入/輸出口的寄存器。它裡面的內容對應著管腳的輸出。

6、SP:堆棧指針。(專用於指出堆棧頂部數據的地址。)

堆棧介紹:日常生活中,我們都注意到過這樣的現象,家裡洗的碗,一隻一隻摞起來,最晚放上去的放在最上面,而最早放上去的則放在最下面,在取的時候正好相反,先從最上面取,這種現象我們用一句話來概括:「先進後出,後進先出」。請大家想想,還有什麼地方有這種現象?其實比比皆是,建築工地上堆放的磚頭、材料,倉庫裡放的貨物,都是「先進後出,後進先出」,這實際是一種存取物品的規則,我們稱之為「堆棧」。

在單片機中,我們也能在RAM中構造這樣一個區域,用來存放數據,這個區域存放數據的規則就是「先進後出,後進先出」,我們稱之為「堆棧」。為什麼需要這樣來存放數據呢?存儲器本身不是能按地址來存放數據嗎?對,知道了地址的確就能知道裡面的內容,但如果我們需要存放的是一批數據,每一個數據都需要知道地址那不是麻煩嗎?如果我們讓數據一個接一個地放置,那麼我們只要知道第一個數據所在地址單元就能了(看圖2)如果第一個數據在27H,那麼第二、三個就在28H、29H了。所以利用堆棧這種辦法來放數據能簡化操作

那麼51中堆棧什麼地方呢?單片機中能存放數據的區域有限,我們不能夠專門分配一塊地方做堆棧,所以就在內存(RAM)中開闢一塊地方,用於堆棧,但是用內存的哪一塊呢?還是不好定,因為51是一種通用的單片機,各人的實際需求各不相同,有人需要多一些堆棧,而有人則不需要那麼多,所以怎麼分配都不合適,怎樣來解決這個問題?分不好乾脆就不分了,把分的權利給用戶(編程者),根據自已的需要去定吧,所以51單片機中堆棧的位置是能變化的。而這種變化就體現在SP中值的變化,看圖2,SP中的值等於27H不就相當於是一個指針指向27H單元嗎?當然在真正的51機中,開始指針所指的位置並非就是數據存放的位置,而是數據存放的前一個位置,比如一開始指針是指向27H單元的,那麼第一個數據的位置是28H單元,而不是27H單元,為什麼會這樣,我們在學堆棧命令時再說明。其它的SFR,我們在用到時再介紹。

相關焦點

  • 51特殊功能寄存器
    這128個單元中,特殊功能寄存器僅佔用了21個單元,其餘單元51單片機不能對它們進行讀/寫操作(即不能作內部數據存儲器使用)。單元地址可被8整除的SFR可位尋址。如圖1)累加器A或特殊功能寄存器ACC累加器為8位寄存器,用於存放操作數,也可用來存放運算的中間結果。A和ACC雖是同一個寄存器,但是在指令中它們卻是有區別的。
  • 在MCS51單片機中對特殊功能寄存器的C51定義
    在開始講對C51單片機中特殊寄存器(SPR)的定義前,先簡單介紹下我們在進行51單片機開發時經常看到的兩個關鍵字"sbit」和"sfr「:sfr用於將一個單片機的
  • 51單片機教程
    該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。
  • 單片機的特殊功能寄存器
    在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。<特殊功能寄存器地址映象表(一)><特殊功能寄存器地址映象表(二)><特殊功能寄存器地址映象表(三)>這是個什麼東西,可不能從名字上理解,它是一個寄存器,而不是一個做加法的東西,為什麼給它這麼一個名字呢?或許是因為在運算器做運算時其中一個數一定是在ACC中的緣故吧。它的名字特殊,身份也特殊,稍後我們將學到指令,能發現,所有的運算類指令都離不開它。2、B:一個寄存器。在做乘、除法時放乘數或除數,不做乘除法時,隨你怎麼用。3、PSW:程序狀態字。
  • 暢學三合一51單片機實戰教程
    簡介      本課程是單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習單片機,循序漸進地基於理論講解並結合實驗項目實戰開發
  • 8051單片機特殊功能存儲器SFR基礎詳解
    PC有自動加1功能,從而實現程序的順序執行。PC沒有地址,是不可尋址的,因此用戶無法對它進行讀寫,但可以通過轉移、調用、返回等指令改變其內容,以實現程序的轉移。因地址不在SFR(專用寄存器)之內,一般不計作專用寄存器。累加器(ACC—Accumulator)。累加器為8位寄存器,是最常用的專用寄存器,功能較多,地位重要。它既可用於存放操作數,也可用來存放運算的中間結果。
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    簡介      本課程是單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習單片機,循序漸進地基於理論講解並結合實驗項目實戰開發
  • 下載 | 《手把手教你學51單片機-C語言版》
    編輯推薦《手把手教你學51單片機(C語言版)》的創作,目的就是改變當前「51單片機」教學與自學的模式:國內首創「手把手教你學」——集理論知識、視頻教程可以預見,《手把手教你學51單片機(C語言版)》將引領一場單片機教學的革命!作者簡介宋雪松 ,國內知名單片機培訓專家,嵌入式產品技術顧問。擁有近十年產品研發經驗,曾主持研發通信類、虛擬儀器等多款產品,在硬體電路設計和嵌入式軟體設計方向有豐富的項目實戰經驗。
  • 51單片機的尋址方式
    這條指令的意思就是把立即數的高8位(即82H)送入DPH寄存器,把立即數的低8位(即00H)送入DPL寄存器。這裡也特別說明一下:在80C51單片機的指令系統中,僅有一條指令的操作數是16位的立即數,其功能是向地址指針DPTR傳送16位的地址,即把立即數的高8位送入DPH,低8位送入DPL。
  • 快速上手51單片機
    >片內 128B/256B RAM片內 0K/4K/8K ROM可尋址片外 64K RAM可尋址片外 64K ROM片內 21/26 個特殊功能寄存器在此,我非常感謝我的老師們,要不是他們,我早就《學會》單片機開發了。那麼,現在是時候來學點基礎知識了,這樣,等到板子一到馬上就可以開始 裝逼 了。
  • 51單片機位及位操作指令
    工業中有很多場合需要處理這類開關輸出,繼電器吸合,用字節來處理就顯示有些麻煩,所以在8051單片機中特意引入一個位處理機制。位尋址區在8051中,有一部份RAM和一部份SFR是具有位尋址功能的,也就是說這些RAM的每一個位都有自已的地址,可以直接用這個地址來對此進行操作。
  • MCS-51單片機的結構和工作原理
    4、程序狀態字(PSW)8位特殊功能寄存器5、布爾處理器 1位 它以進位標誌(CY)作為累加位  進行位操作程序狀態字PSW各位標誌的含義:3.3 MCS-51單片機外部特性:      MCS-51系列單片機有40個引腳,HMOS工藝製造的晶片採用雙列直插式封裝(DIP)。      本節主要介紹引腳功能和引腳功能的復用。
  • MCS-51單片機的程序狀態寄存器PSW的作用是什麼?
    MCS-51單片機的程序狀態寄存器PSW的作用是什麼?常用標誌有哪些位?作用是什麼?答:PSW是一個8位寄存器,用於設定CPU的狀態和指示指令執行後的狀態。CY(PSW.7):進位標誌。在執行加減運算指令時,如果運算結果的最高位(D7)發生了進位或借位,則CY由硬體自動置1。
  • MSP430單片機輕鬆入門與實踐 — 暢學單片機
    簡介     本課程是MSP430單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習MSP430單片機
  • 51/STM32/MSP430/STC/TMS/PIC/AVR,七大主流單片機最全面對比
    :Atmel、TI、ST、MicroChip、ARM…國內的宏晶STC單片機也是可圈可點…  下面為大家帶來51、MSP430、TMS、STM32、PIC、AVR、STC單片機之間的優缺點比較及功能體現……  51單片機  應用最廣泛的8位單片機當然也是初學者們最容易上手學習的單片機,最早由
  • ADC0809和51單片機的多路數據採集系統設計方案
    終端鍵盤控制採用儘可能少的鍵來實現控制功能,為了防止鍵盤不用時的誤操作,設計時還設置了鎖鍵功能,在鍵盤的輸入消抖方面,則採用軟體消抖方法來降低硬體開銷,提高系統的抗幹擾能力。軟體設計方面則採用功能模塊化的設計思想;鍵盤模數轉換等採用中斷方式來實現,從而大大提高了單片機的效率以及實時處理能力。
  • 基於51單片機的電子音樂盒的課程設計
    由於51系列在我國使用最廣,且該系列的資料和能夠兼容的外圍晶片也比較多,特別是ATMEL公司89C系列單片機,其典型產品AT89C51單片機,具有較高的性能價格比。故本系統採用ATMEL公司生產的AT89C51單片機作為電子音樂盒的核心部件,AT89C51是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含4k bytes的可反覆擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數據存儲器(RAM),器件採用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器(CPU)和Flash存儲單元
  • 平凡單片機教學 第六講 單片機內部結構分析(五)
    從圖中我們可以看出,在51單片機內部有一個CPU用來運算、控制,有四個並行I/O口,分別是P0、P1、P2、P3,有ROM,用來存放程序,有RAM,用來存放中間結果,此外還有定時/計數器,串行I/O口,中斷系統,以及一個內部的時鐘電路。在一個51單片機的內部包含了這麼多的東西。
  • 基於STM32單片機的功能及特點
    基於STM32單片機的功能及特點 工程師周亮 發表於 2018-10-17 16:51:36 為什麼要學STM32?
  • ADC0809與51單片機的連接方式
    ADC0809的轉換結果寄存器在概念上定位為單片機外部RAM單元的一個只讀寄存器,與通道號無關。因此讀取轉換結果時不必關心DPTR 中的通道號如何。因此可以在把51單片機的8 位數據線接到ADC0809的8位數據線的同時,又把其中的3位直接接到ADC0809的3根地址線以確定通道號。如圖2.4所示。通常把51單片機的8位數據線中的低3位D2、D1、D0直接接到ADC0809的3根地址線A2、A1、A0以確定通道號。採用這種連接方式明顯可以省去一片74LS373。