在单片机C语言编程中的心得体会在单片机C语言编程中的心得体会

在单片机C语言编程中的心得体会

作者:彭树林

在单片机C语言编程中使用恰当的`优化手段,可以写出简洁高效的代码。以下是笔者在C51编程过程中的一点心得体会。

1.尽量使用短的数据类型。如uchar、bit、uint,有时需要对uchar数据类型进行按位访问,可将其定义在bdam区间。慎重使用float数据类型,有时它可以转化成int数据类型来代用。

2.熟练指针的使用。例如Uint是由双字节拼接而成,有时用来存放16位地址。获取其高八位和低八位地址的方法为:只要用uchar*p;p=&int0,则*p表示其高八位,*(++p)表示其低八位,非常方便。

3.使用自加、自减的方法为:a++;a-,它会调用INC、DEC指令,效率远比a=a+1;a=a-1高。

4.循环:使用uchar a;for(a=1;a≤8;a++)…时,条件a=8编译后代码比较繁琐,可用for(a=8;a=a-1)…来代替,充分利用单片机的为零跳转指令。同样,在do{…}while()中也适用。

5.当多个条件判别时,if(A&&B&&C&&D),只要第一个条件A不符合,程序是不管后面的条件的,所以可把最可能出错的条件排在前面处理。

6.子程序的参量。调用子程序时若带参量,程序会开辟存储空间(如Rn)来存放参量,这个空间是可以充分利用的。如延时子程序void delay(uehar time){while(time一);J,可以延时相当短的时间。

7.空指令NOP在C中用_nop一0实现,定义在中。

8.求余运算"%"操作是调用子程序来完成的,效率低。如果是求2的n次方的余数,可使用位操作来代替。如:a=a%8可改用8=a&7,效率明显提高。同样2xN的乘除运算可用移位来实现。如:a=a*2;b=h/2可改为a=a《1;b=b》1。

9.使用结构体类型数组时,在查找第n个值时要利用乘法指令(序号乘以类型宽度),当程序高速运行时,可能会影响其速度。

10.Keil的软件调试非常有用。笔者常将编译后的程序与C源程序对照,查看汇编代码、检查不恰当之处。有时还可用来计算子程序执行时间(在确定精确延时程序参数时非常有用)。

单片机c语言开发实验心得,在单片机C语言编程中的心得体会相关推荐

  1. linux中c语言开发实验报告,Linux下C语言编程实验报告.doc

    第五章: Linux下的C语言编程 姓名: 学号:520913080429 专业:信息安全09-04 实验内容: 1.c语言编程 2.vi编辑器 3.gcc编辑器 4.gdb编辑器 5. gdb中运行 ...

  2. Go语言开发(九)、Go语言并发编程

    Go语言开发(九).Go语言并发编程 一.goroutine简介 1.并发与并行简介 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行. 并发(concurrency):指在同 ...

  3. Go语言开发(二)、Go语言基础

    Go语言开发(二).Go语言基础 一.Go语言程序结构 Go语言程序基本结构如下: A.包声明 B.引入包 C.函数 D.变量 E.语句 & 表达式 F.注释 package main //包 ...

  4. 数据结构c语言版实验报告2,数据结构(C语言版) 实验报告 (2)

    <数据结构(C语言版) 实验报告 (2)>由会员分享,可在线阅读,更多相关<数据结构(C语言版) 实验报告 (2)(15页珍藏版)>请在人人文库网上搜索. 1.数据结构(C语言 ...

  5. 重庆理工大学c语言程序实验报告,重庆理工大学-C语言程序实验报告.doc

    重庆理工大学-C语言程序实验报告 程序设计基础C实验报告 PAGE 47 <程序设计基础C> 实 验 报 告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 重庆理工大学计算机学院 ...

  6. c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C程序设计 实验学期 至 学年 第 学期 学生所在系部 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计 ...

  7. c语言程序设计实验周信东指针,C语言程序设计实验4数组周信东

    1.实验 4 数 组姓名:XXX 学号: 实验日期:XXX1. 实验目的和要求(1)掌握一维数组与二维数组的定义.使用及初始化方法.(2)学习数组作为函数参数的用法.(3)掌握字符数组和字符串函数的使 ...

  8. 学会c语言开发出很多,学会了C语言可以开发出很多东西吗?

    C语言相比其他高级语言,就像内功和剑法一样.只会C语言可能并不能写出一个看起来就很厉害的程序,但C语言是你学好其他一切语言的基础.有了C语言的底子,再学别的语言就很容易上手了. 你能想到的,C语言都能 ...

  9. 华南农业大学c语言上机实验答案,华南农业大学C语言上机实验答案.doc

    华南农业大学C语言上机实验答案 格式:一题号一答案,相对应 1001 #include "stdio.h" int main() { int a,b; scanf("%d ...

最新文章

  1. 多备份cloud 5技术:传统数据备份思路的完美移植
  2. spring源码分析之@ImportSelector、@Import、ImportResource工作原理分析
  3. 机器学习算法进阶——决策树和随机森林
  4. 使用UTL_FILE在oracle中读写文本数据
  5. Python数据可视化的10种技能
  6. 小学计算机教育实习教案,小学信息技术教师资格证面试教案模板:《漂亮的剪贴画》...
  7. 火山引擎战略初现,字节跳动打造To B服务双引擎?
  8. Hibernate二级缓存存集合对象
  9. 电源篇 -- 升压电路 Boost
  10. 中国 各大银行bankCode 开户行代码和名称 高清银行图标
  11. Arduino 系列传感器应用
  12. 磁场发生装置电磁铁简介及工作原理
  13. ssh 报 You don't exist, go away
  14. AliOS-Things--ESP8266-linkkitapp-配网(一)
  15. 实时车道线检测和智能告警 | 车距 + 弯道 + 车道线
  16. Ubuntu下安装JDK/JRE受难记!
  17. tooltips插件
  18. 本松新材创业板IPO终止:业绩下滑,客户较集中,周永松为实控人
  19. 《软件方法(上)业务建模和需求》第2版 勘误(2022年10月24日更新)
  20. centos6.10 mysql 5.7_如何在CentOS6.10安装MySQL5.7

热门文章

  1. erwin7.3中文版
  2. go每日新闻--2020-12-03
  3. 如何用matlab进行部分式展开_[转载]用MATLAB进行部分分式展开
  4. 二维码制作 最简单的代码实现功能
  5. Oracle Secure Global Desktop 部署考虑事项
  6. 网页计数器案例———JSP4
  7. 网页计数器JavaBean
  8. MATLAB实现各种熵:香农熵、条件熵、模糊熵、样本熵等
  9. 2022-11-14 QT
  10. 相亲交友小程序/婚恋相亲同城交友/婚恋红娘源码系统/多风格/带红娘/H5/小程序