添加收藏夹  设为首页  深圳服务热线:13751165337  13692101218
51电子网联系电话:13751165337
位置:首页 > IC型号导航 > 首字符P型号页 > 首字符P的型号第907页 > PIC16F677-I/ML > PIC16F677-I/ML PDF资料 > PIC16F677-I/ML PDF资料1第46页
PIC16F631/677/685/687/689/690
2.3
PCL和PCLATH
2.3.2
程序计数器( PC)为13位宽。低字节
来自PCL寄存器,它是一个可
写入的寄存器。高字节( PC<12 : 8> )是不能直接
读写,来自PCLATH 。任何
复位后, PC将被清除。图2-9显示了两个
情况下PC的装载。在上面的示例
图2-9显示了如何在PC上写装
PCL ( PCLATH<4 : 0>
PCH)。在下方的例子
图2-9显示了PC的过程中加载
通话
or
GOTO
指令( PCLATH<4 : 3>
PCH)。
在PIC16F631 / 677 /六百八十七分之六百八十五/ 689/ 690器件具有
8级x 13位宽的硬件堆栈(见图2-2
和2-3)。堆栈空间不属于计划的一部分
或数据空间和堆栈指针是不可读
可写。在PC压入堆栈时,
通话
指令执行或中断导致
分支。进行出栈操作中的一个的情况下
RETURN ,
RETLW
OR A
RETFIE
指令执行。 PCLATH是
不受PUSH或POP操作。
堆栈的工作作为一个循环缓冲区。这意味着
后堆栈压栈8次,第九
推进覆盖了从第一个网络存储的价值
推。第十推覆盖第二推送(和
等)。
注1 :
有没有状态位指示堆栈
溢流或溢流条件下叠加。
2:
有没有指令/助记符
被称为PUSH或POP 。这些行动
从的执行时产生的
CALL , RETURN , RETLW
RETFIE
指令或指向了
中断地址。
图2-9:
PCH
12
PC
5
8
7
PC在LOADING
不同情况下
的PCl
0
指令,
PCL作为
目的地
ALU结果
PCLATH<4 : 0>
8
PCLATH
PCH
12
PC
2
PCLATH<4 : 3>
11
11 10
8
7
的PCl
0
GOTO , CALL
Opcode<10 : 0>
2.4
间接寻址, INDF和
FSR寄存器
PCLATH
INDF寄存器不是物理寄存器。地址
INDF寄存器将产生间接寻址。
间接寻址可以通过使用INDF
注册。使用INDF寄存器实际的任何指令
访问数据所指向的网络文件选择寄存器
( FSR ) 。间接读INDF本身会产生00h 。
写入INDF寄存器间接导致空
操作(虽然状态位可能会受影响) 。一
通过连接将得到的9位有效地址
8位FSR和状态寄存器的IRP位,如
如图2-10所示。
一个简单的程序中使用清零RAM单元20h- 2Fh的
间接寻址例2-1 。
2.3.1
修改PCL
在执行任何指令, PCL寄存器作为
目标同时会导致程序
计数器PC<12 : 8>位(PCH )由取代
PCLATH寄存器的内容。这使得整个
程序计数器的内容被改变
写作所需的高5位PCLATH寄存器。
当低8位写入PCL寄存器时,所有的
13位程序计数器的将改变的值
包含在PCLATH寄存器和那些被
写入PCL寄存器。
一个计算
GOTO
是通过将一个偏移量来完成
到程序计数器( ADDWF
PCL ) 。
应谨慎
行使时跳进去一看表或
程序分支表(计算
GOTO )
修改
PCL寄存器。假设PCLATH被设置为
表的起始地址,如果表长度大于
255指令,或如果低8位的存储器的
地址从0xFF到0x00的中间
在表中,那么PCLATH必须递增每个
该表之间发生地址侧翻
起始和表内的目标位置。
欲了解更多信息,请参考应用笔记AN556 ,
“实施
一个表读“
(DS00556).
例2-1:
MOVLW
MOVWF
NEXT
CLRF
INCF
BTFSS
GOTO
CONTINUE
间接寻址
0x20
FSR
INDF
FSR
FSR,4
NEXT
;初始化指针
;到RAM
;清除INDF寄存器
; INC指针
;全部完成?
;没有明确的下一个
;是继续
DS41262E第44页
2008 Microchip的技术公司

深圳市碧威特网络技术有限公司