找回密码
 立即注册
查看: 917|回复: 1

STC8G1K08-381-TSSOP20外部中断2无法关闭

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-17 16:23:54

2

主题

1

回帖

22

积分

新手上路

积分
22
发表于 2023-11-6 12:54:20 | 显示全部楼层 |阅读模式
在实际项目中突然发现一个问题,执行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是可以正常关闭的,不知道问题出在哪。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2060

回帖

7089

积分

论坛元老

积分
7089
发表于 2023-11-6 13:22:06 | 显示全部楼层
本帖最后由 乘风飞扬 于 2023-11-6 13:36 编辑

这个例子,怎么判断是先触发INT0,还是先触发INT2?
如果是先触发了INT2,然后才触发INT0的话,就看不到INT2关闭中断后是否还会再触发中断了。
最好用示波器测量一下INT2上电时是否有干扰脉冲信号产生。
或者用附件的例子试试,通过串口打印中断次数。INT0中断后关闭INT2,INT3,INT4中断。

外中断测试-关闭中断234-串口打印中断次数.zip

9.03 KB, 下载次数: 46

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 20:15 , Processed in 0.150470 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表