登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

[求助]关于TJMP的一个搞不明白的地方

作者:大俊 栏目:MCU技术
[求助]关于TJMP的一个搞不明白的地方
  各位大虾,俺以前碰到这样的情况,把TJMP放在一个ROMBANK的最后一个地址时,程序总是跑飞,也不知道跑哪去了,晕死,真的粉奇怪。搞得后来都是把TJMP放到一个表格的前面,不知道哪位高手知道是什么原因啊,帮忙解释一下,多谢!

* - 本贴最后修改时间:2006-9-15 17:18:50 修改者:大俊

2楼: >>参与讨论
jusun66
我也见过
呵,这个问题我也碰过,不过我现在知道了。

因为TJMP的跳转地址是(PC11~PC8)(TBR)(ACC),举个例子,比如现在把TJMP放在7FFH的地址,因为执行TJMP的时候PC值会自加一,这个时候(PC11~PC8)将变成000B,所以TJMP不会跳到7(TBR)(ACC)的位置,而且跳到了0(TBR)(ACC)的位置,你可以用单步跑去看看TJMP跳到哪里的。

不知道你碰到问题是不是这样的呢?如果是,还是建议不要把TJMP放在ROMBANK结尾了,一不小心可能就出问题了,现在我也都是不放在结尾的。


3楼: >>参与讨论
yewuyi
都忘了……
SINO的资料问题多多,记得当时我用的时候订正了老多问题……

4楼: >>参与讨论
iammercy
那如果建一个大于256个Byte的表如何寻址
 
5楼: >>参与讨论
warm_ice
中颖MCU
“jusun66”朋友对于“TJMP”查表的解释是正确的,一般建议朋友们不要把TJMP放在如7FFH,3FFH,1FFH,2FFH等这些位置,以免出现问题,当然,有些经验丰富的朋友也会拿这个来对程序进行加密,呵呵。

“iammercy”朋友,如果要定义大于256行的表格,一个方法是把这个表分几个子表来做;另一个方法是对于中颖的一些IC,有RDT查表的功能,可以无限定义表的大小,且可以充分利用16位ROM的空间。

6楼: >>参与讨论
yewuyi
RDT似乎不是什么芯片都可以用的把?
69P42似乎就不支持,大表只能分开查。

7楼: >>参与讨论
大俊
谢谢
大家真是太热情了,谢谢了。

RDT好象是有一些芯片不支持的哦,看看SPEC就知道了

8楼: >>参与讨论
无涯
RDT
jusun66老兄真是高!!!

使用RDT有两个毛病,
一、仿真时经常跑飞,复位或者重新下载程序都不能恢复正常,一定要把ICE断电重来才行,我用的是USB ICE66+67P54EVB。
二、建表格时,DW后面不能写表达式,比如下面的一句就不能编译通过
DW (1010B<<4) | 0011B
只能自己把这个16bit的数值计算好填进去,NND,过上一段时间,神仙也不知道这个数是怎么来的了。

BTW,旧版的的编译器是可以这样写的,所以啊,偶都是用旧版编译器编译,再调进去调试。唉,中颖竟然能把编译器越弄越差,真是服了。

9楼: >>参与讨论
无产阶级
看帖学东西
新手,看看大家的帖子学到了不少,编程时注意了。

10楼: >>参与讨论
ylc_go
同感于RDT
RDT使用起来确实是问题多多啊,我用69P26做过一个产品,在做查表的时候发现有RDT,真是高兴了好一会,可是程序写好了,发现仿真跑起来就是不对,地址值怎么也无法改变,用了中颖网站的一个源程序试了试也不行,真是郁闷啊,最后还是用传统的TJMP来查表~~~建议大家还是用TJMP吧~~
不过有哪位大侠知道如何使用RDT还请赐教啊~

11楼: >>参与讨论
iammercy
re


;SH69P48
rnRDT1   EQU  380h
rnRDT2   EQU  381h
rnRDT3  EQU  382h
rnRDT4   EQU  383h
zWk0   EQU  40h
zWk1   EQU  41h
zWk2   EQU  42h
zWk3   EQU  43h
ORG 0000H
ldi   zWk0   ,0x00
sta  rnRDT4&0x7f  ,(rnRDT4>>7)&0x07
ldi   zWk0   ,0x08
sta   rnRDT3&0x7f  ,(rnRDT3>>7)&0x07
ldi  zWk0   ,0x00
sta   rnRDT2&0x7f  ,(rnRDT2>>7)&0x07
ldi   zWk0   ,0x00
sta   rnRDT1&0x7f  ,(rnRDT1>>7)&0x07
nop
lda  rnRDT4&0x7f  ,(rnRDT4>>7)&0x07
sta   zWk3 ,0
lda   rnRDT3&0x7f  ,(rnRDT3>>7)&0x07
sta   zWk2 ,0
lda   rnRDT2&0x7f  ,(rnRDT2>>7)&0x07
sta  zWk1 ,0
lda   rnRDT1&0x7f  ,(rnRDT1>>7)&0x07
sta   zWk0 ,0
Debug:
  ;set a breakpoint here
nop
nop
jmp   Debug


         org  0800h
DW  0x4567       
END

12楼: >>参与讨论
高建明
地址写进RDT的时候需要延时一个NOP再读取,否则会出错!
 
13楼: >>参与讨论
zwp12002
不是吧.
是不是你的TBR和A没设置好吧??我用那么久都放在后面,没出什么事.

14楼: >>参与讨论
christy6
SDRAM测试
各位大虾,在ARM的平台上怎样来测试SDRAM的好坏啊
使用ARM的NANDBOOT模式,来读写SDRAM
测试SDRAM有什么标准啊

参与讨论
昵称:
讨论内容:
 
 
相关帖子
高温下的单片机抗干扰性会下降吗?
让开发更容易
中颖PK松翰
想做你们MP3 IC代理
关于SH69P42的IO驱动能力
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号