找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2392|回復(fù): 0
收起左側(cè)

屬性設(shè)置XDADA有時中斷調(diào)用函數(shù)會出錯

[復(fù)制鏈接]
ID:71477 發(fā)表于 2015-1-1 19:36 | 顯示全部樓層 |閱讀模式
      正如生活之難一樣,難的是適應(yīng)環(huán)境而不是改變環(huán)境。編程之難難的不是編程。而是調(diào)試。調(diào)試之難難在排除各種復(fù)雜條件下的錯誤。軟件硬件。。
    像單片機,這類軟件硬件結(jié)合的產(chǎn)品。難就難在軟硬結(jié)合。編寫程序時,不能只是純軟件式的硬件無關(guān)性開發(fā)。尤其調(diào)試時,結(jié)合硬件的狀況才能調(diào)試。
    調(diào)試?yán)鲜,遇到過不少問題,甚至是一些很雷人的錯誤。對于那些嘴上說的一套一套的人來說。他怎么也不會碰到這些問題。而這也是差距。嘴上說的嚴(yán)絲合縫,在真的調(diào)試中,卻不一定是那么回事。因為嘴上說的,不過是一套邏輯假設(shè)而已。既然是假設(shè),就有條件,有條件就有不成立的情況。
    你碰到過沒有,調(diào)試有時候遇到的問題,不是自己程序問題,而是一些其他雷人,氣人,氣炸肺的問題。但是,問題就是問題。在你發(fā)現(xiàn)他之前,他是未知的。排除這些氣炸肺的問題,更需要調(diào)試之:大膽假設(shè),仔細(xì)排除。
   比如說:你調(diào)試了幾天,各種錯誤可能覺的都排到了。但還是沒解決問題。你有沒有換個角度思考。我有次改一個別人的程序。雙單片機。之前的程序是能用的。后來要加一些小功能。功能主要加在主機上。從機只是改了一點接收響應(yīng)。但是改完。調(diào)試怎么都不行。我反復(fù)更改程序。直到覺得不是程序問題。又懷疑開發(fā)平臺KEIL有BUG,換了幾個版本編譯還是不行。最后沒辦法,只能懷疑硬件電路板問題。從電源供電不足開始懷疑。用指針萬用表一量4.5V不到。以為找到了問題。換另一塊板子試,也是一樣。懷疑單片機電氣性能下降。換單片機。問題依舊。搗鼓半天,別人跟你說,這個表有問題!無語。。。。 換個表量,電壓是正常的。這個過程折騰了好幾天,都沒解決。最后。我懷疑是程序問題:主從機程序不匹配。問人要了份原始程序。5分鐘一改,解決了。原先給我的程序就給差了。。。。無語。。。。。這種假設(shè),也屬于我們調(diào)試范圍。。。。。
今天調(diào)試,又碰到奇怪的問題。STC單片機明明串口發(fā)送接收數(shù)據(jù)都正確,但是寫入EEPROM就是不行。由于是在中端函數(shù)中寫EEPROM的,我開始懷疑是中斷內(nèi)不能寫EEPROM,查了DATASHEET也沒這個說明,由于程序比較大,有24k了。所以對部分功能,還是新建一個工程,單獨測試這個問題。結(jié)果居然能寫。于是,把原來的工程瘦身,逐漸刪減測試,卻還是不行。最后懷疑軟件KEIL問題。比較設(shè)置,先是改了硬件設(shè)備選擇。選成AT89C52,還是不行。只能懷疑變量存儲模式問題。兩個工程不同。終于發(fā)現(xiàn)改成數(shù)據(jù)RAM改成XDATA后,就不行了。原來問題在這,不是程序問題。可是工程里變量有幾百個,必須要用XDATA。這可怎么辦。后來想到以前寫學(xué)習(xí)遙控器時,用外部RAM都是在程序里變量定義處 char xdata ......,工程屬性這里不改成XDATA。于是大改,都加上XDADA。屬性還是設(shè)置DATA。最后,終于能用了。問題解決。
    所以說:程序好改,難就難在夾雜了其他問題。只是動嘴,這些問題就不會出現(xiàn)。說和做還是兩碼事。尊重實踐吧!國人也最缺這個。
在你用著自己焊的下載板,用STC這個破下載器,時不時的通訊失敗,加上直接在成品板上用鑷子翹單片機,調(diào)試。時而街上突然呼嘯而過的汽車摩托車,還有外邊鬼叫著吃夜宵,噴著不知道是不是人話。這種環(huán)境下,還保持一個冷靜的頭腦,排除這類氣炸肺的問題。算不容易了。。愛動嘴的多動動手體驗一下吧。。。。!

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表