系统时间显示

[复制链接]
959|3
 楼主| quangg 发表于 2016-1-31 17:37 | 显示全部楼层 |阅读模式
从NVRAM 中可以读取系统的时间,系统一般借助NVRAM 产生的秒中断每秒读取一次当前时间并在LCD上显示。关于时间的显示,有一个效率问题。因为时间有其特殊性,那就是60 秒才有一次分钟的变化,60 分钟才有一次小时变化,如果我们每次都将读取的时间在屏幕上完全重新刷新一次,则浪费了大量的系统时间。
zya888 发表于 2016-1-31 17:37 | 显示全部楼层
一个较好的办法是我们在时间显示函数中以静态变量分别存储小时、分钟、秒,只有在其内容发生变化的时候才更新其显示。
zya888 发表于 2016-1-31 17:38 | 显示全部楼层
extern void DisplayTime(…)
{
  static BYTE byHour,byMinute,bySecond;
  BYTE byNewHour, byNewMinute, byNewSecond;
  byNewHour = GetSysHour();
  byNewMinute = GetSysMinute();
  byNewSecond = GetSysSecond();
   
  if(byNewHour!= byHour)
  {
  … /*  显示小时 */
  byHour = byNewHour;
  }
  if(byNewMinute!= byMinute)
  {
  … /*  显示分钟 */
  byMinute = byNewMinute;
  }
  if(byNewSecond!= bySecond)
  {
  … /*  显示秒钟 */
  bySecond = byNewSecond;
  }
}
 楼主| quangg 发表于 2016-1-31 17:38 | 显示全部楼层
这个例子也可以顺便作为C 语言中 static关键字强大威力的证明。当然,在C++ 语言里,static具有了更加强大的威力,它使得某些数据和函数脱离"对象"而成为"类"的一部分,正是它的这一特点,成就了软件的无数优秀设计。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

226

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部