HyunYong_7782 发表于 2025-10-30 10:58:22

对于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在程序中是必要的吗?


DebugLab 发表于 2025-10-30 11:41:42

执行PCON = 0x02时进入PD状态
唤醒后程序继续运行
建议PD模式前后各加4个nop

HyunYong_7782 发表于 2025-10-30 11:46:31

DebugLab 发表于 2025-10-30 11:41
执行PCON = 0x02时进入PD状态
唤醒后程序继续运行
建议PD模式前后各加4个nop

IRCDB = 0x10;
这句需要在初始化的时候加吗?
规格书上我看有写

但是案例上是没有的

DebugLab 发表于 2025-10-30 11:52:37

HyunYong_7782 发表于 2025-10-30 11:46
IRCDB = 0x10;
这句需要在初始化的时候加吗?
规格书上我看有写

建议加,提高稳定性,还有IAP_TPS也要正确设置

HyunYong_7782 发表于 2025-10-30 12:02:15

是这个IAPTPS吗?
刚刚试了以下没加初始化那个 已经可以正常进入掉电模式和外部中断唤醒了
我现在把这个加进去

HyunYong_7782 发表于 2025-10-30 12:02:47

DebugLab 发表于 2025-10-30 11:52
建议加,提高稳定性,还有IAP_TPS也要正确设置

这个是和前面提高稳定性那个初始化一起设置的吗?

DebugLab 发表于 2025-10-30 13:33:58

HyunYong_7782 发表于 2025-10-30 12:02
这个是和前面提高稳定性那个初始化一起设置的吗?

HyunYong_7782 发表于 2025-10-30 16:22:57

DebugLab 发表于 2025-10-30 13:33


触摸按键唤醒的话
是不是和外部中断一样

检测到触摸/中断就唤醒 具体触摸后执行什么功能 中断执行什么功能是不会干扰到的

触摸唤醒的话,例如我按着触摸按键上电会打乱触摸值吗? 是否有必须是在设备上电前触摸按键是不能按着的

DebugLab 发表于 2025-10-30 20:59:09

HyunYong_7782 发表于 2025-10-30 16:22
触摸按键唤醒的话
是不是和外部中断一样




不一样,外部中断是中断唤醒,触摸按键是周期唤醒
唤醒后和中断的功能是否会有影响,取决于是否会进入中断
是否可以按着触摸按键上电,取决于用户程序,如有上电时读取触摸按键作为零点初始值,就会影响




HyunYong_7782 发表于 4 天前

DebugLab 发表于 2025-10-30 20:59
不一样,外部中断是中断唤醒,触摸按键是周期唤醒
唤醒后和中断的功能是否会有影响,取决于是否会进入中 ...

理解了 一个是进入中断就会唤醒
一个是用户自己写的程序

根本上的区别已经不一样了
页: [1]
查看完整版本: 对于AI8H1K08的掉电模式疑问