这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 程序中要用到20位指针地址,该如何处理?

共3条 1/1 1 跳转至

程序中要用到20位指针地址,该如何处理?

助工
2009-08-07 09:49:57     打赏

我在写程序中,要用到PC指针,实际上我用到的这个PC指针是ROM表格的地址。我是在单片机初始化复位后,把ROM表格的数据传送给RAM地址中去,但是瑞萨M16C/60的 内部ROM(程序区)是 XXXXXH~FFFFFH的,(即该指针是20位,相当于比一个字还要多4位)。所以我采用了如下的方法:

ADD.W   #Label1, GPR1  
MOV.W   GPR1, A0
LDE.B(.W)   0F0000H[A0], TEMP1

注:表格中有若干个参数组,每个参数组下面有n个数据,此GPR1相当于n;另外,表格中并未对每个参数组设定相应的标号,故要查询这个参数时需计算出具体地址。
假如给每个参数组都写上标号,则多少个参数就要多少个赋值语句,故考虑到程序的简洁性,采用查询具体地址的方法,然后下一个参数的查询,只需加上一个偏移量即可。

这样可以达到目的(当然以上是基于我计算的GPR1最高位不会溢出的前提下,也就是使最后计算的地址保证在FFFFFH以内),也就是说ADD.W   #Label1, GPR1这条语句里面,实际上是只取了Label1的低16位地址来计算,高4位并没有处理, 这里就出现个问题,编译时提示警告:16-bits value is out of range -32768--65535.请问此警告是否有影响?或是否有其他更好的程序编写处理方法避免这个警告?




关键词: 程序     用到     20位     指针     地址     如何     处理    

菜鸟
2009-08-07 15:39:36     打赏
2楼

没有看得太明白。是说要查表么?
为什么不直接写: LDE.B  Label1[A0], TEMP1?


菜鸟
2009-08-09 22:15:07     打赏
3楼
直接在HEW设置指针为20位模式

瑞萨MCU论坛
www.renesas-mcu.com

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]