温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
软件
编程
问题
错误
总结
软件编程问题与错误的总结
我的总结
1.在h文件中定义的变量可以再main函数中用,要包括头文件;但main之前定义的全局变量不能在头文件中用。(重复定义的错误)。
2.在写程序时,必须首先画出它的程序流程图,也就是程序的走向。一步一步的将他在纸上写出来。
3.调用数组函数时,数组一般用的是数组名。
4.即使a、b是空类型(void)的函数,当a函数要调用b函数情况发生,b函数必须写在a函数的前面。
5.遇到问题不要慌,认真对待。从软件开始,一步一步地排除原因,当实在找不出原因时,再检查硬件电路。
6.在定义函数时,无论是形参还是全局变量都要对其初始化,既方便自己写程序,也减少了不必要的错误。
7.中断程序里不要定义变量,定义变量一般在主函数开始的时候。
8.在调试程序中,我们要观察程序执行到哪里,可以用一个发光二极管去检测。
9.用switch语句有时候可以让程序并行。
2023.c语言中的结构体是一个重点。
11.不要交叉调用c头文件。也就是在争论先有鸡还是先有蛋的问题。
12.中断里不要又太长的程序,要是周期性中断,就必须保证有一定的阈值,否那么程序就有可能跑错。
13.当程序中需要用到一些并列的语句时,可以设置一个标志变量flag。当情况一发生时,flag会自行加加,否那么清零。在接下来的另一种情况中让程序在flag为0的条件下执行。这样就到达了并列的效果。
14.变量一般不定义在h文件中,因为当两个c文件同时用到某个全局变量时,那么就相当于对全局变量定义了两次,实际上这是不允许的。正确的处理方法是在要用的时候进行变量定义,然后在h文件中进行申明,申明为外部变量。最后在c文件中区定义。
15.静态变量和全局变量的好处就是。系统不会回收他们的内存。也就是说,他们会保持上一次的值,也就是他们与局部变量的不同。同样决定了他们的缺乏。
16.“->〞表示指向结构体运算符,它的结合方向是从左向右的,优先级最高。
17.xxx不能写作x^2,在c语言中,“^〞表示按位异或的意思。
18.定义结构体变量时,首先在h文件中申明,然后在c文件中要定义一个与结构体相关的变量。这样在程序中才能应用。例如:先在h文件中申明一个结构体externtypedefstructa{""""}a;然后再c文件中定义aother;这样other也具有和结构体a相同的形式。
19.调用带指针操作的函数时,在形参的传递时,注意用的是取址操作符’’,还是指针操作符’x’。
20.对于乘除操作时,采用左移和右移的方法,比乘除执行的速度要快。
21.在对信号采集时,我们经常会碰到数的更新。有两种方法。方法一:设定一个数组,每次先将a[i+1]=a[i],然后用当前值对a[0]进行更新。方法二:也是设定一个数组,在这里,处理的比较简单。只需将最旧的那个数进行更新就可以了。也就是说第一次将当前值赋值给a[0],第二次赋值给a[1],以此类推,进行无限的循环。
22.取表法是单片机程序中很常用的一种编程思想。要显示的数据之间不存在简单的运算关系,不能使用add和subb等指令根据上一个状态计算出下一个状态的显示值。但显示的数据存在依次取用的特点,这是一般就会用到取表法。
23.很多时候可以单步执行,然后用示波器去检测输出口的波形,看到底程序是否跑对。
24.单片机与计算机进行串口通信时,计算机端一般只设定整数值的波特率,这样造成了单片机与计算机的通信的波特率不全相等,导致传输错误的发生。串口通信模块中有两条指令经常用到:“jbcti,check〞和“jbri,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=p30xf0;这样低四位的值肯定全为零。而高四位就保持了状态。
33.ad9852_data[0]=((unsignedcharx)ftw)[5];这条语句的意思是:第一步,ftw是c中常用的一个取址的操作,取数组ftw的地址;第二步,对原本的数组ftw中的所有数据进行强制转换。第三步,是对数组中的数的取出。即ftw[5]。
34.Xdefine
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等。可以这样定义:Xdefineset_rspts_pts2=1Xdefineclr_rspts_pts2=0(定义它的控制字)
definead9851_w_clk_dirddrb_ddrb0(定义输入输出方向)
这样写的话以后可以方便改写端口,增强程序的可移植性。
40.有时候,数据需要转换,读数据的时候对应的输出端口的方向是输入,而写数据的时候对应的端口是输出。41.有的时候写程序的想法不能太死,比方说吧:a要从0到20230,以2023为步进,大多数人的想法是这样的,if(a>=0a=2023a90)dosomething;elseif(a>80)dosomething"""从这样的操作可以看出,减少了代码量,还不会影响程序的执行。42.在以后的程序设计中,尽量写好程序的相关说明,最好似下面的所示:/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx名称:test(void)x功能:测试液晶屏x入口参数:无x出口参数:无
x说明:测试液晶屏是否正常工作x调用方法:test;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/43.我们写的函数应该是容易让别人读懂的,更应该具有通用性。比方说画一个坐标轴xoy。就要写的方便别人改一点。可以这样写:
draw_xy(y_org,x_org,red);这样写谁都能看明白:y_org表示y轴的原点所在处。x_org表示x轴的原点所在处。red表示画出的圆的颜色。写的程序就方便改了,代码也就很灵活。44.程序中应该不要出现,延时1毫秒以上的程序,最好都是通过中断产生的。无论什么时候我们都要以实际应用的角度去考虑程序的书写。45.对于一个程序员,如何释放cpu,这是写合格程序的根底。
46.以后写程序,将所有的typedef、Xdefine、常量的定义都放在一个头文件macroandconst.h中。47.c中的头文件经常会用到枚举法这个概念,比方说吧,在头文件中,经常会出现以下的:enum{black,blue,red,"""}color;在程序中是这样处理的。switch{caseblack:dosomething;break;casered:dosomething;break;"""}这里情况默认的情况是这样的,black=0;blue=1;red=2;""所以称之为枚举法。当然也可以对初始的那个颜色赋值,例如:black=1;那么后面的数就会都加1.枚举法在头文件中经常会用到,要熟加掌握。
48.头文件的定义中,如果代码写到了另外一行,一般情况下,要加上续行指令。续行指令的符号为“/〞。
第8页 共8页