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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3336|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 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-12-24 22:12 , Processed in 0.055992 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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