日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

51系列單片機(jī)尋址方式

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2013/4/3

所謂尋址方式就是單片機(jī)指令中提供的操作數(shù)的形式。也就是尋找操作數(shù)或操作數(shù)所在地址的方式。在51系列單片機(jī)中,存放數(shù)據(jù)的存儲(chǔ)器空間有4種:內(nèi)部RAM、特殊功能寄存器SFR、外部RAM和程序存儲(chǔ)器ROM。其中,內(nèi)部RAM和SFR統(tǒng)一編址,外部RAM和程序存儲(chǔ)器是分開編址的。為了區(qū)別指令中操作數(shù)所處的地址空間,對(duì)于不同存存儲(chǔ)器的數(shù)據(jù)操作,采用不同的尋址方式。

1 立即數(shù)尋址

   指令中直接給出操作數(shù)的尋址方式稱為立即數(shù)尋址。在51系列單片機(jī)指令系統(tǒng)中,立即數(shù)用前面加“#”號(hào)的8位數(shù)表示(#data,如#30H)或16位數(shù)(#data16,如#2052H)表示。舉例說明立即數(shù)尋址方式,以傳送指令為例。

例:MOV  A,  #80H          ;80H——>A

    MOV  DPTR,  #2000H     ;2000H——>DPTR

2 直接尋址

指令中直接給出操作數(shù)地址(dir)的尋址方式稱為直接尋址。尋址對(duì)象為:1 內(nèi)部數(shù)據(jù)存儲(chǔ)器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名稱表示。

下面舉例說明。

例:MOV  A,  25H        ;內(nèi)部RAM的(25H)——>A

    MOV  P0,  #45H       ;45H——>P0 ,P0為直接尋址的SFR

    MOV  30H,20H       ;內(nèi)部RAM的(20H)——>(30H)

3 寄存器尋址

以通用寄存器的內(nèi)容為操作數(shù)的尋址方式稱為寄存器尋址。通用寄存器包括:A、B、DPTR、R0~R7。其中B寄存器僅在乘法、除法指令中為寄存器尋址,在其它指令中為直接尋址。A寄存器可以寄存器尋址,又可以直接尋址(此時(shí)寫作ACC)。直接尋址和寄存器尋址的差別在于,直接尋址是操作數(shù)所在的字節(jié)地址(占一個(gè)字節(jié)),寄存器尋址是寄存器編碼出現(xiàn)在指令碼中。寄存器尋址速度比直接尋址要快。除上面所指的幾個(gè)寄存器外,其它特殊功能寄存器一律為直接尋址。

例:MOV  A,  R0       ;R0——>A,R0為寄存器尋址

    MUL  AB          ;A×B——>BA,A,B為寄存器尋址

    MOV  B,  R0       ;R0——>B,R0為寄存器尋址,B為直接尋址

    PUSH  ACC        ;A的內(nèi)容入棧,A為直接尋址

    ADD  A,  ACC     ;A為寄存器尋址,ACC為直接尋址

4 寄存器間接尋址

以寄存器中的內(nèi)容為地址,該地址的內(nèi)容為操作數(shù)的尋址方式稱為寄存器間接尋址。能夠進(jìn)行寄存器間接尋址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄存器間接尋址的存儲(chǔ)空間包括內(nèi)部數(shù)據(jù)存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器。由于內(nèi)部數(shù)據(jù)存儲(chǔ)器共有128字節(jié),因此用一字節(jié)的R0和R1可間接尋址整個(gè)空間。而外部數(shù)據(jù)存儲(chǔ)器最大可達(dá)64K,僅R0或R1無法尋址整個(gè)空間,為此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同尋址64K字節(jié)范圍。也可用16位的DPTR寄存器間接尋址64K字節(jié)存儲(chǔ)空間。

在指令中,是對(duì)內(nèi)部RAM還是對(duì)外部RAM尋址,區(qū)別在于對(duì)外部RAM的操作僅有數(shù)據(jù)傳送指令,并且用MOVX作為操作助記符。

例:MOV   @R0,  A       ;A——>以R0內(nèi)容為地址的內(nèi)部RAM中

    MOVX  A,  @R1     ;外部RAM(地址為P2 R1)的內(nèi)容——>A

    MOVX  @DPTR,  A   ;A——>以DPTR內(nèi)容為地址的外部RAM中

圖1  MOV  @R0,  A

圖2  MOVX  A,  @R1

圖3  MOVX  @DPTR,  A

5 變址尋址

由寄存器DPTR或PC中的內(nèi)容加上A累加器內(nèi)容之和而形成操作數(shù)地址的尋址方式稱為變址尋址。變址尋址只能對(duì)程序存儲(chǔ)器中的數(shù)據(jù)進(jìn)行尋址操作。由于程序存儲(chǔ)器是只讀存貯器,因此變址尋址只有讀操作而無寫操作。在指令符號(hào)上采用MOVC的形式。

例:MOVC  A,  @A+DPTR       ;(A+DPTR)——>A

    MOVC  A,  @A+PC          ;(A+PC)——>A
                                      
圖4  MOVC  A,  @A+DPTR


圖5  MOVC  A,  @A+PC

6 位尋址

對(duì)位地址中的內(nèi)容進(jìn)行位操作的尋址方式稱為位尋址。由于單片機(jī)中只有內(nèi)部RAM和特殊功能寄存器的部分單元有位地址,因此位尋址只能對(duì)有位地址的這兩個(gè)空間進(jìn)行尋址操作。位尋址是一種直接尋址方式,由指令給出直接位地址。與直接尋址不同的是,位尋址只給出位地址,而不是字節(jié)地址。

例:SETB  20H     ;1——>20H位

    MOV  32H, C   ;進(jìn)位Cy(即指令中的C)——>32H位

7 相對(duì)尋址

以當(dāng)前程序計(jì)數(shù)器PC的內(nèi)容為基址,加上指令給出的一字節(jié)補(bǔ)碼數(shù)(偏移量)形成新的PC值的尋址方式稱為相對(duì)尋址。相對(duì)尋址方式只修改PC值,故主要用于實(shí)現(xiàn)程序的分支轉(zhuǎn)移。

例:SJMP  08H    ;PC+2+08H——>PC (該指令為兩字節(jié),所以有PC+2)

cm 0pt; TEXT-INDENT: 17.65pt; LINE-HEIGHT: 125%;">對(duì)位地址中的內(nèi)容進(jìn)行位操作的尋址方式稱為位尋址。由于單片機(jī)中只有內(nèi)部RAM和特殊功能寄存器的部分單元有位地址,因此位尋址只能對(duì)有位地址的這兩個(gè)空間進(jìn)行尋址操作。位尋址是一種直接尋址方式,由指令給出直接位地址。與直接尋址不同的是,位尋址只給出位地址,而不是字節(jié)地址。

例:SETB  20H     ;1——>20H位

    MOV  32H, C   ;進(jìn)位Cy(即指令中的C)——>32H位

7 相對(duì)尋址

以當(dāng)前程序計(jì)數(shù)器PC的內(nèi)容為基址,加上指令給出的一字節(jié)補(bǔ)碼數(shù)(偏移量)形成新的PC值的尋址方式稱為相對(duì)尋址。相對(duì)尋址方式只修改PC值,故主要用于實(shí)現(xiàn)程序的分支轉(zhuǎn)移。

例:SJMP  08H    ;PC+2+08H——>PC (該指令為兩字節(jié),所以有PC+2)

Tags:單片機(jī)尋址方式,51單片機(jī)  
責(zé)任編輯:admin
相關(guān)文章列表
51單片機(jī)零基礎(chǔ)入門
基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_Proteus仿真+程序
基于51單片機(jī)的數(shù)字電壓表(ADC0832)(Proteus仿真+程序)_基于
超聲波測(cè)距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測(cè)距C語(yǔ)言程序
基于51單片機(jī)的SHT11溫濕度測(cè)量?jī)x設(shè)計(jì)(源碼+仿真+文檔)
基于51單片機(jī)的恒溫控制器系統(tǒng) protues+keil c
51單片機(jī)數(shù)碼管顯示程序, 共陰數(shù)碼管顯示程序 數(shù)碼管原理(顯示
51單片機(jī)學(xué)習(xí)筆記直流電機(jī)驅(qū)動(dòng)(PWM)C語(yǔ)言程序
MCU-51單片機(jī)直流電機(jī)驅(qū)動(dòng)(PWM)51單片機(jī)驅(qū)動(dòng)直流電機(jī)
先學(xué)51還是先學(xué)STM32?STM32和51單片機(jī)的區(qū)別
51單片機(jī)和STM32單片機(jī)的結(jié)構(gòu)有什么不同
51單片機(jī)、AVR單片機(jī)和PIC單片機(jī)的IO口操作
關(guān)于51單片機(jī)IO引腳的驅(qū)動(dòng)能力與上拉電阻
51單片機(jī)“呼吸燈”程序
51單片機(jī)入門之靜態(tài)數(shù)碼管電路設(shè)計(jì)
AT89C51,51單片機(jī)1602液晶顯示時(shí)鐘程序
4位單片機(jī)數(shù)字鐘 電子鐘制作
51單片機(jī)4位數(shù)碼管電子鐘源程序
AT89C2051電腦機(jī)箱風(fēng)扇智能溫控儀,AT89C2051 Temperature contro
51單片機(jī)溫控風(fēng)扇(含程序+原理圖+仿真+PCB)
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢
主站蜘蛛池模板: 衡山县| 昭通市| 罗甸县| 连江县| 安岳县| 鸡泽县| 奉化市| 阿合奇县| 临朐县| 宁强县| 鄂伦春自治旗| 墨竹工卡县| 鹰潭市| 武夷山市| 随州市| 海门市| 普陀区| 元谋县| 兖州市| 晋江市| 江西省| 丹阳市| 清涧县| 光泽县| 浙江省| 宝兴县| 新乐市| 夹江县| 尉犁县| 蒙自县| 定结县| 贺兰县| 柏乡县| 鹤峰县| 杭锦旗| 凉城县| 鄂伦春自治旗| 辉南县| 石台县| 呼和浩特市| 五指山市|