通用寄存器用法单一,但专用寄存器却各有各的用处,现将较基本的专用寄存器作一简单介绍。
(1)程序计数器(PCL、PCLATH)。程序计数器PC是对程序进行管理的计数器。 PIC16F84 的程序计数
器为13位宽,最大可寻址的存储空间为8k×14位。实际上16F84只使用前1k×14位(0000~03FFH)存储空间
。因程序计数器有13位宽,而专用寄存器只有8位。因此PC由两个专用寄存器构成。其低八位PCL是一个可
读/写寄存器(地址为02H或82H),而高字节PCH(有效位5位)不能直接进行读/写操作,它是通过一个8位的
保持寄存器PCLATH(地址为0A或8AH)把高5位地址传送给程序计数器的高字节。当执行CALL、GOTO指令写
PCL时,PC值的高字节就从PCLATH寄存器中装入。
(2)状态寄存器STATUS。状态寄存器STATUS含有算术逻辑单元ALU运算结果的状态(如有无进位等)、
复位状态及数据存储体选择位。有关位位的设定如表2所示,功能如下:
1)第0位。进位/借位位C。执行加、减运算指令 表2 IRP RP1 RP0 TO PD Z DC C 后,若结果有进位或借位,则C被置1,否则置0。在执行移位指令时,也要用到这一位。 2)第1位。辅助进位/借位位DC。执行加、减运算指令后,若结果的低四位向高四位有进位或借位,
则DC置1,否则置0。 3)第2位。零标志位运算结果为零,Z被置1;运算结果不为零,Z被清零。 4)第3位。低功耗标志位PD。上电复位或执行CLRWDT指令后置1,执行SLEEP指令后被清零。 5)第4位。定时时间到标志位TO。上电复位或执行CLRWDT、SLEEP指令后被置1,监视定时器的定时时
间到被清零。 6)第5位和第6位(RP0、RP1)。这两位是用于直接寻址时的寄存器体选择位。即00——选中Bank0(00H
~7FH);01——选中Bank1(80H~FFH),16F84只有两个存储体。故10、11不用。 7)第7位IRP。这是间接寻址的寄存体选择位。0——选中Bank0、1(00H~FFH),1——选中Bank2、3
。16F84只有Bank0、1,所以此IRP位应被置为0。
(3)间接寻址INDF和FSR寄存器
INDF寄存器不是一个物理寄存器,而是一个逻辑功能的寄存器(地址为00H或80H),当对INDF寄存器
进行寻址时,实际上是访问FSR寄存器内容所指的单元,即把FSR寄存器作为间接寄存器使用。FSR称为“
寄存器选择”寄存器,地址为(04H或84H)。对INDF寄存器本身进行间接寻址访问,将读出FSR寄存器的内
容,例如当FSR=00H时,间接寻址读出INDF的数据将为00H。用间接寻址方式写入INDF寄存器时,虽然写入
操作可能会影响STATUS中的状态字,但写入的数据是无效的。
相关链接:http://www.hx51.com/Training/Study/Index.html |