找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2354|回復: 0
打印 上一主題 下一主題
收起左側

編程之難--難在大片程序中的小細節(jié)-注意變量類型和范圍

[復制鏈接]
跳轉到指定樓層
樓主
ID:71477 發(fā)表于 2015-1-1 19:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    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);
    }/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   先畫好流程圖看來比較重要。 函數重要,邏輯重要,變量,尤其多次復用的變量更重要。變量最容易被忽略類型、初始化、清0,范圍等。尤其是用的多,定義的地方不在本函數甚至本文件中時,別忘本。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
這個簡單的for循環(huán)語句,我想在普通不過 啦。你可以不屑一顧的說:兒科。不過,就是這個問題,折騰我半天,我找來找去,不知道錯誤出在哪。程序執(zhí)行到這里,就卡住了。我習慣叫卡機。
  我以為是程序方的位置不對,之前我使用了goto 命令。聽說這個東西不穩(wěn)定。后來我去掉了,還是不行。我又懷疑是函數在多層的循環(huán)for  判斷if里面,是不是太深了。我怕了。我就弄的盡量靠外。還是不行。我又懷疑是不是寫的速度太快,單片機響應不了。我就加延時。還是不行。我又懷疑是不是這個單片機必須寫一個扇區(qū),再寫一個,我去掉下面兩句,還是不行。我多次檢查跳出循環(huán)的語句,都是正確的。沒辦法了。我把循環(huán)范圍減小到100.一試,可以了。。。〔呕腥幌肫饳z查i的類型范圍。原來之前定義的i都是unsigned char 類型。最大255。所以這里永遠跳不出循環(huán)。在焦急,煩躁,上火的狀態(tài)下。從亂糟糟的程序中找出這點問題。真不容易。細節(jié),細節(jié)問題。!
  如果是一個小程序中,我肯定一眼就能看出這個問題。但是把他放到一堆程序中。循環(huán),判斷,跳轉,多個函數,多個C文件,來回翻。加上編輯器又這么難用。心情煩躁的很。就會忽略這些細節(jié)了。包括上次,多次使用i值,用完沒有清0,結果下面i++的時候出錯。頭疼。
先畫好流程圖看來比較重要。尤其是變量,這種多次復用的變量。最容易被忽略初始化、清0,范圍、類型等。編程還忌諱,沒有定向,一會想這樣,一會想那樣,最后很容易亂套。所以,要么一開始就制定好整套流程,要么等全部結束再部分改動。不然真的煩人,極易出錯!。
最后:保持一個冷靜的頭腦。心里平靜。心靜才出錯幾率小。尤其是總是找不錯錯誤的時候,最容易心煩。排錯邏輯一定不要被心煩搞亂!!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表