找回密码
 立即注册
查看: 1281|回复: 7

STC8H4K64的IO中断不能唤醒

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-08 15:04:41

14

主题

35

回帖

236

积分

中级会员

积分
236
发表于 2024-3-23 15:09:19 | 显示全部楼层 |阅读模式
有没有老师指导下,用IO做中断唤醒不成功,项目中用P3.2=KEY1,P1.6=DC-IN,两个IO做唤醒,其中KEY1为按键,低电平有效,DC_IN为充电输入检测,高电平有效,中断唤醒配置到主程序初始化或者睡眠子程序里面中都试过,P3.2可以唤醒,但是P1.6不行,不知道问题出在哪里,代码如下:

;休眠子程序



SLEEP:

                DJNZ    SleepDelay, SLEEP_END ;10秒未到, 循环显示秒计数
                MOV     SleepDelay, #0FFH

                JNB     KEY1, SLEEP_END     ;高电平时才进入睡眠
                JB DC_IN ,SLEEP_END   ;DC_IN低电平才进入睡眠
                LCALL   DELAY10MS  
                JNB     KEY1, SLEEP_END     ;高电平时才进入睡眠
                JB DC_IN ,SLEEP_END   ;DC_IN低电平才进入睡眠
                MOV POWER_DATA,#0H
                CLR TR0    ;


                MOV A,#40H ;P1.6上升沿中断
                MOV DPTR,#P1IM0
                MOVX @DPTR,A;
                MOV A,#00H  ;
                    MOV DPTR,#P1IM1
                MOVX @DPTR,A; P1.6上升沿中断

                MOV A,#40H    ;P1.6允许中断唤醒
                MOV DPTR,#P1WKUE
                MOVX @DPTR,A;

                MOV A,#40H;使能P1.6中断       
                MOV DPTR,#P1INTE
                MOVX @DPTR,A ;

                SETB    EX0     ;INT0 Enable
                SETB    IT0     ;INT0 下降沿中断        

                MOV     PCON, #02H     ;Sleep
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
               
L_cnt1000_NotZero:
                LJMP    Loop  ;唤醒后,进入主程序
SLEEP_END:


              RET

;P1中断子程序,在中断中关闭中断,和标志清零
P1INT_Interrupt: ;DC_IN输入中断

                PUSH PSW
                PUSH ACC
                PUSH DPL
                PUSH DPH
               
               
                MOV A,#00H;关闭能P1.6中断       
                MOV DPTR,#P1INTE
                MOVX @DPTR,A ;
               
                MOV A,#0H  ;中断标志位清零
                MOV DPTR,#P1INTF
                MOVX @DPTR,A
               
                POP DPH
                POP DPL
                POP ACC
                POP PSW
                RETI


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-08-11 19:25:56

5

主题

297

回帖

2385

积分

金牌会员

积分
2385
发表于 2024-3-23 16:14:14 | 显示全部楼层
现在用汇编的越来越少了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:511
  • 最近打卡:2025-08-11 00:11:18
已绑定手机

39

主题

2385

回帖

3161

积分

荣誉版主

积分
3161
发表于 2024-3-23 16:58:06 | 显示全部楼层
你试试把边沿中断改为电平中断看能不能唤醒,疑似手册中提到的IO中断瑕疵问题,请仔细查看一下手册的内容。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-08 15:04:41

14

主题

35

回帖

236

积分

中级会员

积分
236
发表于 2024-3-23 17:03:45 | 显示全部楼层
晓*** 发表于 2024-3-23 16:58
你试试把边沿中断改为电平中断看能不能唤醒,疑似手册中提到的IO中断瑕疵问题,请仔细查看一下手册的内容。 ...

试过了,改为高电平唤醒也不行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-08-11 10:43:47

0

主题

170

回帖

1557

积分

金牌会员

积分
1557
发表于 2024-3-23 20:14:19 | 显示全部楼层
汇编代码不太懂,数据手册第686页有例子,stc-isp软件里面也 int.png 与例程。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-08 15:04:41

14

主题

35

回帖

236

积分

中级会员

积分
236
发表于 2024-3-23 22:35:22 | 显示全部楼层
yja*** 发表于 2024-3-23 20:14
汇编代码不太懂,数据手册第686页有例子,stc-isp软件里面也与例程。

这些是本身就是带中断唤醒功能的管脚,是可以的,比如P3.2就是可以唤醒的,我现在是用的普通IO口,P1.6,要求高电平或者上升沿唤醒,实现不了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-08 15:04:41

14

主题

35

回帖

236

积分

中级会员

积分
236
发表于 2024-3-25 16:54:25 | 显示全部楼层
没有哪位老师帮忙看看吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2025-08-11 08:59:14
已绑定手机

44

主题

2157

回帖

7501

积分

论坛元老

积分
7501
发表于 2024-3-25 18:19:36 | 显示全部楼层
普通IO口中断,P16唤醒休眠模式汇编例程,有需要的可参考附件:

IO口中断唤醒-汇编.zip

10.54 KB, 下载次数: 104

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-12 01:04 , Processed in 0.134921 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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