51单片机入门基础知识(二)之寄存器

上一篇文章中我们讲了51系列单片机的内部结构,它的中央处理单元CPU中包含有运算器,控制逻辑以及特殊功能寄存器。寄存器是中央处理器内用来暂存指令、数据和地址的模块。寄存器的存贮容量有限,读写速度非常快。51单片机的寄存器位于某段RAM区内,我们可以在官方数据手册中了解到详细情况。

在8051系列单片机中,00H~7FH是片内数据存储器空间,80H~FFH是特殊功能寄存器空间(仅占用20多字节);对于8052单片机,00H~7FH为片内数据存储器空间,80H~FFH是数据存储器和特殊功能寄存器地址重叠空间。但是高128字节RAM与特殊功能寄存器区貌似共用相同的地址范围,但物理上是独立的,使用时通过不同的寻址方式加以区分。高128字节RAM只能间接寻址,特殊功能寄存器区只可直接寻址。低128字节的数据存储器既可直接寻址也可间接寻址。
51单片机的32个工作寄存器与RAM安排在同一个队列空间,统一编址并使用相同的寻址方式(直接寻址和间接寻址)。如图中所示,00H~1FH地址中包含4组工作寄存器区,每组有8个工作寄存器(R0~R7),共占32个单元。
为了统一和增强灵活性,累加器ACC、寄存器B以及程序状态寄存器PSW也被纳入特殊功能寄存器空间进行寻址。
21个特殊功能寄存器(52单片机是26个)不连续地分布在128个字节特殊功能寄存器SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,在这21个寄存器中,我们可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。


对于这些定时器的具体介绍在教材和芯片手册都会有详细的说明,我这里就不一一列出讲解了,后续讲到特定功能时再具体讲解它们的用途。大家不用死记硬背,平时没事时多看几眼,大概心里有些印象就好了,在编程的时候如果记不住了就赶紧打开资料看一下,对着资料把程序调通就OK了。
我个人是建议没必要去记忆这些寄存器或其他信息的,首先考试不会考你默写程序,二是你使用的芯片可能已经升级了,它可能包含更多新的寄存器,还有一个原因是这只是一款基础的单片机,以后如果接触更复杂的单片机你要是还想着记忆所以寄存器那你可能会记到哭,并且等你辛辛苦苦记住了在你使用时发现很多没用上。
作为一种应用型技术课程掌握它的关键在于熟练使用它,如果你记性特别好能全记下来那你真是棒棒哒,如果你记性特别不好,看了就忘,那也无所谓,告诉你一个熟练它的好办法就是多动手编程,写多了就有印象了。可能有朋友还会说我练过很多程序还是掌握不了,那我现在就告诉你,既然你编了那么多程序,如果你确定把功能都调通了就把它给保存下来呀,这样就用不着每次都要重新编写一次了。在平时的学习,工作过程中把你调通的功能模块都归档保存,以后编程时直接调用或做适当修改就能使用,这样就可以大大提高开发效率。甚至在写代码时时刻提醒自己能不能把这段代码做成通用代码,让它可以不受单片机平台的影响,这种不重复造轮子的习惯从初学时养成是最好的。具体的编程方法后面的编程内容中会讲到,网上也有许多资料可以自己先了解。
今天的知识就分享到这里,下一篇内容我们再接着继续学习。