STC8A8K64D4掉电模式实测及问题反馈
本帖最后由 whoyzf 于 2024-7-23 17:05 编辑stc8a掉电模式测试,实测功耗1uA左右。代码如下
问题这个芯片的IO口不能代换。
具体如下:
5V供电,我用P04,P05高阻且置1(或者准双向口置1)实测电压只有3V左右,LED点亮;
而用P32,P33,高阻且置1,有5V,led熄灭。
解决办法:我只能飞线了。。。
#include "STC8A8K64D4.h"
#include "intrins.h"
sfr VOCTRL = 0xbb;
#define IDL 0x01 //PCON.0
#define PD 0x02 //PCON.1
//sbit P34 = P3^4;
//sbit P35 = P3^5;
void main()
{
P0M0 = 0x00; P0M1 = 0xff;
P1M0 = 0x00; P1M1 = 0xFF;
P2M0 = 0x00; P2M1 = 0xff;
P3M0 = 0x00; P3M1 = 0xff;
P3M0 = 0x00; P3M1 = 0xf3;
P4M0 = 0x00; P4M1 = 0xff;
P5M0 = 0x00; P5M1 = 0xff;
// P_SW2 |= 0x80; //允许操作扩展寄存器
// P1PU = 0xFF;
// P1DR = 0x00;
P0=0x00;
P1=0x00;
P2=0x00;
P22=1; //MOS管关闭
P27=1;
P3=0x00;
P4=0x00;
P5=0x00;
P43=1;
P32=1;P33=1; //led灭灯
P_SW2 |= 0x80; //允许操作扩展寄存器
P0IE = 0x00;
P1IE = 0x00;
P2IE = 0x00;
P3IE = 0x00;
P4IE = 0x00;
P5IE = 0x00;
_nop_();
_nop_();
// PCON = IDL; //MCU进入IDLE模式
PCON = PD; //MCU进入掉电模式
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while (1);
}
如果使用外部中断唤醒,数字输出要开启,否则直接进入中断。
INTCLKO = EX3|EX2;
P_SW2 |= 0x80; //允许操作扩展寄存器
P3IE = 0xC0; //
EA=1;
#include "STC8A8K64D4.h"
#include "intrins.h"
sfr VOCTRL = 0xbb;
#define IDL 0x01 //PCON.0
#define PD 0x02 //PCON.1
#define EX2 0x10
#define EX3 0x20
#define EX4 0x40
//sbit P34 = P3^4;
//sbit P35 = P3^5;
void INT0_Isr() interrupt 0
{
P32 = ~P32; //测试端口
}
void INT2_Isr() interrupt 10
{
P32 = ~P32; //测试端口
P22 = ~P22;
}
void INT3_Isr() interrupt 11
{
P33 = ~P33; //测试端口
P27 = ~P27;
}
void main()
{
VOCTRL = 0x00; //掉电模式时使用内部SCC模块,功耗约1.5uA
//VOCTRL = 0x80; //掉电模式时使用外部SCC模块,功耗约0.15uA
// EX0 = 1; //使能INT0中断,用于唤醒MCU
INTCLKO = EX3|EX2; //使能INT3中断
P0M0 = 0x00; P0M1 = 0xff;
P1M0 = 0x00; P1M1 = 0xFF;
P2M0 = 0x00; P2M1 = 0xff;
P3M0 = 0x00; P3M1 = 0xff;
// P3M0 = 0x00; P3M1 = 0xf3;
P4M0 = 0x00; P4M1 = 0xff;
P5M0 = 0x00; P5M1 = 0xff;
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
P4=0x00;
P5=0x00;
P_SW2 |= 0x80; //允许操作扩展寄存器
P0IE = 0x00;
P1IE = 0x00;
P2IE = 0x00;
P3IE = 0xC0; //INT0管脚,不能关闭数字输入
P4IE = 0x00;
P5IE = 0x00;
EA=1;
_nop_();
_nop_();
// PCON = IDL; //MCU进入IDLE模式
PCON = PD; //MCU进入掉电模式
P3M0 = 0x00; P3M1 = 0xf3; //P32,P33准双向口。临时打开可以
P2M0 = 0x00; P2M1 = 0x7b; //P22,P27准双向口
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while (1);
}
既然高阻了,和置0置1就没有关系了,电压由外部电路决定
页:
[1]