- #include "Ai8051U.H"
- #include "intrins.h"
-
- void Timer11_Isr(void) interrupt 67
- {
- P00 = !P00; // P0.0翻转,用于观察1ms中断是否产生
- }
-
- void Timer11_Init(void) //1毫秒@11.0592MHz
- {
- P_SW2 |= 0x80; //使能访问XFR寄存器
- T11CR &= 0xf3; //选择时钟源 (系统时钟SYSclk)
- T11CR |= 0x10; //定时器时钟1T模式
- T11L = 0xCD; //设置定时初始值
- T11H = 0xD4; //设置定时初始值
- T11CR |= 0x80; //定时器11开始计时
- T11CR |= 0x02; //使能定时器11中断
- }
-
- void Timer2_Isr(void) interrupt 12
- {
- P01 = !P01; // P0.1翻转,用于观察2ms中断是否产生
- }
-
- void Timer2_Init(void) //2000微秒@11.0592MHz
- {
- AUXR |= 0x04; //定时器时钟1T模式
- T2L = 0x9A; //设置定时初始值
- T2H = 0xA9; //设置定时初始值
- AUXR |= 0x10; //定时器2开始计时
- IE2 |= 0x04; //使能定时器2中断
- }
-
- void main(void)
- {
- // 将所有I/O设为准双向口
- P0M1 = 0x00; P0M0 = 0x00;
- P1M1 = 0x00; P1M0 = 0x00;
- P2M1 = 0x00; P2M0 = 0x00;
- P3M1 = 0x00; P3M0 = 0x00;
- P4M1 = 0x00; P4M0 = 0x00;
- P5M1 = 0x00; P5M0 = 0x00;
- P6M1 = 0x00; P6M0 = 0x00;
- P7M1 = 0x00; P7M0 = 0x00;
- Timer11_Init();
- Timer2_Init();
- EA = 1; // 打开总中断
-
- while(1) P02=!P02;
- }
复制代码 这段代码在 STCIDE 中编译,T11中断输出不正确,同时没有T2中断输出,注释掉T11部分正常
不正确的T11
应该输出这样的波形
|