找回密码
 立即注册
查看: 1037|回复: 16

开启INT2外部中断然后进入睡眠,唤不醒,求解决----已解决

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:345
  • 最近打卡:2025-04-30 08:41:54

4

主题

32

回帖

1496

积分

金牌会员

积分
1496
发表于 2024-5-20 09:56:36 | 显示全部楼层 |阅读模式
本帖最后由 kite 于 2024-5-24 08:59 编辑

说明:电路中BZ接P36引脚--INT2外部中断;
J1是一个传感器,会产生高低电平的信号;
代码思路是开启中断,进入睡眠,当产生电平信号变化就会触发INT2中断进行唤醒;
现在测得的现象是无法唤醒,通过串口打印也显示未触发INT2中断;

但是我用示波器测图中接出线的地方是有电平变化的。
求解决。

主函数里的while循环

主函数里的while循环

串口助手打印

串口助手打印

电路

电路


你这个 5.6M电阻到地是啥意思

一、更换了电路;
二、复制代码时中断部分出错;




按键扫描 - 休眠唤醒-stc8h1k24.zip

41.03 KB, 下载次数: 60

随心
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-5-20 10:00:20 | 显示全部楼层
截图202405200959469017.jpg


你那个 5.6M电阻到地是啥意思
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:345
  • 最近打卡:2025-04-30 08:41:54

4

主题

32

回帖

1496

积分

金牌会员

积分
1496
发表于 2024-5-20 10:11:42 | 显示全部楼层
本帖最后由 kite 于 2024-5-20 10:15 编辑
神*** 发表于 2024-5-20 10:00
你那个 5.6M电阻到地是啥意思

以前用过另外一个型号的芯片用您说的这个电路不行,然后才改为这样的。
随心
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-5-20 10:24:36 | 显示全部楼层
电路简化
【I/O 高阻输入,外部 10K 上拉】,接信号输入

用下面程序测试

截图202405201024072202.jpg


#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;
    }
}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-5-20 10:29:15 | 显示全部楼层

STC8H1K16-36I-LQFP32,TSSOP28, TSSOP20, 只有下降沿中断
截图202405201028137249.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-5-20 10:29:54 | 显示全部楼层
能否提供一个可以正常测试的代码?附件提供的项目根本编译不过。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-5-20 10:30:37 | 显示全部楼层
截图202405201030337507.jpg



STC8H2K32U-45I-LQFP32, TSSOP28, TSSOP20, 所有I/O都支持外部中断
截图202405201032042943.jpg

截图202405201033535111.jpg

截图202405201034436482.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:345
  • 最近打卡:2025-04-30 08:41:54

4

主题

32

回帖

1496

积分

金牌会员

积分
1496
发表于 2024-5-20 10:40:04 | 显示全部楼层
乘风*** 发表于 2024-5-20 10:29
能否提供一个可以正常测试的代码?附件提供的项目根本编译不过。

这个,谢谢

按键扫描 - 休眠唤醒-stc8h1k24.zip

45.95 KB, 下载次数: 60

随心
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:345
  • 最近打卡:2025-04-30 08:41:54

4

主题

32

回帖

1496

积分

金牌会员

积分
1496
发表于 2024-5-20 10:44:35 | 显示全部楼层
神*** 发表于 2024-5-20 10:30
STC8H2K32U-45I-LQFP32, TSSOP28, TSSOP20, 所有I/O都支持外部中断

我用的是8h1k28那个系列
随心
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-5-20 10:49:09 | 显示全部楼层
你是用这个项目进行测试的吗?还是编译通不过。
像这些函数、参数(ENABLE、DISABLE)在项目里面都找不到。
截图202405201048134789.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 00:45 , Processed in 0.199764 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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