寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。
MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。
例:MOV R0,#30H ;将值30H加载到R0中
MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中
MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中
大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。
例:MOV DPTR,#1234H ;将DPTR值设为1234H(16位)
MOVX A,@DPTR ;将外部RAM或I/O地址1234H内的值放到累加器A中
在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。
例:PUSH 30H ;把内部RAM地址30H内的值放到堆栈区中
堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。
那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP
寄存器间接寻址范围总结:
1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。
2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。
例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。
外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。
例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。
堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。
寄存器间接寻址方式不可以访问特殊功能寄存器!!
寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。
关键字:51单片机 寄存器 间接寻址
引用地址:
51单片机寄存器间接寻址方式与举例
推荐阅读最新更新时间:2024-03-16 15:40
AVR单片机的RTOS-AVRX应用
引 言 随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。 AVR微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低功耗、非易失性等优点,而且程序存储器和数据存储器可独立编址,并具有独立访问的哈佛结构。AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个周期内一条单一指令访问两个独立的寄存器,这样的结构使代码的执行效率比传统的复杂指令集
[应用]
基于51单片机的智能饮水机设计
一.硬件方案 本次设计为一个基于单片机的饮水机的温度控制系统,该系统可以实时检测饮水机水箱的水温,并且可以通过数码管显示饮水机水箱水温度数,可以通过键盘或开关选择制冷或加热,可以人为设置水的温度的上下限,如加热,当温度在设定的范围内时正常工作,当低于水温下限时控制加热器加热;如制冷,当温度高于水温上限时控制压缩机制冷,温度检测范围0~95℃,精度±1℃,当温度超过设定值时具有示警功能。 主要由用51单片机+防水型温度传感器DS18b20+液晶屏LCD1602+液位开关+时钟芯片+继电器+小风扇+按键;如图: 二.设计功能 (1)系统上电后,LCD1602显示当前的时间、日期和水温。 (2)使用不锈钢液位开关来检测是否有水源
[单片机]
AT89C2051单片机开发点钞机外接显示屏
从图上可以清楚的看出:点钞机的外接显示屏主要由 单片机 Atmel公司生产的AT89C2051、三只七段共阳数码管LED1~LED3、晶体三极管V1~V3和相应的电阻电容及插头所组成。 大家知道,LED数码管是由发光二极管作为显示字段的数码型显示器件。在数码管显示器中,一般情况下都采用动态扫描式显示方式。所谓扫描式,就是当有多个七段(带小数点的为八段)显示器要显示时,将其各个对应引脚接在一起,也就是说,所有的a段接在一起,b段也接在一起,依此类推。而利用各七段显示器的共阳(或共阴)极来确定哪一个七段显示器要显示。这样做的目的有二:(1)省电;(2)节省输出端口。 本电路利用89C2051的端口与数码的笔段接法为: P
[单片机]
51单片机 LCD12864 驱动程序 C语言 ST7920
main.c #include reg52.h #include intrins.h #include string.h #include stdio.h #include stdlib.h #include LCD12864.h void main( void ) { Ini_Lcd(); Lcd_WriteStr(0,0, QQ137712826 ); while ( 1 ) { } } lcd12864.h #include reg52.h #include intrins.h sbit RS = P2 ^ 0; sbit R
[单片机]
51单片机的引脚功能及寄存器
总是记不住,每当拿着一块单片机,总是要翻书查资料,放到这里以便以后查阅 40:VCC 电源+5V 20:VSS 接地 19和18:XTL1和XTL2 振荡电路 29: PSEN 片外ROM选通信号,低电平有效 30:ALE/PROG 地址锁存信号输出端/EPROM编程脉冲输入端 09: RST/VPD 复位信号输入端 31: EA/VPP 内外部ROM选择端 P0口 双向I/O口 驱动电流为10mA P1口 准双向通用I/O口 驱动电流为20mA P2口 准双向I/O口 驱动电流为20mA P3口 多用途口 驱动电流为20mA P0口 当准双向口使用时,加上拉电阻(P0口作为输出口时,因输出级
[单片机]
基于51单片机RTL8019AS的网卡驱动程序
SNMP网管板使用了RTL8019AS 10M ISA网卡芯片接入以太网。选它的好处是:NE2000兼容,软件移植性好;接口简单不用转换芯片如PCI-ISA桥;价格便宜2.1$/片(我的购入价为22元RMB/片);带宽充裕(针对51);较长一段时间内不会停产。8019有3种配置模式:跳线方式、即插即用P&P方式、串行Flash配置方式。为了节省成本,我去掉了9346而使用X5045作为闪盘存储MAC地址和其他可配置信息。P&P模式用在PC机中,这里用不上。只剩下跳线配置模式可用,它的电路设计参考REALTEK提供的DEMO板图纸。一天时间就可以完成,相对来说硬件设计比较简单。 与这部分硬件相对应的软件是网卡驱动。所
[单片机]
TCP/IP协议在VRS51单片机上的实现
引言 随着人们对信息化程度的要求不断提高, 设备上网已经成为一个趋势。32位机资源丰富,上网方案也较为成熟,但成本相对较高,因而价位偏低的8位机上网方案成为研究的热点。但是,8位机资源有限,因此在实现8位机以太网连接时,一定要考虑周全。本文介绍在VRS51L3074上实现TCP/IP协议栈uIP的移植,成功实现了socket通信。 硬件平台 本方案的硬件平台主要由VRS51L3074和CS8900A组成,经网络变压器的隔离,CS8900A与网络接口RJ-45连接上,这样整个系统就可以连接到Ethernet。数据输入可由串口传递给系统。 VRS51L3074简介 VRS51L3074是Ramtron公司最新推出
[单片机]
汇编中各寄存器的作用
寄存器 英文名称:Register 寄存器定义 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 8 位元寄存器 或 32 位元寄存器 。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。 寄存器通常都用来意指由一
[单片机]