单片机C语言技巧.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机C语言技巧

一、使用C51的技巧 C51编译器能从C程序源代码中产生高度优化的代码,而通过一些编程上的技巧又可以帮助编译器产生更好的代码。一些使用技巧如下: 1.采用短型变量 如循环控制中常用unsigned char-8位代替int-16位 2.使用无符号类型 3. 尽量避免使用浮点指针。 因为在单片机这类8位机上使用32位浮点数会浪费大量的时间。可以通过提高数值数量级和使用整型运算来消除浮点指针。 4.使用位变量 对于某些标志位应使用位变量。 但应注意: (1)用#pragma disable说明和用“using”指定的函数,不能返回bit值 (2)bit变量不能声明为指针,如bit *ptr是错误的。 (3)不能使用bit数组,如bit arr[5]. 5.用局部变量代替全局变量。 因为编译器在内部存储区中为局部变量分配存储空间,而在外部存储区中为全局变量分配存储空间,从而降低全局变量的速度。 6.为变量分配内部存储区 7.使用特定指针 8.使用宏代替函数 9.要时刻关注内部RAM的使用情况 二、C51使用规范 为增强程序的可读性,便于源程序得交流,减少合作开发中的障碍,应当在编写C51程序时遵循一定的规范。 注释 (1)采用中文 (2)开始的注释 文件(模块)注释内容:公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法还要加上流程图说明 (3)函数开头的注释内容 函数名称、功能、说明、输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数还要加上变量用途说明。如 /*******************************************************/ *函 数 名:v_LcdInt *功能描述:LCD初始化 *函数说明:初始化命令:0x3c,0x08,0x01,0x06 *调用函数:v_Delaymsec(),v_LcdCmd() *全局变量: *输入:无 *返回:无 *设计者:zhao 日期:2007-04-01 *修改者:zhao 日期:2007-04-01 *版本: /********************************************************/ (4) 程序中的注释内容 修改时间和作者、方便理解的注释等。 2. 命名 命名必须有一定的实际意义。 (1) 常量的命名: 全部用大写 (2) 变量的命名: 变量名加前缀,前缀反 映变量的数据类型,用小写。反映变量意义的 第一个字母大写其他小写 (3) 函数的命名: 函数名首字母大写,函 数名若包含有两个单词,则每个单词首字母大 写。 函数原型说明包括:引用外来函数及内部函 数,外部引用必须在右侧注明函数来源(模块 名和文件名) ,内部函数只要注释其声明文 件名。 3. 编辑风格 (1) 缩进:缩进以Tab为单位,预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“{”“}”配对对齐,并与其前一行对齐。 (2)空格: 数据和函数在其类型修饰名称之间适当空格并据情况对齐 (3)对齐:原则上关系密切的行应对齐、对齐包括类型、修饰、名称、参数等各部分对齐。 (4)空行: 程序文件结构各部分之间空两行,若不必要也可空一行,各函数实现之间一般空两行。 (5)修改:对旧语句的删除修改要慎重 (6)形参:需要必要的说明 定时器/计数器综合应用 1. 设单片机系统时钟频率为12MHz,编程使P1.0和P1.1分别输出周期为1ms和500us的方波 分析:当系统时钟为12MHz、工作模式为2时,最大的定时时间为256us,满足周期为500us的要求。可以算出TH0=0x06H 程序如下: #include”reg51.h” sbit P1_0=P1^0; sbit P1_1=P1^1; void main() { char i; TMOD=0x02; //定时器T0,工作模式2 TH0=0x06;TL0=0x06; //装入初始值 TR0=1; while(1) { for(i=0;i2;i++) { do{} while(!TF0); //等待定时中断 P1_1!=P1_1 ; } P1_0!=P1_0 ; }//end while } 2. 门控位的应用。GATE是是控制外部输入脉冲对定时计数器的控制,当GATE=1时,只有INTx=1且软件使TRx=1才能启动定时器。利用这个特性可测输入脉冲的宽度。 利用定时器T0测量某正脉冲的宽度

您可能关注的文档

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档