T11的时钟源灵活,除了低功耗唤醒,还支持普通定时器计数器的功能,是支持外部晶振和内部高低速IRC提供时基的,支持12T模式和8位预分频,我测试了没什么问题,下面的代码参考一下。
main.c
- #include "stc8h.h"
- #include "intrins.h"
-
- void Timer11_Isr(void) interrupt USER_VECTOR
- {
- P16 = !P16;
- P17 = !P16;
- }
-
- void Timer11_Init(void) //1秒@11.0592MHz
- {
- T11CR &= 0xf3;
- T11CR |= 0x04; //选择时钟源 (内部高速IRC)
- T11PS = 0x0E; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
- T11CR &= 0xEF; //定时器时钟12T模式
- T11L = 0x00; //设置定时初始值
- T11H = 0x10; //设置定时初始值
- T11CR |= 0x80; //定时器11开始计时
- T11CR |= 0x02; //使能定时器11中断
- }
-
-
- void main()
- {
- EAXSFR(); //
- P0M0 = 0x00;P0M1 = 0x00;
- P1M0 = 0xc0;P1M1 = 0x00;
- P2M0 = 0x00;P2M1 = 0x00;
- P3M0 = 0x00;P3M1 = 0x00;
- P4M0 = 0x00;P4M1 = 0x00;
- P5M0 = 0x00;P5M1 = 0x00;
- Timer11_Init();
- EA = 1;
-
- while (1);
- }
-
复制代码
irs.A51
- CSEG AT 021BH
- JMP 006BH
- END
复制代码
|