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