strait 发表于 2023-5-26 11:45:40

请大神帮忙看看T3计时器的中断问题

#include "stc8h.h"
#include "intrins.h"
void TM3_Isr() interrupt 19
{
P33 = !P33;
        //测试端口

}
void main()
{
P_SW2 |= 0x80; //使能访问 XFR
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;

P3M0 = 0x18;
P3M1 = 0x00;


       
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
       
T3L = 0x11; //T3 设置一个小数
T3H = 0x00;
       
TM3PS=0x01;
//预分频器

IE2|=IE2|0x20;
//使能T3定时器中断

EA = 1;//使能总中断

T4T3M = 0x08; //启动定时器

while (1);
}

根据T3的频率计算公式,周期大约在0.14秒;P33管脚接一个LED。如果中断正常,那么LED应该闪烁,并且人眼能够识别。可是现在LED保持常亮。难道是中断没有触发? 请大神帮忙看看这个程序问题出现在哪里?

strait 发表于 2023-5-26 11:47:36

芯片是STC8H1K08 编程器为STC USB Link1。程序编译下载都没有什么问题

strait 发表于 2023-5-26 11:52:13

电路没有问题,已经通过其他程序验证过了。

zhp 发表于 2023-5-26 13:06:28



STC8H1K08只有定时器0/1/2,没有定时器3(T3)


zhp 发表于 2023-5-26 13:17:03

你的代码没问题
将你的原始代码编译完成后下载到一个有定时器3的芯片,P3.3口正常闪烁
但STC8H1K08没有定时器3,所以P3.3口不翻转

strait 发表于 2023-5-26 13:34:08

谢谢。刚才也在继续看芯片手册,的确是这个问题。现在调整到Timer2,就可以了。
页: [1]
查看完整版本: 请大神帮忙看看T3计时器的中断问题