据STC8H手册介绍,STH8H2K17U有个可以进行8位预分频的T11.
今天对着手册对其相关的寄存器进行配置,让T11产生1秒中断去控制接在P37的LED。
结果是没有效果,不知道又又又在哪里出错了。
这么简单的东西还用不了,总觉得对新事物老是很难接受,太菜了。
代码如下:
main.c
- #include "stc8h.h"
- #define MAIN_Fosc 24000000L //定义主时钟
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
-
- typedef unsigned char uchar;
- typedef unsigned int uint;
- typedef unsigned int ushort;
- typedef unsigned long ulong;
- void Timer11_Init(void); //1秒@24MHz
- void delay_ms(u8 ms);
- void main()
- {
- P3M0 = 0x00;
- P3M1 = 0x00;
- Timer11_Init();
- while (1)
- {
- delay_ms(1);
- }
- }
-
-
-
- void delay_ms(u8 ms)
- {
- u16 i;
- do{
- i = MAIN_Fosc / 10000;
- while(--i); //10T per loop
- }while(--ms);
- }
-
-
- void Timer11_Init(void) //1秒@24MHz
- {
- T11CR=0x02;//1000 0010 T11作定时器,12T 模式,用系统时钟SYSclk
- T11PS=199;//总分频12*200,1秒计数为10000
- T11H=(65535-10000)>>8;
- T11L=65535-10000;
- T11CR |=0x80; //开始计数
- EA=1;
- }
-
-
- void Timer11_Isr(void) interrupt 13
- {
- P37=!P37;
- }
复制代码
isr.asm
- CSEG AT 021BH ;原T11中断号
- JMP 006BH ;跳转到13号中断入口
- END
复制代码
|