1、21个寄存器介绍
51系列单片机内部首要有四大功用模块,分别是I/O口模块、中止模块、定时器模块和串口通讯模块(串行I/O口),如其结构和功用如下图:
51单片机把握的好坏,其实便是能否正确操作这四个功用模块,而其操作的本质则又是能否对每个模块所对应寄存器的正确操作。所以下面要点介绍一下51系列单片机内部的特别功用寄存器(简称SFR,以下阐明以此替代)。(关于什么叫特别功用寄存器,这儿先不作介绍,不明白的请查阅51单片机相关材料。)
51单片机内部共有21个SFR,其布局如图2,从图中能够看出,每个SFR占1个字节,大都字节单元中的每一位又有专用的“位称号”。这21个SFR又按是否能够位寻址分为两大部分,ACC、IE、P1等11个能够位寻址,SP、TMOD等不能够位寻址。
图2 51单片机SFR布局图
2、位寻址解说
下面以P1、IE寄存器(可位寻)和TMOD(不行位发)为例解说一下位寻址。

下面再以IE寄存器为例进行位操作的解说。IE寄存器为中止答应寄存器,如各位的效果如图4.其间第7位EA是51单片机5个中止的总开关,如要进入任何一个中止时,需先把EA翻开,因为能够进行位操作,此刻程序有两种写法:1)IE=0x80(假设其它位为0,即1000 0000),也能够直接写EA=1,后者EA=1即归于位操作。这儿要留意和前面P1口第1个引脚操作不同的是,前面程序中需先界说deng1=P1^0,这儿程序中则不需求界说EA=IE^7,因为KEIL软件中的REG52.H头文件中现已界说好了,这儿需求特别留意。
图4 IE中止答应寄存器
至于什么叫不行寻址,则是指不能独自进行每一位的操作,如TMOD定时器作业形式及作业方式寄存器,在进行操作时,只能写TMOD=0xXX。
关于能否进行位操作,能够经过查相关材料知道,当然还有个技巧便是其字节地址换成10进制后能否被“8”整除,能被“8”整除的就能进行位操作,不能被“8”整除就不能,如P1地址为90H,10进制为144 144/8=18,能被整除,所以能够位操作。再如TMOD地址为89H, 10进制为137 137/8=17.125,不能被整除,所以不能够位操作。
3、详细编程中对寄存器的留意
以上解说了位操作的概念,下面接着阐明这21个SFR在详细编程中需求留意的当地。
现在单片机开发过程中首要运用两种言语,一种是汇编言语,一种是C言语。如果是运用汇编言语则21个SFR都需求了解,而且其地址这些都需求记住。如果是C言语编程就相对简略些了,因为现在C言语的通用性,绝大部分单片机开发都运用C言语,这儿说以C为言语进行编程需留意的当地。
在用C编程中咱们只需求撑握IP、IE、SCON、TCON、P1、P2、P3、P4、PCON TMOD、TL0、TH0、TL1、TH1、SBUF15个寄存器,如图5所示,已用红线和蓝线标出,留意红线的能进行位操作,蓝线的不能进行位操作。