會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





xc8編譯後執行發生異常
高級會員
註冊日期:
2014/12/02 11:55
所屬群組:
註冊會員
文章: 82
等級: 8; EXP: 0
HP : 0 / 175
MP : 27 / 1394
離線
程式碼編譯後執行發現異常(紅框畫起來的部分沒去執行)
去查了xc8編出來的組合語言後發現並不是按照我所寫的下去編
(Pro模式下才有此問題,Free去編譯則正常)

這些程序所用到的變數完全都和中斷無關
但不知為何紅框畫起來的那一段被編成成那樣

麻煩大家幫看看,不知道是code寫太爛....
還是xc8 (v1.33) 最佳化後的問題





圖1為程式碼,圖2為xc8編譯後的組語

圖1:程式碼
Open in new window



圖2:組語
Open in new window

6月06日 15:09:54
轉換PDF檔 列印


Re: xc8編譯後執行發生異常
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14052
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4684 / 69401
離線
我看組語部份感覺是沒問題的,設定 slaveaddr = 0xA0 時也會透過 BRA 0x27B4 跳去執行 0xE3 的 RAM 位址。

我建議還是用 C 的方式除錯,你的資料雖是使用結構的宣告,但 IDE 是可以在 Watch Window 看到妳想要看的變數或常數。及使是用 nuion & stract 的宣告一樣可以看到的。

設個斷點來停下程式後看一下資料是否正確。

6月07日 11:32:35
轉換PDF檔 列印


Re: xc8編譯後執行發生異常
高級會員
註冊日期:
2014/12/02 11:55
所屬群組:
註冊會員
文章: 82
等級: 8; EXP: 0
HP : 0 / 175
MP : 27 / 1394
離線
引用:

Ryang 寫道:
我看組語部份感覺是沒問題的,設定 slaveaddr = 0xA0 時也會透過 BRA 0x27B4 跳去執行 0xE3 的 RAM 位址。

我建議還是用 C 的方式除錯,你的資料雖是使用結構的宣告,但 IDE 是可以在 Watch Window 看到妳想要看的變數或常數。及使是用 nuion & stract 的宣告一樣可以看到的。

設個斷點來停下程式後看一下資料是否正確。


從C語言程式碼來看
AddEep_Info.Del.Addr.addr16 = (WORD) AddEep_Info.Read.markAddr32;
上面這行執行完之後,應該要會繼續執行紅框內的
AddEep_Info.Del.Addr.slaveAddr = 0xA2; (這行被編到了0x27A0)

但是xc8編成組語後卻不是這樣編
在0x27B2執行完之後會繼續執行0x27B4,0x27B6

原本應該是
AddEep_Info.Del.Addr.slaveAddr的值應該要變成0xA2
卻變成了0x01

一開始就是Debug模式下設個斷點發現資料處理狀態異常,才去看組語怎麼編,卻發現組語並沒有照著我C語言去編

不知為何會這樣才和大家求救

6月07日 15:48:34
轉換PDF檔 列印


Re: xc8編譯後執行發生異常
資深會員
註冊日期:
2007/08/17 11:15
所屬群組:
註冊會員
文章: 492
等級: 20; EXP: 50
HP : 0 / 487
MP : 164 / 14275
離線
在MPLABX的EEprom在Debug時會不正確,而MPLAB則不會.

6月15日 16:49:43
轉換PDF檔 列印


Re: xc8編譯後執行發生異常
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14052
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4684 / 69401
離線
EEPROM 因為有寫入的一個順序保護機制,這無法用單歩執行來除錯的。

6月15日 17:16:46
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project