|
for(i=0;i<512;i++)//寫扇區最大512,用i,所以i要是2字節,不然就卡住了
{
Byte_Program(0x800+i,0);
Byte_Program(0x1000+i,0);
Byte_Program(0x1600+i,0);
}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
先畫好流程圖看來比較重要。 函數重要,邏輯重要,變量,尤其多次復用的變量更重要。變量最容易被忽略類型、初始化、清0,范圍等。尤其是用的多,定義的地方不在本函數甚至本文件中時,別忘本。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
這個簡單的for循環語句,我想在普通不過 啦。你可以不屑一顧的說:兒科。不過,就是這個問題,折騰我半天,我找來找去,不知道錯誤出在哪。程序執行到這里,就卡住了。我習慣叫卡機。
我以為是程序方的位置不對,之前我使用了goto 命令。聽說這個東西不穩定。后來我去掉了,還是不行。我又懷疑是函數在多層的循環for 判斷if里面,是不是太深了。我怕了。我就弄的盡量靠外。還是不行。我又懷疑是不是寫的速度太快,單片機響應不了。我就加延時。還是不行。我又懷疑是不是這個單片機必須寫一個扇區,再寫一個,我去掉下面兩句,還是不行。我多次檢查跳出循環的語句,都是正確的。沒辦法了。我把循環范圍減小到100.一試,可以了!!!!才恍然想起檢查i的類型范圍。原來之前定義的i都是unsigned char 類型。最大255。所以這里永遠跳不出循環。在焦急,煩躁,上火的狀態下。從亂糟糟的程序中找出這點問題。真不容易。細節,細節問題!!!
如果是一個小程序中,我肯定一眼就能看出這個問題。但是把他放到一堆程序中。循環,判斷,跳轉,多個函數,多個C文件,來回翻。加上編輯器又這么難用。心情煩躁的很。就會忽略這些細節了。包括上次,多次使用i值,用完沒有清0,結果下面i++的時候出錯。頭疼!!
先畫好流程圖看來比較重要。尤其是變量,這種多次復用的變量。最容易被忽略初始化、清0,范圍、類型等。編程還忌諱,沒有定向,一會想這樣,一會想那樣,最后很容易亂套。所以,要么一開始就制定好整套流程,要么等全部結束再部分改動。不然真的煩人,極易出錯!!!
最后:保持一個冷靜的頭腦。心里平靜。心靜才出錯幾率小。尤其是總是找不錯錯誤的時候,最容易心煩。排錯邏輯一定不要被心煩搞亂!!
|
|