人人范文网 范文大全

软件编程问题与错误的总结

发布时间:2020-03-02 15:52:40 来源:范文大全 收藏本文 下载本文 手机版

我的总结

1.在H文件中定义的变量可以再main函数中用,要包括头文件;但main之前定义的全局变量不能在头文件中用。(重复定义的错误)。 2.在写程序时,必须首先画出它的程序流程图,也就是程序的走向。一步一步的将他在纸上写出来。 3.调用数组函数时,数组一般用的是数组名。

4.即使a、b是空类型(void)的函数,当a函数要调用b函数情况发生,b函数必须写在a函数的前面。 5.遇到问题不要慌,认真对待!从软件开始,一步一步地排除原因,当实在找不出原因时,再检查硬件电路。 6.在定义函数时,无论是形参还是全局变量都要对其初始化,既方便自己写程序,也减少了不必要的错误。 7.中断程序里不要定义变量,定义变量一般在主函数开始的时候。

8.在调试程序中,我们要观察程序执行到哪里,可以用一个发光二极管去检测。 9.用switch语句有时候可以让程序并行。 10.C语言中的结构体是一个重点。

11.不要交叉调用C头文件。也就是在争论先有鸡还是先有蛋的问题。 12.中断里不要又太长的程序,要是周期性中断,就必须保证有一定的阈值,否则程序就有可能跑错。 13.当程序中需要用到一些并列的语句时,可以设置一个标志变量Flag。当情况一发生时,Flag会自行加加,否则清零。在接下来的另一种情况中让程序在Flag为0 的条件下执行。这样就达到了并列的效果。 14.变量一般不定义在H文件中,因为当两个C文件同时用到某个全局变量时,那么就相当于对全局变量定义了两次,实际上这是不允许的。正确的处理方法是在要用的时候进行变量定义,然后在H文件中进行申明,申明为外部变量。最后在C文件中区定义。 15.静态变量和全局变量的好处就是:系统不会回收他们的内存。也就是说,他们会保持上一次的值,也就是他们与局部变量的不同。同样决定了他们的不足。 16.“->” 表示指向结构体运算符,它的结合方向是从左向右的,优先级最高。 17.x*x不能写作x^2,在C语言中,“^”表示按位异或的意思。

18.定义结构体变量时,首先在H文件中申明,然后在C文件中要定义一个与结构体相关的变量。这样在程序中才能应用。例如:先在H文件中申明一个结构体extern typedef struct A{„„„„}A; 然后再C文件中定义A Other;这样Other也具有和结构体A相同的形式。

19.调用带指针操作的函数时,在形参的传递时,注意用的是取址操作符’&’,还是指针操作符’*’。 20.对于乘除操作时,采用左移和右移的方法,比乘除执行的速度要快。 21.在对信号采集时,我们经常会碰到数的更新。有两种方法。方法一:设定一个数组,每次先将a[i+1] = a[i],然后用当前值对a[0]进行更新。方法二:也是设定一个数组,在这里,处理的比较简单。只需将最旧的那个数进行更新就可以了。也就是说第一次将当前值赋值给a[0],第二次赋值给a[1],以此类推,进行无限的循环。 22.取表法是单片机程序中很常用的一种编程思想:要显示的数据之间不存在简单的运算关系,不能使用ADD和SUBB等指令根据上一个状态计算出下一个状态的显示值。但显示的数据存在依次取用的特点,这是一般就会用到取表法。 23.很多时候可以单步执行,然后用示波器去检测输出口的波形, 看到底程序是否跑对。 24.单片机与计算机进行串口通信时,计算机端一般只设定整数值的波特率,这样造成了单片机与计算机的通信的波特率不全相等,导致传输错误的发生。串口通信模块中有两条指令经常用到:“JBC TI,CHECK”和“JB RI,CHECK”他们分别用来检测发送中断标志位TI和接收中断标志位RI,用来判断接收完成情况。 25.边沿触发对电平的要求是:如果晶振为12MHz ,至少需要1个机器周期的高电平,且向低电平跳变之后至少保持一个机器周期的低电平。 26.在主函数的内部,定义局部变量一定要放在任何函数或语句执行之前,否则肯定报错。 27.对于一个程序,中断是一个很重要的东西,设置好中断,程序会很简单。 28.有时候想问题不能死钻牛角尖,不是那里的问题,就不是。比如说有些I/O口的输入输出设置,是一个很玄乎的东西,想问题深入一点,细致一点。 29.注意引脚输入输出的定义,特别是一些好的单片机,对引脚的输入输出有特殊的设置要求。例如:飞思卡尔的单片机的PE0和PE1只能作为固定输入。 30.在很多时候应该想一些问题的另一面,如果SMOD为某一寄存器的一位,其值只能是0或者是1.那么,2^SMOD = (SMOD + 1).有些运算就得到了简化。 31.写程序时,应该尽量用一些“与或非”操作。例如一个寄存器PCON.如果有操作:PCON |=0x80(就是将PCON的最高位写1,其他位不管)。而如果有操作PCON &=0x80(就是将PCON的低七位都清零)。与或非操作能够大量的缩短程序执行的时间,增强了代码的可读性。 32.对某一个端口的某些位进行操作时,不管其他位的状态,需要用到或与相关的知识。例如,对P3口的高四位进行读值时,不考虑低四位的状态。可以用一个&符号。即temp=P3&0xf0;这样低四位的值肯定全为零。而高四位就保持了状态。 33.AD9852_Data[0]=((unsigned char*)&FTW)[5]; 这条语句的意思是:第一步,&FTW是C中常用的一个取址的操作,取数组FTW的地址;第二步,对原本的数组FTW中的所有数据进行强制转换。第三步,是对数组中的数的取出。即FTW[5]。 34.#define

AD9852_Set_IORESET()

do{AD9852_IORESET_DIR = 1;

AD9852_IORESET_OUT = 1;} while(0)

在以后有些函数用的比较多时,尽量在宏定义中去写。宏定义中的函数尽量都是最底层的函数,也就是没有调用任何函数,都是对寄存器的操作。 35.宏定义的作用就是纯属的一个复制作用,它是把一些经常用到的函数写在宏定义中。这样的话就方便程序的修改。 36.DDRA&=0xF8; DDRA|=temp; 这两句操作第一句能保证低三位首先清零。Temp的值也就是你要定义的低三位的输入或输出状态。这样的位操作在程序中用的比较多。应多加应用。 37.当函数的形参是全局变量的时候,这个时候可以将形参省略不写,省略了不必要的代码,但是也增加了别人读代码的难度。 38.有时候某些端口必须有触发功能,也就是说它是上电复位的,在系统板上按复位键和按运行键是有本质区别的。 39.以后在写程序的时候尽量做到模块化,也就是说,在对端口的定义的时候,尽量不要直接写PORTA或者PORTB等。可以这样定义: #define Set_Rs PTS_PTS2 = 1 #define Clr_Rs PTS_PTS2 = 0 (定义它的控制字)

#define ad9851_w_clk_dir DDRB_DDRB0 (定义输入输出方向)

这样写的话以后可以方便改写端口,增强程序的可移植性。

40.有时候,数据需要转换,读数据的时候对应的输出端口的方向是输入,而写数据的时候对应的端口是输出。 41.有的时候写程序的想法不能太死,比如说吧:a要从0到100,以10为步进,大多数人的想法是这样的,if(a>=0&&a

else if(a>=10&&a

就这样一直写下去。现在我们回头来想一下,到底需要怎么写,可以减少程序的代码量。我们可以向下面这样写: if(a>90) do something; else if(a>80) do something„„„ 从这样的操作可以看出,减少了代码量,还不会影响程序的执行。 42.在以后的程序设计中,尽量写好程序的相关说明,最好像下面的所示: /***************************************************************** * 名 称:Test(void) * 功 能:测试液晶屏 * 入口参数:无 * 出口参数:无

* 说 明:测试液晶屏是否正常工作 * 调用方法:Test(); ******************************************************************/ 43.我们写的函数应该是容易让别人读懂的,更应该具有通用性。比如说画一个坐标轴xOy。就要写的方便别人改一点。可以这样写:

Draw_XY(y_org,x_org,Red);这样写谁都能看明白:y_org表示y轴的原点所在处。x_org表示x轴的原点所在处。Red表示画出的圆的颜色。写的程序就方便改了,代码也就很灵活。 44.程序中应该不要出现,延时1毫秒以上的程序,最好都是通过中断产生的。无论什么时候我们都要以实际应用的角度去考虑程序的书写。 45.对于一个程序员,如何释放CPU,这是写合格程序的基础。

46.以后写程序,将所有的Typedef、#define、常量的定义都放在一个头文件MacroandConst.h中。 47.C中的头文件经常会用到枚举法这个概念,比如说吧,在头文件中,经常会出现以下的:enum{black,blue,red,„„„}color;在程序中是这样处理的。switch{case black: do something ;break; case red:do something ;break;„„„}这里情况默认的情况是这样的,black=0;blue=1;red=2;„„所以称之为枚举法。当然也可以对初始的那个颜色赋值,例如:black=1;那么后面的数就会都加1.枚举法在头文件中经常会用到,要熟加掌握。

48.头文件的定义中,如果代码写到了另外一行,一般情况下,要加上续行指令。续行指令的符号为“/”。

软件编程规范总结

软件编程实习总结_工作总结

软件编程学习心得

用友软件错误91问题汇总

12级软件编程班家长会总结

软件编程实习心得体会

软件编程书籍清单

三菱PLC编程软件入门

职业生涯规划(软件程序编程)

软件编程学生毕业感言

软件编程问题与错误的总结
《软件编程问题与错误的总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档