|
Keil和Proteus聯調51程序時,遇到了好幾個問題:第一,每點一次Keil里的單步,Keil和Proteus里就會自動跳過好多行代碼,無論是C51還是匯編,都有這個問題,嘗試過把代碼優化設置為0級(不優化),依舊沒用,還完全不理會我設置的斷點,嘗試過卸載重裝,還換了Keil4也沒用。反匯編的內容是正確的,代碼運行效果是對的,只是不能單步,Keil里的一個單步會隨機跳過某幾行,但是這些行并不對應C程序,這就導致程序執行的每一句順序都是對的,只是沒有辦法一行一行運行或者設置斷點停在該停的地方,整體看上去就像是亂跑一樣,一會往上,一會往下。
第二,keil的變量監視中所有值都是零,但是對這些變量實際值是有的,只是沒顯示出來,也不知道為什么。
第三,Keil對C51的編譯結果的最后一行都是NOP,盡管這樣,代碼走到這一行的時候,在Proteus里顯示的是原本該正常顯示的正確的匯編指令。
第四,keil有時候就跟抽風了一樣,上次還能正常顯示反匯編指令,下一次調試就全部編程NOP,但是Proteus里顯示的還是正確的匯編指令,運行結果都對,這一點還在匯編窗口向下滾動時體現出來,當我往下滾動匯編窗口的指令的時候,盡管已經到了代碼區結尾的NOP指令,Proteus竟然接受到keil發出的繼續下一步的指令,然后就是Keil這邊完全不知道跑到了哪,但是Proteus里按原來的順序指令繼續正常執行。
整體看來就仿佛keil表面一套,背里一套,表面的亂七八糟,背里的很正常,求教各位大佬幫忙驗證和解釋一下該怎么辦才能解決這些問題。
|
|