它是80C51单片机中最具有特色的部分,几乎所有80C51系列功能的增加和扩展都是通过增加特殊功能寄存器来达到目的的。英文缩写为SFR,是Special Function Register(特殊功能寄存器)的缩写。
MCS-51单片机的CPU字长为8位,内部包含运算器、控制器和特殊功能寄存器。由于特殊功能寄存器在功能和使用方法方面与存储器比较相似,因此将与存储器一同讲解。本小节仅介绍运算器和控制器的基本情况。
MCS-51单片机内部集成了微处理器、存储器、输入接口和输出接口,其体系结构如图2-1所示。在MCS-51单片机中,ROM存放程序代码,RAM存放数据,因此ROM和RAM分别被称为程序存储器和数据存储器。因为,程序存储器和数据存储器是独立分开的,所以MCS-51单片机属于哈佛体系结构。
在微型计算机中,所有信息(如数值、符号和图像等)均以二进制形式存储、传输和计算。由于二进制数冗长、不方便读写和辨认,因此,现代微型计算机也支持编程时使用书写长度更短的十六进制数和十进制数,同时也为各种非数值信息提供了相应的数值编码(即用数值表示非数值信息)方法。
I2 C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。这种总线的主要特性如下:
中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。
Philips公司生产的与MCS 51单片机兼容的CMOS型单片机中,8XC552的功能最强,最具有代表性。它除了具有8051单片机的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、计数器的捕获/比较逻辑、串行总线I2CBUS等都集成在片内。
定时器T2和连接到这个寄存器上的4个16位捕捉寄存器及1个比较器组成定时器T2与捕捉比较逻辑。当在相应引脚上电平发生变化时,捕捉寄存器将捕捉定时器T2的内容,比较逻辑是以固定的时间去设置、复位和触发P4口的输出。
Philips公司生产的与MCS 51单片机兼容的CMOS型单片机中,8XC552的功能最强,最具有代表性。它除了具有8051单片机的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、计数器的捕获/比较逻辑、串行总线I2CBUS等都集成在片内。
8XC51GB有15个中断源,对应有15个固定的中断矢量地址(见图10.8)。其中有7个外部中断是INT0~INT6,外部中断引脚与端口3和端口5引脚的功能复用;有8个内部中断,它们分别是3个定时器中断(定时器T0、T1、T2)、2个可编程定时计数器阵列中断(PCA、PCA1)、1个串行口中断、1个SEP中断和1个A/D中断。下面分别对各个中断作简要介绍。
中断服务处理子程序可简称为中断服务处理程序或中断程序,用于处理单片机的中断事件,只能被单片机硬件调用执行,而不能通过子程序调用指令(ACALL或LCALL)调用执行。中断服务处理程序只能通过RETI指令返回。
当需要清0操作的字节单元的个数增加时,程序中MOV指令的个数也会随之增加。为了降低程序中重复代码的数量,缩短程序的长度,可以采用循环程序结构进行程序设计。
分支结构程序的指令执行顺序与指令在ROM中的存放顺序不同,其中某些具有判断功能的指令会根据判断结果改变接下来的指令执行顺序,从而使程序产生一个或多个分支流向。可用于分支结构程序设计的判断指令主要包括JZ、CJNE和JB等有条件转移指令。根据程序分支的数量,可以将分支程序分为三类:单分支、一般多分支和散转多分支。
目前,结构化是程序设计的基本要求,可以使程序结构清晰、易于读写且方便调试,也能够提高程序设计的效率。在结构化程序设计中,程序的基本结构有三种,即顺序结构、分支结构及循环结构。而子程序(也被称为函数或过程)是一种提高程序模块化程度和重复利用率的程序设计技巧,有时也被当作一种基本的程序结构。
AT89C2051单片机内部有2KB的闪速存储器阵列,一片新的AT89C2051,其存储阵列处于擦除状态(FFH),此时可对其编程,存储阵列一次编程1字节,若编程任何非空字节时,需对整个存储阵列进行片擦除。