对于AI8H1K08的掉电模式疑问
// 头文件#include "STC8Hxxx.h"
// 引脚定义
// 宏定义
// 声明
// 数组
// 函数
// 变量
// 主函数
void main(void)
{
P_SW2 |= 0x80; // 允许XFR访问
// 引脚初始化
P3M0 = 0x00; P3M1 = 0xff; // P30~37 高阻输入
P3IE = 0x00; // 关闭数字输入
P5M0 &= ~0x10; P5M1 |= 0x10; // P54 高阻输入
P5IE &= ~0x10; // 关闭数字输入
P1M0 = (P1M0 & ~0xc0) | 0x03; P1M1 = (P1M1 & ~0x03) | 0xc0; // P10 11 推挽输出 P16 17 高阻输入
P1IE &= ~0xc0; // 关闭数字输入
IT0 = 0; //使能INT0上升沿和下降沿中断
EX0 = 1; //使能INT0中断
EA = 1;
PCON = 0x02; //MCU进入掉电模式
_nop_(); //掉电模式被唤醒后,MCU首先会执行此语句
//然后再进入中断服务程序
_nop_();
_nop_();
_nop_();
while(1)
{
P11 = ~P11; // 正常工作
}
}
// 中断服务函数
void INT0_Isr() interrupt 0
{
P10 = !P10; //测试端口
}我根据案例和省电模式的帖子 写了这个程序
有几个疑问,我没有看到在哪里有写
1. 当执行到MCU进入掉电模式语句的时候晶振停止 是不是就会卡在这个位置然后等外部中断翻转电平唤醒以后 执行完nop开始进入循环体正常工作
2. 那我是不是可以把这个封装成一个模式 当设备空闲30s以后 调用这个模式 然后重置设备状态mode = 0 当我用外部中断唤醒的时候再mode = 1 开始待机 可以这样子做吗?
3. nop在程序中是必要的吗?
执行PCON = 0x02时进入PD状态
唤醒后程序继续运行
建议PD模式前后各加4个nop DebugLab 发表于 2025-10-30 11:41
执行PCON = 0x02时进入PD状态
唤醒后程序继续运行
建议PD模式前后各加4个nop
IRCDB = 0x10;
这句需要在初始化的时候加吗?
规格书上我看有写
但是案例上是没有的 HyunYong_7782 发表于 2025-10-30 11:46
IRCDB = 0x10;
这句需要在初始化的时候加吗?
规格书上我看有写
建议加,提高稳定性,还有IAP_TPS也要正确设置 是这个IAPTPS吗?
刚刚试了以下没加初始化那个 已经可以正常进入掉电模式和外部中断唤醒了
我现在把这个加进去 DebugLab 发表于 2025-10-30 11:52
建议加,提高稳定性,还有IAP_TPS也要正确设置
这个是和前面提高稳定性那个初始化一起设置的吗? HyunYong_7782 发表于 2025-10-30 12:02
这个是和前面提高稳定性那个初始化一起设置的吗?
是 DebugLab 发表于 2025-10-30 13:33
是
触摸按键唤醒的话
是不是和外部中断一样
检测到触摸/中断就唤醒 具体触摸后执行什么功能 中断执行什么功能是不会干扰到的
触摸唤醒的话,例如我按着触摸按键上电会打乱触摸值吗? 是否有必须是在设备上电前触摸按键是不能按着的 HyunYong_7782 发表于 2025-10-30 16:22
触摸按键唤醒的话
是不是和外部中断一样
不一样,外部中断是中断唤醒,触摸按键是周期唤醒
唤醒后和中断的功能是否会有影响,取决于是否会进入中断
是否可以按着触摸按键上电,取决于用户程序,如有上电时读取触摸按键作为零点初始值,就会影响
DebugLab 发表于 2025-10-30 20:59
不一样,外部中断是中断唤醒,触摸按键是周期唤醒
唤醒后和中断的功能是否会有影响,取决于是否会进入中 ...
理解了 一个是进入中断就会唤醒
一个是用户自己写的程序
根本上的区别已经不一样了
页:
[1]