(教训少占鱼)编程之难--难在大片程序中的小细节-注意变量类型和范围

来源:互联网 发布:零信誉淘宝店铺出售 编辑:程序博客网 时间:2024/04/26 17:29
 //少占鱼制作  河北正定欢迎您   长沙航空职业技术学院  2010 年QQ:411656434
    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,范围、类型等。编程还忌讳,没有定向,一会想这样,一会想那样,最后很容易乱套。所以,要么一开始就制定好整套流程,要么等全部结束再部分改动。不然真的烦人,极易出错!!!
最后:保持一个冷静的头脑。心里平静。心静才出错几率小。尤其是总是找不错错误的时候,最容易心烦。排错逻辑一定不要被心烦搞乱!!
原创粉丝点击