STC8H2K08U-45MHz-TSSOP20/SOP16
低功耗,24位定时器 T11 应用, 可以省电模式唤醒
参数定义:
- #define MAIN_Fosc 11059200UL
- #define T11MS12T (65536 - MAIN_Fosc / 12 / 1000)
- #define T11MS1T (65536 - MAIN_Fosc / 1000)
复制代码
中断函数:
- void tm11isr() interrupt 13 //借用13号中断向量地址,在isr.asm进行中断映射
- {
- // T11CR &= ~0x01; //清中断标志T11IF,进中断时硬件自动清除
- P10 = ~P10;
- }
复制代码
定时器(12T)模式:
- //定时器(12T)
- T11CR = 0x00; //做定时器,关闭时钟输出,12T模式,系统时钟做时钟源
- T11PS = 0; //分频系数:(T11PS+1)分频
- T11L = T11MS12T;
- T11H = T11MS12T >> 8;
- T11CR |= 0x82; //定时器11开始计数,允许中断
- EA = 1;
复制代码
定时器(1T)模式:
- //定时器(1T)
- T11CR = 0x10; //做定时器,关闭时钟输出,1T模式,系统时钟做时钟源
- T11PS = 0; //分频系数:(T11PS+1)分频
- T11L = T11MS1T;
- T11H = T11MS1T >> 8;
- T11CR |= 0x82; //定时器11开始计数,允许中断
- EA = 1;
复制代码
计数器模式:
- //计数模式 - T11脚(P14)输入脉冲计数
- T11CR = 0x50; //做计数器,关闭时钟输出,1T模式,系统时钟做时钟源
- T11PS = 0; //分频系数:(T11PS+1)分频
- T11L = 0xff;
- T11H = 0xff;
- T11CR |= 0x82; //定时器11开始计数,允许中断
- EA = 1;
复制代码
选择时钟源:
- //选择时钟源
- // T11CR = 0x10; //做定时器,关闭时钟输出,1T模式,系统时钟做时钟源
- T11CR = 0x1c; //做定时器,关闭时钟输出,1T模式,内部低速IRC做时钟源(自动启动内部低速IRC)
- // T11CR = 0x18; //做定时器,关闭时钟输出,1T模式,外部32K晶振做时钟源
- T11PS = 0; //分频系数:(T11PS+1)分频
- T11L = T11MS1T;
- T11H = T11MS1T >> 8;
- T11CR |= 0x82; //定时器11开始计数,允许中断
- EA = 1;
复制代码
如果使用外部32K晶振做时钟源需要提前启动外部32K晶振:
- X32KCR = 0x80 + 0x40; //启动外部32K晶振, 低增益+0x00, 高增益+0x40.
- while (!(X32KCR & 1)); //等待时钟稳定
复制代码
参考程序:
定时器T11.zip
(13.72 KB, 下载次数: 235)
|