知情同意PCL和PCLATH故障

N

neoaspilet11

Guest
您好大家,

我得到这个操纵PCL和知情同意PCLATH寄存器有趣的经验。

我在800级海量数据表 内存位置。阿我修改数据表的版本已超过3000内存位置。但是
, 我现在还没有编码。

这个问题是这样的

WREG = 7C条,在进入到数据表
PCLATH =从00

表addwf氯化磷,1 =氯化磷氯化磷 瓦特地址= 0x83
....
....
....
retlw二十;地址= 00FF
retlw月月;地址= 0100
retlw两个负载;地址= 0101
.....
.....

当您看到地址指令执行,PCL考察= 100h后或溢出!简单的微处理器复位向量执行
, 而不是执行地址0100h。合和我花了30分钟
, 体会什么是我的错误。

虽然我已通过简单的数除以表中的数据表和操纵的价值这一问题的解决要添加到PCL,PCLATH与PCL我仍然有一些问题。

1。)难道不是自动除指令时溢出氯化磷为PCL,PCLATH将递增?

2。)是否有其他的方式来实施的不分割到多个表的表?(应当指出
, 增加值为PCL超过8位。这意味着一个适当的PCLATH manipualtion也必须这样做。)

3。)是否有可能操纵只有一个指令仅增值的PCL和PCLATH?

感谢您的想法。

 
你可以有大桌子跳跃
, 如果你做正确。签出piclist,但这里在asm的一个例子:

代码:TABLELOOKUP:

movlw(高)(TABLESTART)

addwf offsetHigh,瓦特;增加高的部分

movwf PCLATH

movf offsetLow,瓦特

addlw(低)TABLESTART;增加部分低

btfsc状态,荤,开展部分溢出如果低

incf PCLATH,女

movwf氯化磷;跳

TABLESTART:

 
您好jonw0224,

这确实是非常整洁!Thnak你。虽然我仍然要试试你的代码,但至少你给了我一个想法。

neoaspilet11是expresion(高)(TABLESTART)等于上的5位地址TABLESTART?

是expresion(低)(TABLESTART)等于低8位地址TABLESTART?

 
该代码,我是从piclist(www.piclist.com大约一年前)。有同一事物的其他变体。

对于16位的数字,高给出了最重要的8位和低给出了最重要的8位。对于24位的数字,可以使用中赋予中心的8位。因此,基本上是ASM中,是的。

 

Welcome to EDABoard.com

Sponsor

Back
Top