您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC16F877A单片机的基本功能模块 正文
PIC16F877A单片机的基本功能模块

PIC16F877A单片机的基本功能模块

点击数:7801 次   录入时间:03-04 12:00:14   整理:http://www.55dianzi.com   PIC单片机

  PIC16F877A单片机是MicroChip公司的中档产品,它采用14位的RISC指令系统,内部集成了A/D转换器、EEPROM、模拟比较器、带比较和捕捉功能的定时器/计数器、PWM输出,异步串行通信( USART)电路等。

  1).程序存储器和堆栈PIC16F877A单片机内部具有8K×14位的Flash程序存储器,程序存储器具有13位宽的程序计数器PCo程序存储器的地址范围为OOOOH—1FFFH。由程序计数器提供13条地址线进行单元选择,每个单元宽14位(即PIC16F877A的指令字节宽度为14位),能够存放一条PIC单片机系统指令。

  在系统上电或其他复位情况下,程序计数器均从OOOOH地址单元开始工作。如果遇到调用子程序或系统发生事件中断时,将把当前程序断点处的地址送入8级×14位的堆栈区域进行保护。堆栈是一个独立的存储区域,在调用的子程序或中断服务程序执行完后,再恢复断点地址。通过14位程序总线,取出对应程序指令的机器码,送入指令寄存器,将组成的操作码和操作数进行有效分离。如果操作数为地址,则进入地址复用器;如果操作数为数据,则进入数据复用器。而操作码将在指令译码和控制单元中转化为相应的功能操作。

  PIC的多数指令均是顺序执行,即使条件跳转也是隔行间接跳转。具有大范围转移功能的指令只有两条:无条件转移GOTO语句和调用子程序CALL语句。但它们受到2KB范围的约束。所以必须将整个程序存储器以2KB为单位进行分页。如下图所示,8KB程序存储器共分作4页,分别称为页0、页1、页2和页3。

56

  PIC16F877A单片机的上电复位地址是OOOOH,中断入口地址是0004H,中断产生时PC指针会自动指向该地址。在进行中断应用时,特别是涉及多个中断同时打开时,必须要逐个对中断标志位( XXIF)进行判断。编程时,在0000H~0003H单元内要放置一条GOTO跳转指令,跳转到主程序,以避开0004H存储器单元。

  2).数据存储器PIC单片机的数据存储器与传统的MCS-51单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类。数据存储器的每个存储单元除具备普通存储器功能之外,还能实现移位、置位、复位和位测试等通常只有寄存器才能完成的操作,功能非常强大。PIC16F877A单片机RAM数据存储器与程序存储器一样,在其51 2个地址空间( 000H—1FFH)进行类似区域划分,分为4个体( Bank),从左到右分别记为体0、体1、体2和体3,每个“体”均为128×8位宽的存储单元。特殊功能寄存器安排在低位地址存储单元,通用寄存器在高位地址存储单元。下图是PIC16F877A的寄存器组映射图,对通用寄存器可以直接进行访问,也可以通过寄存器FSR间接访问。

65

  通过比较可知,程序存储器的4等分区域采用串接方式排列,而数据存储器的4等分区域采用并接方式排列。

  通用寄存器PIC16F877A单片机的通用寄存器扮演了其他单片机中的通用寄存器和片内RAM存储器的双重角色。

  PIC16F877A单片机的通用寄存器主要分布在数据存储器RAM各体的下半部分区域,包括体O和体I区域各有96个单元(20H—7FH和AOH—FFH)及体2和体3区域各有1 12个单元(110H—17FH和190H~1FFH)。在体1、体2和体3的数据存储器RAM体内,分别存在一个映射的地址区域:FOH—FFH、170H—17FH和1FOH—1FFH。这些单元都是虚拟设计,本身的硬件结构并不存在,但它们的地址信息都可以索引(或映射)到体O中的高地址(70H—7FH)处的16个RAM单元。正是基于这样的数据存储器结构,实际的通用寄存器单元数为368个。

  特殊功能寄存器特殊功能寄存器SFR主要分布在数据存储器RAM各体的上半部分区域。PIC16F87X系列单片机的特殊功能寄存器的布局保持了高度一致,目的是便于PIC单片机之间的相互兼容和调换。

  特殊功能寄存器中,有的专门用于控制CPU内核的性能配置,有的专门用于控制各种外围设备模块的操作,因此又可依用途分为两类:一类是与CPU内核相关的寄存器,另一类是与外围模块相关的寄存器。在此我们仅介绍与CPU内核相关的几个常用特殊功能寄存器,其余的则到讲解各种功能部件和外围模块时再介绍。

  (1).状态寄存器STATUS

  状态寄存器的内容用来记录算术逻辑单元ALU的运算状态和算术特征、CPU的特殊运行状态、以及RAM数据存储器的体间选择等信息。状态寄存器与通用寄存器有着本质的区别,例如功能位/TO和/PD只能读;另一些位的状态将取决于运算结果。

  状态寄存器STATAS(地址03H、83H、103H、183H):

45

78

  注意:对于借位,极性相反,执行减法指令时,是通过加上第二操作数的补码实现的;对于移位指令( RRF、RLF),是把源寄存器的最高位或最低位放入进位位C实现的。

  (2).选择寄存器OPTION    选择寄存器OPTION是一个可读/写寄存器,它含有用于设置定时器TMRO前分频器/监视定时器WDT后分频器、外部INT中断、TMRO和B口的弱上拉等各种控制位。

  注意:如果需要定时器TMRO得到1:1的前分频值,可以把前分频器分配给监视定时器WDT(即PSA=1)。

54

56

  Bit2—Bit0( PS2—PSO)前分频器倍率选择位。

  注意:当使用低电压编程LVP并且PORTB引脚弱上拉使能时,TRISB的Bit3清O以关闭RB3的弱上拉才能确保芯片的正确运行。

  (3).间接寻址寄存器INDF和文件选择寄存器FSR

  间接寻址寄存器INDF位于数据存储器各体的最低位单元,即OOH、80H、100H和180Ho它们是互相映射,只具有地址编码,但物理上并不真正存在的虚拟寄存器。INDF必须与文件选择寄存器FSR配合,才能实现间接寻址。当访问INDF地址时,实际是访问以FSR内容为地址所指向的数据存储器RAM单元。PIC系列单片机采用这种独特而巧妙的构想,实现对数据存储器的循环访问,也使PIC指令集系统得到很大的精简。

45

  在PIC单片机指令系统中,直接寻址和间接寻址是很重要的数据访问方式,主要是借助于状态寄存器相关位的补充实现数据存储器的选择。直接寻址/间接寻址方式示意图如上图所示。在直接寻址中,体选码来自状态寄存器STATUS的RP1和RPO位,体内的单元地址直接来自指令机器码;而在间接寻址中,体选码由STATUS的IRP位和FSR寄存器的Bit7组成,体内单元地址来自FSR的低7位。

  (4).与PC相关的寄存器PCL和PCLATH

  PIC16F877A单片机程序计数器PC指针宽13位,它总是指向CPU下一条指令所在程序存储器单元的地址。为了与其它8位宽的寄存器进行数据交换,将PC指针分成PCL和PCH两部分:低8位PCL有自己的专用地址,数据信息可读写:而高5位PCH没有自己的地址,是根本不存在的,也就不能直接写入,只能借用寄存器PCLATH进行间接装载。PCLATH实现对高5位PCH的装载分两种情况:一种情况是当执行以PCL为目标的写操作指令时,PC的低8位来自算术逻辑单元ALU的运算结果,PC的高5位来自PCLATH的低5位;另一种情况是执行跳转指令GOTO或调用子程序指令CALL时,PC的低11位直接来自指令码所携带的1 1位地址信息,而PC的高2位由PCLATH的第4位、第3位装载。具体如下图所示。

56

  (5).电源控制寄存器PCON

  电源控制寄存器只有两个有效位,其中一位用来记录和区分是否发生了上电复位和外部引脚/MCLR输入低电平时引起的手动复位或看门狗超时溢出复位;另一位用来记录和鉴别是否发生了掉电复位。

  电源控制寄存器两个有效位的含义如下。

  BitO/BOR:电源上电复位标志,被动参数。

  0:发生了上电复位。当发生上电复位之后,系统自动清零。应该用软件及时将其置位,以便下次利用该位来判断是否发生了电源上电复位:

  1:未发生上电复位。

  Bitl/POR:掉电锁定复位标志,被动参数。

  0:发生了掉电锁定复位。当发生掉电锁定复位之后,系统自动清零。应该用软件及时将其置位,以便下次利用该位来判断是否发生了电源掉电锁定复位:

[1] [2]  下一页


本文关键字:单片机  PIC单片机单片机-工控设备 - PIC单片机