如何解决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

微信公众号