|
Keil和Proteus聯(lián)調(diào)51程序時(shí),遇到了好幾個(gè)問題:第一,每點(diǎn)一次Keil里的單步,Keil和Proteus里就會(huì)自動(dòng)跳過好多行代碼,無論是C51還是匯編,都有這個(gè)問題,嘗試過把代碼優(yōu)化設(shè)置為0級(jí)(不優(yōu)化),依舊沒用,還完全不理會(huì)我設(shè)置的斷點(diǎn),嘗試過卸載重裝,還換了Keil4也沒用。反匯編的內(nèi)容是正確的,代碼運(yùn)行效果是對(duì)的,只是不能單步,Keil里的一個(gè)單步會(huì)隨機(jī)跳過某幾行,但是這些行并不對(duì)應(yīng)C程序,這就導(dǎo)致程序執(zhí)行的每一句順序都是對(duì)的,只是沒有辦法一行一行運(yùn)行或者設(shè)置斷點(diǎn)停在該停的地方,整體看上去就像是亂跑一樣,一會(huì)往上,一會(huì)往下。
第二,keil的變量監(jiān)視中所有值都是零,但是對(duì)這些變量實(shí)際值是有的,只是沒顯示出來,也不知道為什么。
第三,Keil對(duì)C51的編譯結(jié)果的最后一行都是NOP,盡管這樣,代碼走到這一行的時(shí)候,在Proteus里顯示的是原本該正常顯示的正確的匯編指令。
第四,keil有時(shí)候就跟抽風(fēng)了一樣,上次還能正常顯示反匯編指令,下一次調(diào)試就全部編程N(yùn)OP,但是Proteus里顯示的還是正確的匯編指令,運(yùn)行結(jié)果都對(duì),這一點(diǎn)還在匯編窗口向下滾動(dòng)時(shí)體現(xiàn)出來,當(dāng)我往下滾動(dòng)匯編窗口的指令的時(shí)候,盡管已經(jīng)到了代碼區(qū)結(jié)尾的NOP指令,Proteus竟然接受到keil發(fā)出的繼續(xù)下一步的指令,然后就是Keil這邊完全不知道跑到了哪,但是Proteus里按原來的順序指令繼續(xù)正常執(zhí)行。
整體看來就仿佛keil表面一套,背里一套,表面的亂七八糟,背里的很正常,求教各位大佬幫忙驗(yàn)證和解釋一下該怎么辦才能解決這些問題。
|
-
-
-
-
LED.zip
2021-10-12 11:43 上傳
點(diǎn)擊文件名下載附件
27.43 KB, 下載次數(shù): 6
|