- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言编程自我总结的
编译器选择8级优化时,可能会出现错误。刚写好的程序,建议先用0级优化看能否正常运行,再用更高的优化等级进行优化。
a、写中断程序一定要用using语句指定寄存器组。第1、2、3组都可以,不能是0??b、51单片机的中断有两个优先级。一个中断不会打断另一个相同优先级的中断。这样相同级别中断可以使用同一个组。比如:低优先级的中断函数都用 using 1,高优先级的中断都用 using 2 。这样不会冲突。main(){unsigned char i;for (i = 2; i=0; i--){????printf(%d,i);??}}
C51忌讳绝对定位只要定义变量和变量的作用域,编译器就把一个固定地址给这个变量。手把手教你写程序内容:从最简单的程序入手,手把手教你写程序,让同学们拿到一个复杂的程序或者任务,能快速找到切入点,写出程序,再在此基础上优化程序。当拿到一个单片机任务时,不要急于动手写程序,先仔细分析它的以下几个点:1、它要单片机整体实现什么功能2、功能细分(模块化),先干什么,再干什么,最后干什么3、画初步流程图,(把几个模块画出即可)4、模块之间的分析:一个模块到另一个模块之间,怎么变换,怎么连接(优化流程图)5、单个模块分析:每个模块要做什么(流程图细化)6、所有模块结合连接,细化所有流程图7、分析单个模块每步要用到的方法或者指令8、总流程图定型9、纸上写程序,对照流程图分析其可行性,若不可行则返回10、上机调试,加注释 以上十步,缺一不可(小程序外)切记:流程图的确定很重要,需反复修改大忌:拿到任务,不仔细分析就写程序。即使是小程序,我们也要养成良好的编程习惯,不要一味的追求结果。写小程序可能比别人快,若是大程序,一旦出现思维混乱,或者出现程序调试不出结果,那么你花在调试上的时间,要比别人的多。???????????!!!!!!磨刀不误砍柴工!!!!!!程序的优化:属于后期工作,只有调试出来后,才去优化,如果一开始优化和写程序同时进行,一是加重你的思考量,二是出现问题无从下手。无疑增加了写程序的难度。对于一个初学者,写一个程序,本身头脑就处于紧张的状态,思考的问题就很多,如果此时把优化程序也考虑进去,你脑袋的负荷无疑加重,若你头脑精明,你可以把优化的地方,先在纸上记下来,等到调试结果正常,再把你想到的,优化的地方加进去。如果在中断程序中改变了多字节类型的变量,那么中断程序以外的程序中(主程序,子函数)读写前要关中断,读写后再开中断。举一反三:其他的数据类型也可能有这种影响。例如:长整型、浮点型。unsigned?int?ms_counter;??????????????????????void?T0(){???????????//定时器程序每100毫秒中断一次,程序略?????????if?(ms_counter1000)?ms_counter++;}void?main(void){//初始化定时器程序每100毫秒中断一次,程序略???????????????????????????unsigned?char?tt;????ms_counter=0;????tt=0;//用tt控制只响一次????while(1)????{????????if?(ms_counter400)????????{????????????if?(tt==0)????????????{????????????tt=1;????????????Sound_on();????????????}????????}????????else????????{????????????Sound_off();????????}???????//其他程序??????}}?static int a; //定义性声明,需要时,直接使用变量a即可
a = 0x01;
static int funA(int a, int b); //声明,且static不起作用
int funA(int a ,int b) //定义,即使funA有static关键字修饰,但由于static不能单独使用,//故funA仍为外部函数。
{
……
}
extern对变量进行声明时,如没有初始化,则为引用性声明,不含定义,如需使用此变量,需要进行定义。例如:
extern int a; //引用性声明,不含定义
extern int a = 0x01; //定义性声明,需要时,直接使用变量a即可
int a; //定义
extern对函数进行声明时,如没有函数体,则为引用性声明,不含定义。
extern int funB(int a ,int b); //引用性声明,
文档评论(0)