8051的特殊功能寄存器
特殊功能寄存器
????? ? 8051有21個特殊功能寄存器,其中大部分是8位的,還有一些是16位的。我們對51單片機(jī)的操作實(shí)質(zhì)是對特殊功能寄存器的操作。SFR是我們操作的對象,對他們進(jìn)行讀和寫就是在操作51單片機(jī)。
????? ? PSW(程序狀態(tài)字寄存器):保存程序在執(zhí)行過程中一些狀態(tài)。
????????
????? ? CY:進(jìn)位位CY是在執(zhí)行加法(減法)時,如果第7位有進(jìn)位(借位),則將CY置1。
????? ? AC:輔助進(jìn)位位AC,是指第3位向第4位有進(jìn)位(借位)時,將AC置1.
????? ? F0:是用戶標(biāo)志位,留給我們用的
????? ? RS1和RS0是工作寄存器組選擇位,由RS1和RS0控制選擇哪一組工作寄存器工作。
????????
????? ?OV:溢出標(biāo)志位,在加減法運(yùn)算的過程中,當(dāng)?shù)?位或者第7位其中的某一位有進(jìn)位的時候,OV置1.
????????? ?即第6位進(jìn)位和第7位進(jìn)位的異或(D6⊕D7)。
????? ?—:這個是保留位,在一些書中也寫作是F1。和F0位差不多
????? ? P:奇偶校驗(yàn)位,8051進(jìn)行的是偶校驗(yàn)。即當(dāng)累加器ACC的內(nèi)容中1的個數(shù)是奇數(shù)個,那么P就被置1,否則清零。
? ? ? ? 寄存器B:在乘除法運(yùn)算中與累加器A配合使用。MUL? ? AB把累加器A和寄存器B中的8位無符號數(shù)相乘,結(jié)果的高8位存在寄存器B中,低8位存在累加器A中。DIV? ? AB用B除以A,把商存在A中,余數(shù)存在B中。在不做乘除法運(yùn)算時,B還可以作為通用寄存器來使用。
????? ? 累加器A:8051的大多數(shù)指令都需要使用累加器A,他是使用頻率最高的寄存器。外部存儲器的讀寫必須使用A。
????? ? 堆棧指針sp:堆棧指針存放當(dāng)前棧的棧頂指針。數(shù)據(jù)在進(jìn)棧之前SP先加1,然后數(shù)據(jù)進(jìn)棧;數(shù)據(jù)在出棧時,先將數(shù)據(jù)彈出,然后SP減1。51的棧是向上生長的。對于8051來說,棧是被放在內(nèi)部的RAM中,因此棧的最大地址是7FH。在系統(tǒng)復(fù)位后SP的初始值是07H。
????? ? 數(shù)據(jù)指針DPTR:數(shù)據(jù)指針是一個16位的寄存器。可分為DPL和DPH兩個8位的寄存器。它是唯一一個直接可以做16位數(shù)據(jù)操作的寄存器。例如:MOV? ? DPTR ,#1000H。
????? ? 端口寄存器:即就是P0到P3這四個特殊功能寄存器。所有的端口都可以位尋址(支持位操作)。也就是說引腳的操作本質(zhì)是對其內(nèi)存映射以后的特殊功能寄存器進(jìn)行的操作。
????? ? 中斷允許寄存器:(IE)8051擁有中斷系統(tǒng),他可以觸發(fā)5個中斷源,以及兩個中斷優(yōu)先級(即就是最多允許兩層的中斷嵌套)。
????????
????? ? EA:控制中斷的總開關(guān),EA置1時中斷總允許打開。否則中斷關(guān)閉。
????? ??ET2:啟用/禁用定時器2的溢出或捕捉中斷(僅對于8052)
????????ES :啟用/禁用串行端口中斷
????????ET1 :啟用/禁用定時器1溢出中斷
????????EX1 :啟用/禁用外部中斷1
????????ET0 :啟用/禁用定時器0溢出中斷
????????EX0 : 啟用/禁用外部中斷0
????? ? 中斷優(yōu)先級寄存器:(IP)8051的中斷有兩個中斷優(yōu)先級,默認(rèn)的優(yōu)先級從高到低是:外部中斷0,定時/計(jì)數(shù)器0,外部中斷1,定時/計(jì)數(shù)器1,串行口,(8052有定時/計(jì)數(shù)器2)。
????????
????? ? 當(dāng)把相應(yīng)的位置1時,優(yōu)先級變高,置0時,優(yōu)先級變低。當(dāng)全為1或者全為0時,優(yōu)先級按照默認(rèn)的優(yōu)先級來執(zhí)行。
????? ? (IP的每個位名字和IE寄存器每個位是相似的)
?????????定時器控制寄存器(TCON):
??????????
????????? ?TF1(TF0):定時/計(jì)數(shù)器T1(TF0)的溢出標(biāo)志,T1(T0)計(jì)數(shù)滿后,該位由硬件置1.并向CPU發(fā)出中斷請求。若CPU開放該中斷,則進(jìn)入中斷服務(wù)子程序,并由硬件將該位清0.
????????? ?TR1(TR0):T1(T0)的運(yùn)行控制位。用軟件控制,置1時,啟動T1(T0);清0時,停止T1(T0)。
????????? ?IE1(IE0):外部中斷1(0)的中斷標(biāo)志位。置1時,向CPU發(fā)出中斷請求。
????????? ?IT1(IT0):外部中斷1(0)的中斷觸發(fā)方式選擇位。ITx = 1時,設(shè)置為邊沿觸發(fā)方式(下降沿);ITx = 0時,設(shè)置為電平觸發(fā)方式(低電平)。在邊沿觸發(fā)方式下,CPU在響應(yīng)中斷請求之后,會由硬件將IEx清0.
????? ? 定時器方式選擇寄存器:(TMOD)該寄存器不能位尋址,只能整個字節(jié)操作。
????????
????? ? 其中高4位是控制定時器T1的,低4位是控制定時器T0的。
????? ? GATE:
???????????當(dāng)GATE = 1 ????????????? ??????則INT0引腳為高電平時且TR0置位,啟動定時器T0; ????????????? ? ????則INT1引腳為高電平時且TR1置位,啟動定時器T1。????? ? ?? ? ??當(dāng)GATE = 0
????????????????????????? ? 則TR0置位,啟動定時器T0;
????????????????????????? ? 則TR1置位,啟動定時器T1。
????? ? C/T:定時/計(jì)數(shù)器方式選擇位,C/T = 1時,工作在計(jì)數(shù)器模式下;當(dāng)C/T = 0時。工作在定時器模式下。
????? ? M1和M0:定時/計(jì)數(shù)器工作方式選擇位。
????????
????? ? 8051系列單片機(jī)的定時/計(jì)數(shù)器加1工作方式,因此需要將定時/計(jì)數(shù)的初值送到T0(T1)。
????? ? T1和T0是兩個16位的定時器,但是不能直接進(jìn)行16位數(shù)據(jù)的讀和寫,只能分成兩個8位來進(jìn)行讀和寫操作。例如想給T1設(shè)置初值為0C89H,指令書寫應(yīng)該如下:
????????????????????????????????????????? ? MOV? ? TH1,#0CH
????????????????????????????????????????? ? MOV? ? TL1,#89H
? ? ?串行口控制寄存器(SCON):
????? ?
????? ? SM0和SM1是串行口4種工作方式的選擇位,它們控制串行口工作在哪種方式之下。
????????
????? ? SM2是模式2和模式3的多機(jī)通信控制位。
????? ? REN :允許串行口接受位,REN = 1允許接受;REN = 0禁止接受,由軟件置位或清零。
????? ??TB8:在方式2和3,作為第9位數(shù)據(jù)發(fā)送,在雙機(jī)通信中常作為奇偶校驗(yàn)位,在多機(jī)通信中,常作為數(shù)據(jù)幀或地址幀的標(biāo)識,TB8 = 1為地址幀,TB8 = 0為數(shù)據(jù)幀。
????? ? RB8:在模式2和3下,為接收到的第9位數(shù)據(jù)。
????? ? TI:發(fā)送中斷標(biāo)志位(中斷源),硬件置位,軟件清零。
????? ? RI:接受中斷標(biāo)志位(中斷源),硬件置位,軟件清零。
串行口作為一個中斷源,中斷入口地址只有一個(0023H),當(dāng)用中斷方式進(jìn)行發(fā)送和接受時,需要查詢是TI還是RI引發(fā)的中斷請求。
????? ? 串行數(shù)據(jù)緩存器(SBUF):實(shí)際上SBUF是兩個在物理書獨(dú)立的發(fā)送,接受緩沖器,可以同時發(fā)送,接收數(shù)據(jù)。兩個緩沖器共用一個字節(jié)地址99H。可以通過對SBUF的讀和寫來進(jìn)行區(qū)分是哪一個寄存器。
總結(jié)
以上是生活随笔為你收集整理的8051的特殊功能寄存器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语学习(你不会后悔的)
- 下一篇: 【自动驾驶】汽车速度规划介绍