Key_1Key_1Key_1程序开始A: 时钟状态(默认)B: 设置闹铃状态C: 秒表状态(处理时钟状态下的所有事务)(处理设置闹铃状态下的所有事务)(处理秒表状态下的所有事务)多功能时钟流程图一. 功能确认 时钟功能:1
时钟显示小时和分钟2
用户可以通过按键调整时钟的时间3
无论当前时钟是否在前台显示,时钟始终是运行的
定时闹铃功能:1
用户可以通过按键设置闹铃时间(小时和分钟),设置完成后可以按确定键退出设置
当系统时钟的时间等于预设的闹铃时间时,系统蜂鸣器响 5 秒钟
用户可以设置两个闹铃
秒表功能:1
用户可以通过按键进入秒表功能,也可以退出秒表状态
秒表高 2 位显示秒,低 2 位显示百分之一秒
可以通过按键暂停、(继续)运行秒表,可以通过按键对秒表清零
二. 状态分析及模块分割根据以上的分析,系统共有三个大的功能:时钟、设置定时、秒表,各个功能之间可以通过按键来切换,且各个功能内部仍需要使用按键来处理,故可以考虑将系统定义为三个状态(status):时钟状态、设置定时状态、秒表状态
显然,同一个按键在不同状态下的功能是不一样的
这样,在某种状态下,按下某个按键,代表唯一确定的含义
这种处理方法可以称为“状态—按键”法
这样我们可以把程序对应地分成以下三个任务模块
这个流程就可以作为主流程(main()函数),当然,A、B、C 三框内部的流程仍有待于细化
分析用户按下了什么键
切换到设置闹铃状态,显示 ON01Key_1 键:时钟调校:小时数加 1Key_2 键:时钟调校:分钟数加 1Key_3 键:结束分析用户按下了什么键
切换到秒表状态调用秒表显示Key_1 键:闹铃预设:小时数加 1Key_2 键:闹铃预设:分钟数加 1Key_3 键:结束显示 ON01 或者预设的闹铃时间没有按键:三. 详细设计A 框内部要处理的事务见第一部分