MCS-51单片机有几个工作寄存器?如何选择?

如题所述

工作寄存器有4组,每组都是8个工作寄存器R0~R7,通过PSW中的RS1、RS0两位来选择使用哪一组,如果不选,默认是选择第0组。
RS1RS0组合为00时,选中第0组工作寄存器,R0~R7地址为00H~07H;
RS1RS0组合为01时,选中第1组工作寄存器,R0~R7地址为08H~0FH;
RS1RS0组合为10时,选中第2组工作寄存器,R0~R7地址为10H~17H;
RS1RS0组合为11时,选中第3组工作寄存器,R0~R7地址为18H~1FH。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-26
8051有4组工作寄存器,每组有8个字节(R0-R7),选择是由PSW的RS1 RS0位来定的
如果你是C的话,不用去理会,系统自动分配
如果是汇编,默认00组就可以了,不由去分配它,忘了切换回来会很容易出现问题
希望能帮到你
第2个回答  2011-06-26
4个 通用工作寄存器组
由RS0 RS1的取值确定
每个的工作寄存器组由R0~R7 组成
第3个回答  2011-06-27
51单片机中的存储空间,从功能上来分可以分为程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器5大部分(还有其他分类方法,具体看教科书)。
不同的存储空间有不同的功能,也有不同的指令与之对应。如程序存储器用来存储代码,其中的内容一般不能修改。你上面的MOVC 指令就是对应的用于访问程序存储空间的指令,该指令被称为查表指令,格式为MOVC A,@A+DPTR 和 MOVC A,@A+PC ,功能为程序存储器向累加器A传送数据(查表是一项重要的编程技巧,如在数码显示中用来预存被显示的内容,具体你自己在百度一下)。注意该指令只有这两种格式,其它应用都会出错。
Rn与DPH、DPL都属于内部数据存储器的寄存器,细分来说Rn属于内部数据存储器的RAM块,而DPH、DPL都属于内部数据存储器的特殊功能寄存器。其中Rn8位寄存器,DPTR为16位寄存器。51单片机中寄存器是16位的有定时器/计数器寄存器T0、T1与T2,数据指针DPTR,程序计数器PC等,它们都属于特殊功能寄存器,且都分解为高字节与低字节,如DPTR分解为DPH、DPL。它们的访问指令为MOV。所以你只要将原指令中的MOVC改为MOV就行了.
最后提醒一下:汇编语言中的指令不是对每一类寄存器都有效的,不同的寄存器有不同的指令与之对应.

51单片机的寄存器分为工作寄存器和特殊功能寄存器两大类。工作寄存器在内部RAM的00H~1FH地址区,共分4组,都用R0~R7表示,因为编写主程序时需要调用子程序或响应中断服务程序,如果都使用一组工作寄存器,必然会造成寄存器的数据冲突,而出现错误。因此,需用特殊功能寄存器程序状态字(PSW)的RS0、RS1两位来设置使用的工作寄存器组,应单片机开机上电复位时,PSW为00H,故自动选择第0组工作寄存器,而子程序和中断服务程序可使用第1组、第2组或第3组工作寄存器,这样即使编程时使用了相同的工作寄存器,也不会造成寄存器的数据冲突了。
特殊功能寄存器在内部RAM的80H~0FFH地址区,主要有累加器A,寄存器B,程序状态字PSW,P0~P3 I/O口寄存器,定时/计数器及串行通信控制、中断控制等特殊功能寄存器,这些寄存器的应用课本上都有详细的介绍,需要慢慢的学习体会。最好卖块51单片机的仿真实验板,边练边学,才能提高学习兴趣加深理解。
第4个回答  2011-06-26
要看具体的牌子吧,和你要使用的寄存器
相似回答