如何解决51单片机通用寄存器Rn不够用的问题?
2020-05-19 12:01:49
625
51的工作寄存器一共有32个,为内存中的00H--1FH单元,分为4组,分别是0组00H--07H单元、1组08H--0FH单元、2组10H--17H单元、3组18H--1FH单元,每组的8个单元分别对应R0--R7。
这四组中只有一组是当前工作寄存器,程序中使用的就是当前工作寄存器中的8个单元。当前工作寄存器是可以由我们编程序指定的,并且在程序中可以随时变换。在PSW中,的PSW4、PSW3两位组合的00、01、10、11四个状态,分别指定工作寄存器的0组、1组、2组、3组,只需要用指令改变PSW的这两位状态,就可以改变当前工作寄存器组。这样,实际上就是有32个工作寄存器可以选用。就是这样的了:
RS1 RS0 字节地址
0 0 0组寄存器 00H~07H
0 1 1组寄存器 08H~0FH
1 0 2组寄存器 10H~17H
1 1 3组寄存器 18H~1FH
RS1=PSW.4 RS0=PSW.3
通过更改RS0 RS1 位状态可随意切换4组寄存器。
标签:
pcba