STC8G1K08-381-TSSOP20外部中断2无法关闭
在实际项目中突然发现一个问题,执行INTCLKO &= 0xEF;这条语句之后,中断2依然能正常触发。单独写了个测试代码如下:#include "STC8xxxx.h"
#include "intrins.h"
#define MAIN_Fosc 24000000UL
sbit k3 = P3^6;
sbit k2 = P3^7;
sbit k1 = P3^2;
sbit LED = P1^3;
sbit FMQ = P1^4;
void main()
{
P_SW2 |= 0x80;
P1M0 = 0x00; P1M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P3PU = 0xFC;
INTCLKO |= 0x70;
IT0 = 1;
EA = 1;
FMQ = 0;
LED = 0;
while(1);
}
void INT0_Isr() interrupt 0
{
INTCLKO &= 0x00;
}
void INT2_Isr() interrupt 10
{
FMQ = 1;
}
void INT3_Isr() interrupt 11
{
LED = 1;
}
测试发现确实无法关闭外部中断2,中断3是可以正常关闭的,不知道问题出在哪。
本帖最后由 乘风飞扬 于 2023-11-6 13:36 编辑
这个例子,怎么判断是先触发INT0,还是先触发INT2?
如果是先触发了INT2,然后才触发INT0的话,就看不到INT2关闭中断后是否还会再触发中断了。
最好用示波器测量一下INT2上电时是否有干扰脉冲信号产生。
或者用附件的例子试试,通过串口打印中断次数。INT0中断后关闭INT2,INT3,INT4中断。
页:
[1]