广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 20740 个阅读者
 
<< 上页  1   2   3   4   5   6  下页 >>(共 6 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你试看看用ICE可不可以改.

还有你应该用设断点跟单步执行的方式来确定程式逻辑对不对.


献花 x0 回到顶端 [20 楼] From:台湾 | Posted:2007-03-22 20:57 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用cmovies于2007-03-22 20:57发表的 :
你试看看用ICE可不可以改.

还有你应该用设断点跟单步执行的方式来确定程式逻辑对不对.

ice可以改外部记忆体的内容
但不知道是不是真的改
他有视窗可以修改external mamory的内容
我将其hex依位置全数输入之后
run,ea手动接low,reset之后依然没有预期的动作

而单步执行的话
不知为什么
我输入第一个字元「:」
进去他判断我传进去的不是「:」
他会自动将我输入的+0X40
也就是「:」是0X3A
输入后会变成0X7A
这是什么问题?


献花 x0 回到顶端 [21 楼] From:未知地址 | Posted:2007-03-23 21:22 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我发现原本程式那行
pCode++ = getChar
有问题
将++删掉了
用keil c模拟是正常的
但不知道有没有真正的写入记忆体
因为keil c是不是没办法看到外部记忆体的空间的值呢?
我是在debug模式底下模拟的


献花 x0 回到顶端 [22 楼] From:未知地址 | Posted:2007-03-23 23:44 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

*pCode++ = getChar; 的 ++ 拿掉不就都写在同一个位址了???

因为 KEIL 是透过新华的 Plugin 来控制 ICE. 所以要看 ICE 的支援够不够才知道可不可以动态写.
一般应该都可以.


献花 x0 回到顶端 [23 楼] From:台湾中华电信HINET | Posted:2007-03-24 00:51 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

呃…我看错了
但程式的逻辑应该是没有错
除了checksum那部份我还没改之外
其他读取、写入应该是正常的
只是没办法正常动作
那如果是改成利用offset的方式的话
是否将所有的程式位置加上0X00FF就可以了呢?
而HEX档改用组语写
就是您上次说的方法二
让程式自动去执行而不用手动RESET


献花 x0 回到顶端 [24 楼] From:未知地址 | Posted:2007-03-24 01:08 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

可以, 但是 SRAM 的位址要放在内部 Flash 之后.
那就是说如果是 52 就必须放在 8K 之后.


献花 x0 回到顶端 [25 楼] From:台湾中华电信HINET | Posted:2007-03-24 01:58 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我将程式改成这样
将高位置的直接加上0x80
而低位置则不加
如此则在监看pCode 则是正常的

  47:           *((unsigned char *)&pCode + 0 ) = getChar + 0x80;     // high address
                C:0x0830   900003   MOV     DPTR,#getChar(0x0003)
                C:0x0833   E0     MOVX   A,@DPTR
                C:0x0834   2480   ADD     A,#P0(0x80)
                C:0x0836   900008   MOV     DPTR,#pCode(0x0008)
                C:0x0839   F0     MOVX   @DPTR,A
  48:           getHex();
                C:0x083A   12092C   LCALL   getHex(C:092C)

  49:           *((unsigned char *)&pCode + 1 ) = getChar ;   // low address
                C:0x083D   900003   MOV     DPTR,#getChar(0x0003)
                C:0x0840   E0     MOVX   A,@DPTR
                C:0x0841   900009   MOV     DPTR,#0x0009
                C:0x0844   F0     MOVX   @DPTR,A

但我尝试了输入了两行程式
发现dptr每次都是0x0008及0x0009
请问大大这是什么意思

而我在用ice模拟
用debug
发现我输入的字元跟他watch视窗上的都不一样
我输入0,却变成9
输入「:」,应该是0x3a,却变成0x7a
真是奇怪了


[ 此文章被ken0127在2007-03-24 17:03重新编辑 ]


献花 x0 回到顶端 [26 楼] From:未知地址 | Posted:2007-03-24 13:09 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你用 Large Mode 来编译吗? 怎么 pCode, getChar 都放在 xdata???
依你的程式应该用 Memory Model: Small: variable in DATA 就好了.
还有你应该要看 *pCode++ = getChar; 这行的组合语言, 而不是这两行吧?

你PC程式一次只送一个 bytes 就停了吗? 还是一直在送资料.
如果一直送那当然只能看到除错时的最后一个啊!?


献花 x0 回到顶端 [27 楼] From:台湾中华电信HINET | Posted:2007-03-24 18:50 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我是用larg mode…好像是预设,所以就没注意到了
现在改成small的

而*pCode++ = getChar的组言在下

C:0x0843   0511   INC     0x11
C:0x0845   E511   MOV     A,0x11
C:0x0847   AE10   MOV     R6,pCode(0x10)
C:0x0849   7002   JNZ     C:084D
C:0x084B   0510   INC     pCode(0x10)
C:0x084D   14     DEC     A
C:0x084E   F582   MOV     DPL(0x82),A
C:0x0850   8E83   MOV     DPH(0x83),R6
C:0x0852   E50B   MOV     A,getChar(0x0B)
C:0x0854   F0     MOVX   @DPTR,A

单步时看到各暂存器正常执行
而在ice模拟那边
PC端是一次只送一个字元

而传进去的值很奇怪
刚刚一直试试出了有规则性
在ASCII 21~2F时,增加了20,也就是输入21的话,接收到的值会是41
30~4F时,增加了40
50~6F时,增加了60
70~7E时,增加了80

之前的我用七段时因为只有取后面的值,所以不知道为什么会有增加量的问题
这会是什么原因???


献花 x0 回到顶端 [28 楼] From:未知地址 | Posted:2007-03-24 21:37 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

没遇过这种问题, 如果确定通讯格式都相同的话.
只能猜测是ICE的问题吧!?
你可以烧 51 然后回送给PC试看看.


献花 x0 回到顶端 [29 楼] From:台湾中华电信HINET | Posted:2007-03-24 21:49 |

<< 上页  1   2   3   4   5   6  下页 >>(共 6 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.099570 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言