- 单片机开发从入门到精通(第2版)
- 白林锋 曲培新等编著
- 1055字
- 2024-06-26 16:45:08
1.2.5 特殊功能寄存器
特殊功能寄存器是通过专门规定而且具有特定用途的RAM单元,它是单片机内部很重要的部件。特殊功能寄存器能综合反映单片机系统内部的工作状态和工作方式。包含部分专用寄存器在内,其中一部分控制程序运行,另一部分控制内部部件,如定时器/计数器和串行口的控制,改变控制寄存器的状态就可以改变这些部件的工作方式。
1.特殊功能寄存器标示符
51系列单片机内部堆栈指针(SP)、累加器(A)、程序状态字(PSW)、I/O锁存器、定时器、计数器以及控制寄存器和状态寄存器等都是特殊功能寄存器,和片内RAM统一编址,分散占用80H~FFH单元,共有21个,增强型的52系列单片机则有26个。表1-4列出了单片机的特殊功能寄存器名称、标识符和对应的字节地址,其中含有52系列的寄存器T2、T2CON等。在单片机C语言编程应用中,单片机的特殊功能寄存器标识符经常用到。下面只介绍其中部分寄存器,一些控制寄存器会在单片机内部资源编程应用中详细介绍。
表1-4 单片机的特殊功能寄存器及其地址
(续)
2.特殊功能寄存器的位操作
在程序设计过程中,单片机的功能发挥很多情况下是设置和检测单片机内部的特殊功能寄存器来实现的,如果采用汇编设计程序,必须牢记单片机内部通用寄存器和特殊功能寄存器的作用,所以要求设计者必须有更多的硬件基础。如果采用C语言设计单片机的程序,因为程序中的数据处理和分配是由编译软件自动完成的,通用寄存器在程序设计过程中就可以忽略,并且也不需要记住特殊功能寄存器的地址,只需要记住特殊功能寄存器和每个特殊功能寄存器的位标识符和作用就可以了。
在单片机C语言程序设计中,对特殊功能寄存器的操作很简单,只需对某个寄存器或位标识符赋值即可。比如,PSW=PSW&0x7f与CY=0结果一样,前一个语句是字节操作,后一个语句是位操作。单片机C语言程序设计中常用于控制的特殊功能寄存器的位标识符和位地址表见表1-5,其中T2CON为增强51系列。
表1-5 特殊功能寄存器位标识符和位地址表
(续)
不是所有的特殊功能寄存器都可以进行位的编程操作,对于没有定义位标识符或位标识符重复的寄存器,用户无法对位直接访问,如TMOD,由于其高4位和低4位标识符同名,只能采用字节操作。如要设定低4位为0001B,只需使TMOD=0xf1 & TMOD。特殊功能寄存器有很多用来控制单片机内部各个部件的运行状态,这些寄存器都有针对性的应用,如单片机中断需要IE、IP等寄存器控制。
定时器/计数器、并行I/O口、串行口、中断系统等部件是单片机内部重要的硬件资源,这些资源在以后的学习过程中将通过应用项目重点介绍。另外,特殊功能寄存器是学习单片机程序设计的基础,其应用会在以后章节的相关项目中详细说明。