廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 20704 個閱讀者
 
<< 上頁  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.077412 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言