51单片机4组工作寄存器R0-R7会不会弄混?任何区分它们
51 单片机工作寄存器组区用来干什么豆包的回答如下
STC51规格书的图片示意
每个工作寄存器组分R0-R7,那么我们赋值和调用时任何保证不会弄混,赋值工作组0中的R0不会赋值到工作组1或其它组中的R0去呢?
这就好比你作为校长的你在大学里,大一有叫R0-R7的学生,大二有叫R0-R7的学生,大三有叫R0-R7的学生,大四有叫R0-R7的学生,你叫一声R0肯定有四个人回应你,但是你如果先喊一声所在年级,比如大一的R0,那么肯定只有一个人回应你,然后你继续说一大堆话,这一堆话肯定是对着大一的R0说的,其它大二、大三、大四的R0肯定都不叼你,说完后你又喊了句大四的R0,那么大四的R0肯定屁颠屁颠的跑过来听你讲话安排工作
单片机一样,第一次进来默认R0是工作组0中的,如果想要用其它组的R0,需要通过已下寄存器来配置
汇编测试代码如下:
ORG 0000H ; 让PC内容为0000H,PC相当于CPU导航,接下来往后的程序,从程序存储器地址0000H开始摆放。
MOV R0,#03H ;这个R0实际操作RAM 00H单元也就是0组中的R0 单片机上电RS1\RS0=0默认使用该组
SETB PSW.3 ; RS0=1
CLRPSW.4 ; RS1=0
MOV R0,#01H ; 这个R0实际操作RAM 08H单元也就是1组中的R0
CLR PSW.3 ; RS0=0
SETBPSW.4 ; RS1=1
MOV R0,#02H ; 这个R0实际操作RAM 10H单元也就是2组中的R0
CLR PSW.3
CLR PSW.4 ;清零RS1、RS0 返回到默认工作组0
MOV A,R0 ;执行完这行代码后,A的值是03(使用的是默认工作组0中的R0的值是3)
END ; 汇编源代码结束标记
执行完 最后一行MOV A,R0后,左边A的值变为3,证明R0的值就是3,也就是第一次赋值的3
谢谢分享 谢谢分享 谢谢分享 来看一下的 感谢版主的分享,赞一个;P 谢谢分享
