色彩时钟的表现方式是色彩,而计时则整个DIY的核心,否则时钟就失去了实际意义。 那如何用单片机的内部资源来实现计时功能呢? 我们知道在单片机内部其资源配置可谓面面俱到,如I/O口、定时器/计数器、串行通讯及中断等。使用定时器/计数器,就可完成计时处理的任务,其设计思想为:使用定时器产生基准的秒信号,然后在进行分、秒、时的进制处理。所涉及的函数有:定时器初始化函数TimeInit()、定时器中断处理函数Time0()及相应的主程序。 - //产生5ms计时信号
- void TimeInit(void)
- {
- /* 模式设置 */
- TMOD = (TMOD & 0xf0) | 0x01;
- /* 赋初值 */
- TH0 = 0xee;
- TL0 = 0x00;
- /* 定时器中断及全局使能 */
- IE =IE| 0x82;
- TR0 = 0;
- }
- //使用5ms信号实现计时功能
- void Time0() interrupt 1
- {
- /* 重新加载初值 */
- TH0 = 0xee;
- TL0 = 0x00;
- /* 中断处理 */
- if(0 != i)
- {
- i--;
- }
- j=j+1;
- if(j>200)
- {
- j=0;
- f=1;
- rtc++; // 秒计时器
- // 时钟计时处理
- if(rtc>59)
- {
- rtc=0;
- mm++; // 分计时器
- if(mm>59)
- {
- hh++; // 时计时器
- mm=0;
- }
- if(hh>23) hh=0;
- }
- }
- }
复制代码 |