PIC单片机16F84的内部硬件资源(一)
期笔者介绍的 PIC16F84 点亮一只发光二极管的源程序实例是为了说明 PIC 单片机 16F84 具体应用时的基本格式。 现在我们已经知道要单片机工作,就需用汇编语言编制程序。而对某个 PIC 单片机编程时,还需对选用的 PIC 单片机内部硬件资源有所了解。这里介绍 PIC16F84 单片机的内部结构,如图 1 所示的框图。由图 1 看出,其基本组成可分为四个主要部分,即运算器 ALU 和工作寄存器 W;程序存储器;数据存储器和输入/输出(I/O)口;堆栈存储器和定时器等。现分别介绍如下。
1. 运算器 ALU 及工作寄存器 W 运算器 ALU 是一个通用算术、逻辑运算单元,用它可以对工作寄存器 W 和任何通用寄存器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、异或等)。16F84 是八位单片机,ALU 的字长是八位。在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器 W 中,而另一个操作数是在通用寄存器中,或者是一个立即数。在只有一个操作数的情况下,该数要么是在工作寄存器 W 中,要么是在通用寄存器中。W 寄存器是一个专用于 ALU 操作的寄存器,它是不可寻址的。 根据所执行的指令,ALU 还可能会影响框图中状态寄存器 STATUS 的进位标志 C、全零标志 Z 等。
2. 程序存储器单片机内存放程序指令的存储器称为程序存储器。PIC16F84 的所有指令字长为 14 位。所以程序存储器的各存储单元是 14 位宽。一个存储单元存放一条指令。16F84 的程序存贮器有 1024(28)个存储单元(存储容量为 1k)。这些程序存储器都是由 FPEROM 构成的。 程序存储器是由程序计数器 PC 寻址的。16F84 的程序计数器为 13 位宽,可寻址 8K(8×1024)的程序存储器空间,但 16F84 实际上只使用了 1k 的空间(单元地址为 0~3FFH)。
当访问超过这些地址空间的存储单元时,将导致循环回到有效的存储空间。 对于用过其它单片机的用户,可能会感到 16F84 的片内存储器容量太少了。实际上并非如此,因为 16F84 的指令系统都是由单字指令构成的,相应于其它由二字节、三字节甚至四字节指令的单片机而言,PIC 单片机的程序存储器有效容量要比标称值扩大 2?5 倍到 3 倍。