项目 4简易数字钟的设计(2)计算机专业有门必修课程叫“软件工程”,这门课程告诉软件学习者们如何系统性的、法律规范化的、可定量的过程化方法去开发和维护软件
我们在学习单片机编程的过程当中,也应该借鉴“软件工程”课程当中的讲述的方法和手段,去维护和法律规范我们的单片机程序
在本单元当中,我们安排了 4 个任务
任务 1 介绍了一种基于状态机的程序框架,通过状态机的学习,初学者可以写出思路清楚、多任务运行流畅的程序
任务 2 介绍了程序的风格和可移植性,法律规范了变量和函数等的命名,并简单介绍了 C51 中提高程序可移植性的方法
任务 3 介绍了程序模块化的实现方法,让初学者学会合理的管理程序
任务 4 中运用本单元所讲的知识,结合前一单元,完成简易数字钟的设计
【内容安排】4
1 基于状态机的程序框架4
2 程序的风格和可移植性4
3 程序的模块化4
4 简易数字钟的设计任务 4
1 基于状态机的程序框架4
1 任务介绍上一单元中已经多次提到多任务运行时,延时函数(DelayMs())对程序的危害性,堵塞CPU,系统任务的实时性得不到有效的保证
4 节中,提到中断可以提高任务的实时性,但是单片机的中断数量是有限的,不可能每一个任务都有中断
5 节中,通过定时器中断服务函数提供的时标信号,定时扫描 LED 和数码管,可以消除延时函数,时标信号给我们提供了一种新的思路来消除延时函数(本质上还是借助于中断)
但是 LED 闪耀和动态数码管扫描都是属于状态时间分配均匀的(LED 闪耀有两个状态,亮和灭分配时间相等;数码管每个位扫描的时间也相等),程序易于实现
对于像按键检测这样的(时间分配不均匀的)任务,怎样来消除程序中的延时呢
本节任务是:利用本节所讲“状态机”,改写独立按键程序,并增加“长按”、“连击”等功能
2 知识准备1、状态机的思想网络上常常报道