中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

8051單片機(jī)的寄存器

更新時(shí)間: 2021-08-28

CPU中使用寄存器來(lái)臨時(shí)存儲(chǔ)信息,這些信息可以是要處理的數(shù)據(jù),也可以是指向要獲取的數(shù)據(jù)的地址。在8051單片機(jī)中,有一種數(shù)據(jù)類型是8位,從MSB(最高有效位)D7到LSB(最低有效位)D0。對(duì)于 8 位數(shù)據(jù)類型,任何大于 8 位的數(shù)據(jù)類型都必須在處理之前分成 8 位塊。

8051中使用最廣泛的寄存器是 A(累加器)、B、R0-R7、DPTR(數(shù)據(jù)指針)和 PC(程序計(jì)數(shù)器)。所有這些寄存器都是 8 位的,除了 DPTR 和 PC。

一、8051中的存儲(chǔ)寄存器

我們將在這里討論以下類型的存儲(chǔ)寄存器:

1.累加器;
2.寄存器;
3.B寄存器;
4.數(shù)據(jù)指針 (DPTR);
5.程序計(jì)數(shù)器 (PC);
6.堆棧指針 (SP)。

(1)累加器

累加器寄存器 A 用于所有算術(shù)和邏輯運(yùn)算。如果累加器不存在,則每次計(jì)算(加法、乘法、移位等)的每個(gè)結(jié)果都將存儲(chǔ)到主存儲(chǔ)器中。訪問(wèn)主存儲(chǔ)器比訪問(wèn)諸如累加器之類的寄存器慢,因?yàn)橛糜诖笾鞔鎯?chǔ)器的技術(shù)比用于寄存器的技術(shù)慢(但更便宜)。

(2)“R”寄存器

“R”寄存器是一組八個(gè)寄存器,即 R0、R1 到 R7。這些寄存器在許多操作中用作輔助或臨時(shí)存儲(chǔ)寄存器??紤] 10 和 20 之和的示例。將變量 10 存儲(chǔ)在累加器中,并將另一個(gè)變量 20 存儲(chǔ)在寄存器 R4 中。要處理加法操作,請(qǐng)執(zhí)行以下命令:

ADD A,R4

執(zhí)行此指令后,累加器將包含值 30。因此“R”寄存器是非常重要的輔助或幫助寄存器。如果不是這些“R”寄存器,單獨(dú)的累加器不會(huì)很有用?!癛”寄存器用于臨時(shí)存儲(chǔ)值。

讓我們?cè)倥e一個(gè)例子。我們將 R1 和 R2 的值相加,然后從結(jié)果中減去 R3 和 R4 的值。

MOV A,R3   ;Move the value of R3 into the accumulator
ADD A,R4   ;Add the value of R4
MOV R5,A   ;Store the resulting value temporarily in R5
MOV A,R1   ;Move the value of R1 into the accumulator
ADD A,R2   ;Add the value of R2
SUBB A,R5  ;Subtract the value of R5 (which now contains R3 + R4)

如您所見,我們使用 R5 來(lái)臨時(shí)保存 R3 和 R4 的總和。當(dāng)然,這不是計(jì)算 (R1 + R2) – (R3 + R4) 的最有效方法,但它確實(shí)說(shuō)明了使用“R”寄存器作為臨時(shí)存儲(chǔ)值的方法。

8bit_registers.jpg

(3)“B”寄存器

“B”寄存器與累加器非常相似,因?yàn)樗梢员4嬉粋€(gè) 8 位(1 字節(jié))的值?!癇”寄存器僅由兩條 8051指令使用:MUL AB和DIV AB。為了快速輕松地將 A 乘以或除以另一個(gè)數(shù)字,您可以將另一個(gè)數(shù)字存儲(chǔ)在“B”中并使用這兩個(gè)指令。除了使用 MUL 和 DIV 指令外,“B”寄存器通常用作另一個(gè)臨時(shí)存儲(chǔ)寄存器,很像第九個(gè) R 寄存器。

(4)數(shù)據(jù)指針

數(shù)據(jù)指針 (DPTR) 是 8051唯一的用戶可訪問(wèn)的 16 位(2 字節(jié))寄存器。累加器、R0–R7 寄存器和 B 寄存器是 1 字節(jié)值寄存器。DPTR 用于指向數(shù)據(jù)。8051使用它來(lái)使用 DPTR 指示的地址訪問(wèn)外部存儲(chǔ)器。DPTR 是唯一可用的 16 位寄存器,通常用于存儲(chǔ) 2 字節(jié)值。

(5)程序計(jì)數(shù)器

程序計(jì)數(shù)器 (PC) 是一個(gè) 2 字節(jié)的地址,它告訴 8051可以在內(nèi)存中找到下一條要執(zhí)行的指令。PC 在 8051初始化時(shí)從 0000h 開始,每次執(zhí)行指令后遞增。PC 并不總是加 1。有些指令可能需要 2 或 3 個(gè)字節(jié);在這種情況下,PC 將增加 2 或 3。

分支、跳轉(zhuǎn)和中斷操作將下一個(gè)順序位置以外的地址加載到程序計(jì)數(shù)器中。激活上電復(fù)位將導(dǎo)致寄存器中的所有值丟失。這意味著復(fù)位時(shí) PC 的值為 0,迫使 CPU 從 ROM 位置 0000 獲取第一個(gè)操作碼。這意味著我們必須將上行代碼的第一個(gè)字節(jié)放在 ROM 位置 0000 中,因?yàn)檫@是 CPU 希望找到的位置第一條指令。

(6)堆棧指針(SP)

堆棧指針與除 DPTR 和 PC 之外的所有寄存器一樣,可以保存 8 位(1 字節(jié))值。堆棧指針告訴從堆棧中刪除下一個(gè)值的位置。當(dāng)一個(gè)值被壓入堆棧時(shí),SP 的值會(huì)增加,然后該值被存儲(chǔ)在結(jié)果內(nèi)存位置。當(dāng)一個(gè)值從堆棧中彈出時(shí),該值從SP 指示的內(nèi)存位置返回,然后SP 的值遞減。

這個(gè)操作順序很重要。8051初始化時(shí),SP 會(huì)被初始化為 07h。如果同時(shí)將一個(gè)值壓入堆棧,則該值將存儲(chǔ)在內(nèi)部 RAM 地址 08h 中,因?yàn)?8051會(huì)先將 SP 的值(從 07h 到 08h)遞增,然后將壓入的值存儲(chǔ)在該內(nèi)存中地址 (08h)。8051直接通過(guò) 6 條指令修改 SP:PUSH、POP、ACALL、LCALL、RET 和 RETI。

以上就是英銳恩單片機(jī)開發(fā)工程師分享的8051單片機(jī)的寄存器。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)。

404
返回首頁(yè) |  返回上一頁(yè)
定南县| 武义县| 灵川县| 屏山县| 阿坝县| 新巴尔虎右旗| 铜陵市| 防城港市| 科技| 法库县| 玛沁县| 昌吉市| 浦城县| 汝城县| 东港市| 茌平县| 治县。| 临泉县| 彝良县| 珲春市| 永新县| 新建县| 平罗县| 来宾市| 泽库县| 张掖市| 铜山县| 洮南市| 大新县| 平阳县| 芷江| 安塞县| 临夏市| 耒阳市| 双牌县| 顺昌县| 林州市| 平泉县| 新巴尔虎右旗| 乐东| 南开区|