1. 程式人生 > >8051的特殊功能暫存器

8051的特殊功能暫存器

特殊功能暫存器

        8051有21個特殊功能暫存器,其中大部分是8位的,還有一些是16位的。我們對51微控制器的操作實質是對特殊功能暫存器的操作。SFR是我們操作的物件,對他們進行讀和寫就是在操作51微控制器。

        PSW(程式狀態字暫存器):儲存程式在執行過程中一些狀態。

        

        CY:進位位CY是在執行加法(減法)時,如果第7位有進位(借位),則將CY置1。

        AC:輔助進位位AC,是指第3位向第4位有進位(借位)時,將AC置1.

        F0:是使用者標誌位,留給我們用的

        RS1和RS0是工作暫存器組選擇位,由RS1和RS0控制選擇哪一組工作暫存器工作。

        

       OV:溢位標誌位,在加減法運算的過程中,當第6位或者第7位其中的某一位有進位的時候,OV置1.

           即第6位進位和第7位進位的異或(D6D7)。

       —:這個是保留位,在一些書中也寫作是F1。和F0位差不多

        P:奇偶校驗位,8051進行的是偶校驗。即當累加器ACC的內容中1的個數是奇數個,那麼P就被置1,否則清零。

        暫存器B:在乘除法運算中與累加器A配合使用。MUL    AB把累加器A和暫存器B中的8位無符號數相乘,結果的高8位存在暫存器B中,低8位存在累加器A中。DIV    AB用B除以A,把商存在A中,餘數存在B中。在不做乘除法運算時,B還可以作為通用暫存器來使用。

        累加器A:8051的大多數指令都需要使用累加器A,他是使用頻率最高的暫存器。外部儲存器的讀寫必須使用A。

        堆疊指標sp堆疊指標存放當前棧的棧頂指標。資料在進棧之前SP先加1,然後資料進棧;資料在出棧時,先將資料彈出,然後SP減1。51的棧是向上生長的。對於8051來說,棧是被放在內部的RAM中,因此棧的最大地址是7FH。在系統復位後SP的初始值是07H。

資料指標DPTR:資料指標是一個16位的暫存器。可分為DPL和DPH兩個8位的暫存器。它是唯一一個直接可以做16位資料操作的暫存器。例如:MOV    DPTR ,#1000H。

埠暫存器:即就是P0到P3這四個特殊功能暫存器。所有的埠都可以位定址(支援位操作)。也就是說引腳的操作本質是對其記憶體對映以後的特殊功能暫存器進行的操作。

中斷允許暫存器:(IE)8051擁有中斷系統,他可以觸發5箇中斷源,以及兩個中斷優先順序(即就是最多允許兩層的中斷巢狀)。

        

        EA:控制中斷的總開關,EA置1時中斷總允許開啟。否則中斷關閉。

        ET2:啟用/禁用定時器2的溢位或捕捉中斷(僅對於8052)

        ES :啟用/禁用串列埠中斷

        ET1 :啟用/禁用定時器1溢位中斷

        EX1 :啟用/禁用外部中斷1

        ET0 :啟用/禁用定時器0溢位中斷

        EX0 : 啟用/禁用外部中斷0

中斷優先順序暫存器:(IP)8051的中斷有兩個中斷優先順序,預設的優先順序從高到低是:外部中斷0,定時/計數器0,外部中斷1,定時/計數器1,序列口,(8052有定時/計數器2)。

        

        當把相應的位置1時,優先順序變高,置0時,優先順序變低。當全為1或者全為0時,優先順序按照預設的優先順序來執行。

        (IP的每個位名字和IE暫存器每個位是相似的)

         定時器控制暫存器(TCON):

          

           TF1(TF0):定時/計數器T1(TF0)的溢位標誌,T1(T0)計數滿後,該位由硬體置1.並向CPU發出中斷請求。若CPU開放該中斷,則進入中斷服務子程式,並由硬體將該位清0.

           TR1(TR0):T1(T0)的執行控制位。用軟體控制,置1時,啟動T1(T0);清0時,停止T1(T0)。

           IE1(IE0):外部中斷1(0)的中斷標誌位。置1時,向CPU發出中斷請求。

           IT1(IT0):外部中斷1(0)的中斷觸發方式選擇位。ITx = 1時,設定為邊沿觸發方式(下降沿);ITx = 0時,設定為電平觸發方式(低電平)。在邊沿觸發方式下,CPU在響應中斷請求之後,會由硬體將IEx清0.

        定時器方式選擇暫存器:(TMOD)該暫存器不能位定址,只能整個位元組操作。

        

        其中高4位是控制定時器T1的,低4位是控制定時器T0的。

        GATE:

           當GATE = 1                    則INT0引腳為高電平時且TR0置位,啟動定時器T0;                    則INT1引腳為高電平時且TR1置位,啟動定時器T1。

               GATE = 0

                            則TR0置位,啟動定時器T0;

                            則TR1置位,啟動定時器T1。

        C/T:定時/計數器方式選擇位,C/T = 1時,工作在計數器模式下;當C/T = 0時。工作在定時器模式下。

        M1和M0:定時/計數器工作方式選擇位。

        

        8051系列微控制器的定時/計數器加1工作方式,因此需要將定時/計數的初值送到T0(T1)。

        T1和T0是兩個16位的定時器,但是不能直接進行16位資料的讀和寫,只能分成兩個8位來進行讀和寫操作。例如想給T1設定初值為0C89H,指令書寫應該如下:

                                            MOV    TH1,#0CH

                                            MOV    TL1,#89H

     序列口控制暫存器(SCON):

       

        SM0和SM1是序列口4種工作方式的選擇位,它們控制序列口工作在哪種方式之下。

        

        SM2是模式2和模式3的多機通訊控制位。

        REN :允許序列口接受位,REN = 1允許接受;REN = 0禁止接受,由軟體置位或清零。

        TB8:在方式2和3,作為第9位資料傳送,在雙機通訊中常作為奇偶校驗位,在多機通訊中,常作為資料幀或地址幀的標識,TB8 = 1為地址幀,TB8 = 0為資料幀。

        RB8:在模式2和3下,為接收到的第9位資料。

        TI:傳送中斷標誌位(中斷源),硬體置位,軟體清零。

        RI:接受中斷標誌位(中斷源),硬體置位,軟體清零。

序列口作為一箇中斷源,中斷入口地址只有一個(0023H),當用中斷方式進行傳送和接受時,需要查詢是TI還是RI引發的中斷請求。

        序列資料快取器(SBUF):實際上SBUF是兩個在物理書獨立的傳送,接受緩衝器,可以同時傳送,接收資料。兩個緩衝器共用一個位元組地址99H。可以通過對SBUF的讀和寫來進行區分是哪一個暫存器。