本帖最后由 晓飛飛 于 2024-5-30 16:46 编辑
实测35MHz和40MHz IRC工作频率下都很正常,没有上述问题,下面是代码和测试视频:
- #include "stc8h.h"
- #include "intrins.h"
- void Timer0_Isr(void) interrupt 1
- {
- static unsigned int count;
- switch(count++)
- {
- case 200:
- P26 = 0;
- break;
- case 400:
- P27 = 0;
- break;
- case 600:
- P26 = 1;
- break;
- case 800:
- P27 = 1;
- break;
- case 1000:
- count = 0;
- break;
- default:
- break;
- }
- }
-
- void Timer0_Init(void) //1毫秒@40MHz
- {
- AUXR |= 0x80; //定时器时钟1T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0xC0; //设置定时初始值
- TH0 = 0x63; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0 = 1; //使能定时器0中断
- }
-
- void main()
- {
- EAXSFR(); //
- P0M0 = 0x00; P0M1 = 0x00;
- P1M0 = 0x00; P1M1 = 0x00;
- P2M0 = 0x00; P2M1 = 0x00;
- P3M0 = 0x00; P3M1 = 0x00;
- P4M0 = 0x00; P4M1 = 0x00;
- P5M0 = 0x00; P5M1 = 0x00;
- Timer0_Init(); //初始化Timer0并启动中断
- EA = 1;
- while (1);
- }
-
复制代码
|