找回密码
 立即注册
查看: 90|回复: 2

AI8G1K08A外部中断INT2问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-06-22 13:15:11

2

主题

7

回帖

44

积分

新手上路

积分
44
发表于 2026-6-22 13:15:11 | 显示全部楼层 |阅读模式
AI8G1K08A-8脚,P54(INT2)用于外部唤醒和外部中断。

单片机不进掉电PD模式,INT2反复多次中断都没问题。

进PD模式后INT2可以唤醒CPU,但是唤醒之后就不再进INT2中断了!

确保INT2中断没关,即使唤醒后立即加上以下代码:
P5M1 = 0xEF;
P5M0 = 0x00;                //P54双向口,其余高阻
INTCLKO |= 0x10;        //使能INT2中断

也没用。反正就是PD模式唤醒之后INT2就不再产生中断了。

请大佬赐教!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:614
  • 最近打卡:2026-07-23 10:39:14
已绑定手机

14

主题

252

回帖

3160

积分

论坛元老

积分
3160
发表于 2026-6-22 13:54:06 | 显示全部楼层
#include "reg51.h"
#include "intrins.h"

sfr     INTCLKO     =   0x8f;
#define EX2             0x10
#define EX3             0x20
#define EX4             0x40
                    
sbit    P10         =   P1^0;
sbit    P11         =   P1^1;
                    
sfr     P0M1        =   0x93;
sfr     P0M0        =   0x94;
sfr     P1M1        =   0x91;
sfr     P1M0        =   0x92;
sfr     P2M1        =   0x95;
sfr     P2M0        =   0x96;
sfr     P3M1        =   0xb1;
sfr     P3M0        =   0xb2;
sfr     P4M1        =   0xb3;
sfr     P4M0        =   0xb4;
sfr     P5M1        =   0xc9;
sfr     P5M0        =   0xca;

void INT0_Isr() interrupt 0
{
    P10 = !P10;                                 //测试端口
}

void INT1_Isr() interrupt 2
{
    P10 = !P10;                                 //测试端口
}

void INT2_Isr() interrupt 10
{
    P10 = !P10;                                 //测试端口
}

void INT3_Isr() interrupt 11
{
    P10 = !P10;                                 //测试端口
}

void INT4_Isr() interrupt 16
{
    P10 = !P10;                                 //测试端口
}

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    IT0 = 0;                                    //使能INT0上升沿和下降沿中断
//  IT0 = 1;                                    //使能INT0下降沿中断
    EX0 = 1;                                    //使能INT0中断
                                                
    IT1 = 0;                                    //使能INT1上升沿和下降沿中断
//  IT1 = 1;                                    //使能INT1下降沿中断
    EX1 = 1;                                    //使能INT1中断
                                                
    INTCLKO = EX2;                              //使能INT2下降沿中断
    INTCLKO |= EX3;                             //使能INT3下降沿中断
    INTCLKO |= EX4;                             //使能INT4下降沿中断

    EA = 1;

    PCON = 0x02;                                //MCU进入掉电模式
    _nop_();                                    //掉电模式被唤醒后,MCU首先会执行此语句
                                                //然后再进入中断服务程序
    _nop_();
    _nop_();
    _nop_();

    while (1)
    {
        P11 = ~P11;
    }
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2026-07-23 09:42:38

851

主题

1万

回帖

2万

积分

管理员

积分
24424
发表于 2026-6-22 14:37:16 | 显示全部楼层
截图202606221434589404.jpg

截图202606221435289652.jpg
截图202606221435579419.jpg
截图202606221436274524.jpg
截图202606221437138704.jpg

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-23 16:24 , Processed in 0.073713 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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