PIC单片机之16C84单片机介绍(一)
,可写的。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 ;否则入。
- 评价Spice模型不能仅考虑直流与交流性能(11-26)
- 基于PIC单片机的数字式智能铅酸电池充电器的设计 (01-02)
- Atmel 的picoPower 技术延长电池寿命(04-25)
- 基于PIC16F676的镍氢电池充电管理系统设计(09-09)
- 用PIC16F87X单片机实现高分辨率频率计的一种方法(11-06)
- PIC单片机A/D转换数据存储及串口效率(11-11)