收藏 分享(赏)

2023年软件编程问题与错误的总结.docx

上传人:sc****y 文档编号:1710258 上传时间:2023-04-22 格式:DOCX 页数:8 大小:20.14KB
下载 相关 举报
2023年软件编程问题与错误的总结.docx_第1页
第1页 / 共8页
2023年软件编程问题与错误的总结.docx_第2页
第2页 / 共8页
2023年软件编程问题与错误的总结.docx_第3页
第3页 / 共8页
2023年软件编程问题与错误的总结.docx_第4页
第4页 / 共8页
2023年软件编程问题与错误的总结.docx_第5页
第5页 / 共8页
2023年软件编程问题与错误的总结.docx_第6页
第6页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、软件编程问题与错误的总结 我的总结 1.在h文件中定义的变量可以再main函数中用,要包括头文件;但main之前定义的全局变量不能在头文件中用。(重复定义的错误)。 2.在写程序时,必须首先画出它的程序流程图,也就是程序的走向。一步一步的将他在纸上写出来。 3.调用数组函数时,数组一般用的是数组名。 4.即使a、b是空类型(void)的函数,当a函数要调用b函数情况发生,b函数必须写在a函数的前面。 5.遇到问题不要慌,认真对待。从软件开始,一步一步地排除原因,当实在找不出原因时,再检查硬件电路。 6.在定义函数时,无论是形参还是全局变量都要对其初始化,既方便自己写程序,也减少了不必要的错误。

2、 7.中断程序里不要定义变量,定义变量一般在主函数开始的时候。 8.在调试程序中,我们要观察程序执行到哪里,可以用一个发光二极管去检测。 9.用switch语句有时候可以让程序并行。 2023.c语言中的结构体是一个重点。 11.不要交叉调用c头文件。也就是在争论先有鸡还是先有蛋的问题。 12.中断里不要又太长的程序,要是周期性中断,就必须保证有一定的阈值,否那么程序就有可能跑错。 13.当程序中需要用到一些并列的语句时,可以设置一个标志变量flag。当情况一发生时,flag会自行加加,否那么清零。在接下来的另一种情况中让程序在flag为0的条件下执行。这样就到达了并列的效果。 14.变量一般

3、不定义在h文件中,因为当两个c文件同时用到某个全局变量时,那么就相当于对全局变量定义了两次,实际上这是不允许的。正确的处理方法是在要用的时候进行变量定义,然后在h文件中进行申明,申明为外部变量。最后在c文件中区定义。 15.静态变量和全局变量的好处就是。系统不会回收他们的内存。也就是说,他们会保持上一次的值,也就是他们与局部变量的不同。同样决定了他们的缺乏。 16.“-表示指向结构体运算符,它的结合方向是从左向右的,优先级最高。 17.xxx不能写作x2,在c语言中,“表示按位异或的意思。 18.定义结构体变量时,首先在h文件中申明,然后在c文件中要定义一个与结构体相关的变量。这样在程序中才能

4、应用。例如:先在h文件中申明一个结构体externtypedefstructaa;然后再c文件中定义aother;这样other也具有和结构体a相同的形式。 19.调用带指针操作的函数时,在形参的传递时,注意用的是取址操作符,还是指针操作符x。 20.对于乘除操作时,采用左移和右移的方法,比乘除执行的速度要快。 21.在对信号采集时,我们经常会碰到数的更新。有两种方法。方法一:设定一个数组,每次先将ai+1=ai,然后用当前值对a0进行更新。方法二:也是设定一个数组,在这里,处理的比较简单。只需将最旧的那个数进行更新就可以了。也就是说第一次将当前值赋值给a0,第二次赋值给a1,以此类推,进行无

5、限的循环。 22.取表法是单片机程序中很常用的一种编程思想。要显示的数据之间不存在简单的运算关系,不能使用add和subb等指令根据上一个状态计算出下一个状态的显示值。但显示的数据存在依次取用的特点,这是一般就会用到取表法。 23.很多时候可以单步执行,然后用示波器去检测输出口的波形,看到底程序是否跑对。 24.单片机与计算机进行串口通信时,计算机端一般只设定整数值的波特率,这样造成了单片机与计算机的通信的波特率不全相等,导致传输错误的发生。串口通信模块中有两条指令经常用到:“jbcti,check和“jbri,check他们分别用来检测发送中断标志位ti和接收中断标志位ri,用来判断接收完成

6、情况。 25.边沿触发对电平的要求是。如果晶振为12mhz,至少需要1个机器周期的高电平,且向低电平跳变之后至少保持一个机器周期的低电平。 26.在主函数的内部,定义局部变量一定要放在任何函数或语句执行之前,否那么肯定报错。 27.对于一个程序,中断是一个很重要的东西,设置好中断,程序会很简单。 28.有时候想问题不能死钻牛角尖,不是那里的问题,就不是。比方说有些i/o口的输入输出设置,是一个很玄乎的东西,想问题深入一点,细致一点。 29.注意引脚输入输出的定义,特别是一些好的单片机,对引脚的输入输出有特殊的设置要求。例如:飞思卡尔的单片机的pe0和pe1只能作为固定输入。 30.在很多时候应

7、该想一些问题的另一面,如果smod为某一存放器的一位,其值只能是0或者是1.那么,2smod=(smod+1).有些运算就得到了简化。 31.写程序时,应该尽量用一些“与或非操作。例如一个存放器pcon.如果有操作:pcon|=0x80(就是将pcon的最高位写1,其他位不管)。而如果有操作pcon=0x80(就是将pcon的低七位都清零)。与或非操作能够大量的缩短程序执行的时间,增强了代码的可读性。 32.对某一个端口的某些位进行操作时,不管其他位的状态,需要用到或与相关的知识。例如,对p3口的高四位进行读值时,不考虑低四位的状态。可以用一个符号。即temp=p30xf0;这样低四位的值肯定

8、全为零。而高四位就保持了状态。 33.ad9852_data0=(unsignedcharx)ftw)5;这条语句的意思是:第一步,ftw是c中常用的一个取址的操作,取数组ftw的地址;第二步,对原本的数组ftw中的所有数据进行强制转换。第三步,是对数组中的数的取出。即ftw5。 34.Xdefine ad9852_set_ioreset doad9852_ioreset_dir=1; ad9852_ioreset_out=1;while(0) 在以后有些函数用的比较多时,尽量在宏定义中去写。宏定义中的函数尽量都是最底层的函数,也就是没有调用任何函数,都是对存放器的操作。 35.宏定义的作用就

9、是纯属的一个复制作用,它是把一些经常用到的函数写在宏定义中。这样的话就方便程序的修改。 36.ddra=0xf8;ddra|=temp;这两句操作第一句能保证低三位首先清零。temp的值也就是你要定义的低三位的输入或输出状态。这样的位操作在程序中用的比较多。应多加应用。 37.当函数的形参是全局变量的时候,这个时候可以将形参省略不写,省略了不必要的代码,但是也增加了别人读代码的难度。 38.有时候某些端口必须有触发功能,也就是说它是上电复位的,在系统板上按复位键和按运行键是有本质区别的。 39.以后在写程序的时候尽量做到模块化,也就是说,在对端口的定义的时候,尽量不要直接写porta或者por

10、tb等。可以这样定义:Xdefineset_rspts_pts2=1Xdefineclr_rspts_pts2=0(定义它的控制字) definead9851_w_clk_dirddrb_ddrb0(定义输入输出方向) 这样写的话以后可以方便改写端口,增强程序的可移植性。 40.有时候,数据需要转换,读数据的时候对应的输出端口的方向是输入,而写数据的时候对应的端口是输出。41.有的时候写程序的想法不能太死,比方说吧:a要从0到20230,以2023为步进,大多数人的想法是这样的,if(a=0a=2023a90)dosomething;elseif(a80)dosomething从这样的操作可以

11、看出,减少了代码量,还不会影响程序的执行。42.在以后的程序设计中,尽量写好程序的相关说明,最好似下面的所示:/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx名称:test(void)x功能:测试液晶屏x入口参数:无x出口参数:无 x说明:测试液晶屏是否正常工作x调用方法:test;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/43.我们写的函数应该是容易让别人读懂的,更应该具有通用性。比方说画一个坐标轴xoy。就要写的方

12、便别人改一点。可以这样写: 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中的头文件经常会用到枚举法这个概念,比方说吧,在头文件中,经常会出现以下的:enumblack,blue,red,color;在程序中是这样处理的。switchcaseblack:dosomething;break;casered:dosomething;break;这里情况默认的情况是这样的,black=0;blue=1;red=2;所以称之为枚举法。当然也可以对初始的那个颜色赋值,例如:black=1;那么后面的数就会都加1.枚举法在头文件中经常会用到,要熟加掌握。 48.头文件的定义中,如果代码写到了另外一行,一般情况下,要加上续行指令。续行指令的符号为“/。 第8页 共8页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 资格与职业考试 > 其它

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2