表2-1是在芯片手册里截取出来的,比如SCON这个寄存器它的地址是98h,那么可以从reg52.h头文件中找到“sfr SCON =0x98;”,用一个SCON的符号与0x98这个地址挂钩,在51单片机的源代码中直接操作SCON,就等于操作0x98这个地址,再对应一下手册,0x98就是98h这个地址,也就是单片机内部真正的SCON寄存器的地址。
表2-1 STC89C51RC/RD+ 系列 8051单片机 串行口特殊功能寄存器 Serial I/O Port SRFs
所以说,98h、99h、B9h、A9h等都是单片机的内部地址,而“Reset Value”这一列都是该寄存器复位后的默认值,比如98h的复位后默认值是0000 0000。
还有更多的关联和挂钩的。截取reg52.h文件中的部分代码如下:
表 2-2 8051单片机特殊功能寄存器
那么如果要访问P0.0和P0.1这两个引脚该怎么处理呢?只需要使用sbit关键词和符号“^”就可以,例如:
Sbit aa = P0^0;
Sbit bb = P0^1;
可以使得aa代表P0.0引脚,而bb代表P0.1管脚,并且可以看到通过这个sbit的定义,访问到80h这个寄存器P0里的任何一位,如表2-3所列。
表 2-3 访问P0口寄存器
51单片机就是这样,可以用代码控制所有的寄存器。