- // 头文件
- #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在程序中是必要的吗?
|