英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3002|回复: 0

16F917或者628A的PCL跟PCLATH问题

[复制链接]
发表于 2009-3-11 14:06:37 | 显示全部楼层 |阅读模式
当程序不超出2K时(00H~7FFH),当用CALL或者GOTO时,是否要同时改变PCLATH?又当要改变PLC的值(例如:ADDWF   PCL)时,又是否要同时改变PCLATH?比如:程序编译后,1.当前的一条程序放在了003BH地址,现在要跳到015BH去查表并返回一个值,象这种情况是否要在跳之前加两条:MOVLW   01H,    MOVWF   PLCATH呢?然后在查表返回值后返回003CH时,又是否要返回之前加两条:MOVLW   00H,    MOVWF   PLCATH呢?
2.当前的一条程序放在了05AFH地址,现在要跳到01FFH去查表并返回一个值,象这种情况是否要在跳之前加两条:MOVLW   01H,    MOVWF   PLCATH呢?然后在查表返回值后返回05B0H时,又是否要返回之前加两条:MOVLW   05H,    MOVWF   PLCATH呢?



要改变PCLATH,第二种情况要注意,ADDWF PCL后进位要加到PCLATH。。。
全地址查表程序
org 0x80
movlw LOW Table    ;get low 8 bits of Table address
addwf offset,F            ;do an 8-bit add operation
movlw HIGH Table   ;get high 5 bits of Table address
btfsc status,c               ;page crossed?
addlw 1                       ;yes then increment high address
movwf PCLATH       ;load high address in latch
movf offset,w            ;load computed offset in w reg
call Table
.
.
org 0x9FD
Table:
movwf PCL,F            ;load computed offset in PCL
retlw ’A’               ;0x9FE return the ASCII char A
retlw ’B’               ;0x9FF return the ASCII char B
retlw ’C’               ;0xA00 return the ASCII char C
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-4-18 12:45 , Processed in 0.051993 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表