微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > PIC单片机之16C84单片机介绍(一)

PIC单片机之16C84单片机介绍(一)

时间:11-14 来源:互联网 点击:

,可写的。PCLATH(PC latch high) 是作为PC12:8>的保持寄存器,这几位的内容被传送到程序计数器 的高位。当程序计数器在执行CALL,GOTO或写PCL等指令时,即向PC装入新的值。PC的高位由PCLATH装入。

  具有8个13位宽度的硬件堆栈。堆栈空间它既不是程序存储器的一部分,也不是数据存储器的一个部分,堆栈的指针是不可读/写的。当执行CALL指令或中断被响应时,整个13位的PC被入堆栈。在执行RETURN,RETLW,RETFIE等指令时,堆栈被弹出。PUSH(压入)和POP(弹出)不影响PCLATH。

  堆栈是作为循环缓冲器。当堆栈被压入38次后,第9次压入将占据第一次压入的位置,第十次压入将占据第二次压入的位置,等等。同样当堆栈弹出第9次时,与第一次弹出是一样的。注意,没有状态位来 指明堆栈上溢式下溢的条件。没有PUSH,POP指令助记符,但CALL,R ETURN,RETLW,RETFIE等指令的执行或中断发生,将实际发生压栈退栈。

  4-2程序存储器的页

  PIC16C84具有1K的程序存储器,CALL,GOTO指令只有11位的地址范围,这11位的地址范围允许分支在2K程序存储器页大小的范围。

  为将来PIC16C8X程序存储器的扩展,必须由另外两位来说明程序 存储器的页。这些页位来自于PCLATH4:3>。当执行CALL、GOTO指令时,用户必须确保这些页位的编程等指向要求的程序存储器的页。

  如果执行CALL指令,整个13位被压入堆栈。所以对于返回指令不要求 对PCLATH4:3>位的管理。因为PC的值将会由退栈而获得。注意:PIC16C84忽略了PCLATH4:3>位,这些位用于程序存储页1,2,3(0800H-1FFFH),不可以把PIC16C84的PCLATH4:3>位用作通用读/写位,这会影响将来产品的向上兼容。

  4-3间接寻址,INDF和FSR的作用

  INDF寄存器不是物理寄存器,只是被用来与FSR寄存器连接以执行间接寻址。

  使用INDF寄存器,就可以实现间接寻址。

  使用INDF寄存器的任何指令,实际寻址数据是由文件选择寄存器(FSR)所决定的。读INDF自身(FSR=0),将产生00H。向INDF写,结果无操作(显然可以提供状态位)。8位FSR寄存器同状态寄存器STATUS7>(IRP)组合可以得到9位地址。

  然而PIC16C84是不用IRP的。使用下面的例程序,通过间接寻址清零。2OH~2FH单位。

  MOVLW 20H ;初始化RAM的指针

  MOVF FSR ;到FSR

  NEXT CLRF INDF ;通过间接寻址清0,由FSR的内容所指问的寄存器。

  INCF FSR ;(FSR)+1→FSR

  BIFSS FSR,4;当FSR的第4位为1跳过下一条指令

  GOTO NEXT ;否则入。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top