作者ruemann (此人掛網中……)
看板ASM
標題Re: [問題] keilc問題
時間Sat Sep 8 20:37:59 2007
※ 引述《CuckooBoy (阿書)》之銘言:
: 請問想看變數的狀態
: 譬如i=i+1;
: 我想看這列的 ......左邊i的值是多少,要怎麼做呢?
你的問題有點怪,左邊是指i=的i吧?
以c語言的語法,是指i+1-->i,也就是當該行執行完後的值。
因為各家的ICE對於斷點的處理不一定相同,所以比較保險的方式是:
260 i=i+1
261 nop
然後在261行前加上斷點,中斷時去檢查i的值就可以了
當然,如果你不是用ICE的話,那可能是在261行的地方換成輸出指令,將值在某個
port或rs232或其他的方式將資料輸出。
ps.說真的,這裡是asm版,你的問題大多是C的問題,雖然說是單晶片上面的問題,但
主要又不是單晶片的問題,我想會有一些人覺得是不必要的問題也是可以理解的。
又及:你的需求可以去相關的論壇得到更多的幫助,如雷兒電子論壇、51硬派論壇、
大鳥實驗室論壇(名稱可能有錯,但是我以前去過覺得不錯的論壇)。
另外,你在上一篇問說是否可以針對一個位元的存取,在51而且,只有一小個區段的
記憶體可以做位元存取,在keilC中以bdata做為標示。
xdata unsigned char abc;
bdata unsigned char bitbuffer;
bit bit7 = bitbuffer^7;
bit bit6 = bitbuffer^6;
bit bit5 = bitbuffer^5;
bit bit4 = bitbuffer^4;
bit bit3 = bitbuffer^3;
bit bit2 = bitbuffer^2;
bit bit1 = bitbuffer^1;
bit bit0 = bitbuffer^0;
abc = 0x55;
bitbuffer = abc;
P1.1 = bit2;
這樣也可以做到,事實上,你去看keilc對於51.h的宣告,會發現他P0~P3的各位元宣告
是相同的,但不是每種編譯器都是用這種方法宣告,像是arm的c編譯器就是用上幾篇的
結構式宣告完成的。
這主要是因為C原本沒有對位元處理的指令、符號的定義,因此各家編譯器會用一些方法
來支援這部份。
--
我只是個想賺 P 幣的迷途小羔羊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.228.75
1F:推 CuckooBoy:推 針對一個位元的存取 ...感謝 09/08 20:58
2F:→ CuckooBoy:一個位元的存取 一般書好像沒教,這...應該是經驗吧^^蘒 09/08 20:59
3F:推 MasterChang:單位元存取多是C編譯器手冊說明,因為他也要說明內部 09/09 22:58
4F:→ MasterChang:暫存器的設定及控制方式。這就是我為何我說你沒看資料 09/09 22:59
5F:→ MasterChang:,拿到編譯器第一件事情是看手冊,不是去寫程式。再說 09/09 22:59
6F:→ MasterChang:一遍「是看手冊、不要先去寫程式」。這是台灣學生最大 09/09 23:00
7F:→ MasterChang:的通病。自己以為懂C然後就不看手冊,結果程式寫出來 09/09 23:01
8F:→ MasterChang:不是錯誤就是執行的跟設計的不一樣。 09/09 23:02