单片机编程心得体会

无论什么时候我们都要以实际应用的角度去考虑程序的编写

2. 无论什么时候都不要让 CPU 白白浪费等待尤其是延时(超过

1MS) 这样的地方

3. 设计相应驱动电路时候应该仔细阅读芯片的数据手册了解每

个引脚的驱动能力以及整个芯片的驱动能力

4. 最重要的是如何去释放 CPU( 如果是 led 每 500ms 闪烁一次那

么可以设置1ms 为基准定时器定时1ms 后进入相应操作使计数加1判

断达到 500 时进入 led(), 这些函数执行的时间是相当短的如果主程

序中还有其他函数则 CPU 会顺次往下执行对于其它函数(有的话)也

要采取相同的措施保证其不堵塞 CPU 若全部基于这种方法执行我们

的小系统依旧可以保证多个任务(多个函数)同时进行系统的实时性

得到了一定的保证

) 这是写出合格程序的基础

5. 数码管显示动态显示的亮度比静态显示要差一点所以在限流

电阻时应略小于静态显示电路中动态扫描显示刷新频率最好大于

50HZ 即每显示一轮的时间不超过 20ms 每个数码管显示的时间不能太

长也不能太短时间太长会影响刷新率导致总体显示呈现闪烁的现象

时间太短发光二级管的电流导通时间也就短会影响总体的显示亮度

一般控制在 1ms 左右最佳

6. 模块化编程初学单片机的时候(开始是C语言)是接触一些芯

片实现独立的功能如 DS1302DS18B20 等程序也不会很大所以所有的

程序都放在一个文件里面

随着学习的逐步深入程序也愈来愈大这给调试带来了一定的困

难后来了解了模块化编程这个概念运用之后大大地改善了程序的可

读性和可移植性

下面简单的介绍

C 语言源文件*.c 稍微比较大的设计都会涉及到众多模块我们

可以被各自独立的模块封装到不同的*.c 源文件中该文件中定义模块

函数申明部分一般不放入

C 语言头文件*.h 把各个模块的的申明文件(说模块的接口比较

合适)放在相应的*.h 头文件中相应的模块对应相应的.h头文件.形

ifndefDS1302H

defineDS1302H

/* 模块ds1302.c 文件中函数等的申明文件*/

endif

// 上面几个条件编译和宏定义是为了防止重复包含

这样我们就把各个模块的接口函数都引出到各自的头文件中然

后在主程序中调用这些模块的*.h 头文件即可

这点和 C++ 中的类很像

在数据类型定义的时候有时候用 typedef 会取得很好的效果

说到模块化编程以前曾看过不少大虾的例子他们的源文件和输

出下载文件是放在项目文件夹下地不同文件夹中如源文件放在 src

文件夹中输出*.hex 放在 output 文件夹中这样整个项目就更显得清

晰明了

7. 多任务程序这个概念在前面也有提到就是充分地利用 CPU 来

实现多任务的前后台操作相当于自己用程序构造一个基于前后台的

多任务操作系统换句话说就是通过定时器中断合理地分配 CPU 资源

来响应不同的任务

多个任务需要 CPU 关照的频度不一样我们选择最快的那个频度

来作为定时器的节拍(通常为最小公倍数这样方便定时器分配)然后

通过定时器分频即满足各个任务的响应节拍

比如任务 A频度为 50HZ 任务 B为 40HZ 这样我们就可以去定时

器中断节拍为 200HZ 每个任务设定一个节拍控制计数器 C当 C计数 4

次时任务切换到 A计数到 5次切换 B……

你可能感兴趣的:(tomcat)