❶ 试说明51单片机中通用寄存器组的组成情况,对应的物理空间,切换方式以及这种切换方式的用途及优势
51单片机中通用寄存器组共有8个通用寄存器,分别以R0、R1、R2、R3、R4、R5、R6、R7命名。
51单片机中通用寄存器组使用内部RAM的低32字节物理空间,被分成4块,每块占用连续8个字节,由低到高对应R0、R1、R2、R3、R4、R5、R6、R7。
同一时刻,通用寄存器组只能使用一块内部RAM块,没被使用的RAM块可以用作普通存储器使用。
通用寄存器组使用内部RAM块可以切换,切换由改写PWS寄存器完成,见下图。通过这种切换,可以方便的保护或者传递数据,用在子程序调用、中断程序中。这种方式的优势就是速度快。
❷ 单片机课程中@Ri含义是什么
@Ri这个符号是@R0或@R1 ,也就是寄存器R0或R1的值作为地址。例如:
mov R0,#32H
mov A,@R0
就是将32H单元的内容送给A
❸ 51单片机怎么扩大R0和R1的寻址范围
你提这个问题之前,需要先搞清楚标准51单片机对片外数据存储器有哪两种访问方法。
一种是16位片外寻址,通过 MOVX @DPTR 系列指令实现,即借助16位的DPTR指针来访问64kB空间的片外数据存储器。此时P2口输出高8位地址信号,P0口分时输出低8位地址信号、输入/输出8位数据信号。
一种是8位片外寻址(页寻址),通过 MOVX @Ri 系列指令实现,即借助8位的Ri指针来访问当前256B页面的片外数据存储器。此时P2口的状态决定了高8位地址信号(即所谓的页面号),P0口分时输出8位页面内地址信号、输入/输出8位数据信号。
所以你应该明白,对于你所提的需求,如果限制了不能使用DPTR,那么显然应该用第二种方法,即手工操作P2口切换页面,之后通过 MOVX @Ri 系列指令来搬运数据。
例如要将X:4800h的16字节搬运到X:EEF0h开始的16字节空间内,你可以将R0初始化为00h、R1初始化为F0h,每次先将P2置为48h,MOVX A,@R0,然后将P2置为EFh,MOVX @R1, A,然后R0、R1累加,以此循环16次。
❹ 单片机或ORL指令有什么作用
ORL能将某些位置一,对于想置一的位与1进行“或”逻辑,对于想保持原来的位与0进行“或”逻辑。
例如:(A) = 1001 1100B = 9CH,(E1) = DFH,(DFH) = 2DH,(R0) = E1H
ORL A, R1意思就是将累加器A中的数据或上R1中的数据,数据保存在A中。
ORL就是或的意思,是寄存器或到累加器中。
例如:(R1)=38H,(A)=26H,则结果是(A)=3EH.
注意事项
ORL为逻辑或指令
ORL A, Rn ;(A) ∨(Rn)→A ,n=0~7
ORL A, direct ;(A) ∨(direct)→A
ORL A, #data ;(A) ∨data→A
ORL A, @Ri ;(A) ∨((Ri))→A,i=0,1
ORL direct, A ;(direct) ∨(A)→direct
ORL direct, #data ;(direct) ∨#data→direct
❺ 51单片机中R0,R1,R2.....都表示的是什么
stmib
r0!
,{r1,r2}
是指将r1,r2的值保存到r0指向的存储单元中(r0自动加1)
ldmia
r0!
,{r1,r2}
是指将r0指向的单元中的数据读出到r1,r2中(r0自动加1)