S08P-Lite开发板所用的MC9S08PT60所配置的RTC计时器是个准RTC,它没有像通常RTC那样提供进制处理等功能。 为此,无法直接利用该RTC来进行往常的电子时钟设计。为实现电子时钟的功能这里是采用例程所提供的毫秒延时函数DelayMS(), 再为它添加上进制处理和OLED屏显示即可。
显示电子时钟的主程序为: - void main(void)
- {
- uint8_t i=0,j=0,k=0;
- Sys_Init();
- EnableInterrupts;
- MTIM1_Init();
- PORT_PTAOE_PTAOE2 = 1; //PTA2
- PORT_PTAOE_PTAOE3 = 1; //PTA3
- DelayMS(1);
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,0,"+C9)08(*60",16);
- i=0;
- OLED_ShowChar(16,2,':',16);
- OLED_ShowChar(40,2,':',16);
- while(1)
- {
- OLED_ShowNum(0,2,k,2,16);
- OLED_ShowNum(24,2,j,2,16);
- OLED_ShowNum(48,2,i,2,16);
- i++;
- if(i==60)
- {
- j++;
- i=0;
- }
- if(j==60)
- {
- k++;
- j=0;
- }
- if(k==24)
- {
- k=0;
- }
- DelayMS(1000);
- }
- }
复制代码
经程序编译下载,其计时效果如下图所示。
计时效果图
|