打印

系统时间显示

[复制链接]
752|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

粉丝