找回密码
 立即注册
查看: 718|回复: 1

STC8A8K64D4掉电模式实测及问题反馈

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-10-31 08:51:49

5

主题

16

回帖

135

积分

注册会员

积分
135
发表于 2024-7-23 11:37:20 | 显示全部楼层 |阅读模式
本帖最后由 whoyzf 于 2024-7-23 17:05 编辑

stc8a掉电模式测试,实测功耗1uA左右。代码如下



问题这个芯片的IO口不能代换。
具体如下:
5V供电,我用P04,P05高阻且置1(或者准双向口置1)实测电压只有3V左右,LED点亮;
而用P32,P33,高阻且置1,有5V,led熄灭。

解决办法:我只能飞线了。。。
  1. #include "STC8A8K64D4.h"
  2. #include "intrins.h"
  3. sfr     VOCTRL      =   0xbb;
  4. #define IDL             0x01                    //PCON.0
  5. #define PD              0x02                    //PCON.1
  6. //sbit    P34         =   P3^4;
  7. //sbit    P35         =   P3^5;
  8. void main()
  9. {
  10.     P0M0 = 0x00; P0M1 = 0xff;         
  11.     P1M0 = 0x00; P1M1 = 0xFF;
  12.     P2M0 = 0x00; P2M1 = 0xff;
  13.     P3M0 = 0x00; P3M1 = 0xff;
  14.     P3M0 = 0x00; P3M1 = 0xf3;
  15.     P4M0 = 0x00; P4M1 = 0xff;
  16.                 P5M0 = 0x00; P5M1 = 0xff;
  17. //        P_SW2 |= 0x80;   //允许操作扩展寄存器
  18. //    P1PU = 0xFF;
  19. //          P1DR = 0x00;
  20.         
  21.     P0=0x00;
  22.           P1=0x00;  
  23.           P2=0x00;
  24.                 P22=1;   //MOS管关闭
  25.           P27=1;
  26.           P3=0x00;
  27.           P4=0x00;
  28.           P5=0x00;        
  29.         P43=1;
  30.         P32=1;P33=1;   //led灭灯
  31.    P_SW2 |= 0x80;   //允许操作扩展寄存器
  32.     P0IE = 0x00;
  33.           P1IE = 0x00;
  34.           P2IE = 0x00;
  35.           P3IE = 0x00;
  36.           P4IE = 0x00;
  37.           P5IE = 0x00;
  38.     _nop_();
  39.     _nop_();
  40.                
  41. //    PCON = IDL;                                 //MCU进入IDLE模式
  42.     PCON = PD;                                  //MCU进入掉电模式
  43.     _nop_();
  44.     _nop_();
  45.                 _nop_();
  46.    _nop_();
  47.    _nop_();                                
  48.     while (1);
  49. }
复制代码
如果使用外部中断唤醒,数字输出要开启,否则直接进入中断。
    INTCLKO = EX3|EX2;      
   P_SW2 |= 0x80;   //允许操作扩展寄存器

          P3IE = 0xC0; //

EA=1;
  1. #include "STC8A8K64D4.h"
  2. #include "intrins.h"
  3. sfr     VOCTRL      =   0xbb;
  4. #define IDL             0x01                    //PCON.0
  5. #define PD              0x02                    //PCON.1
  6. #define EX2             0x10
  7. #define EX3             0x20
  8. #define EX4             0x40
  9. //sbit    P34         =   P3^4;
  10. //sbit    P35         =   P3^5;
  11. void INT0_Isr() interrupt 0
  12. {
  13.     P32 = ~P32;                                 //测试端口
  14. }
  15. void INT2_Isr() interrupt 10
  16. {
  17.     P32 = ~P32;                                 //测试端口
  18.           P22 = ~P22;
  19. }
  20. void INT3_Isr() interrupt 11
  21. {
  22.     P33 = ~P33;                                 //测试端口
  23.                 P27 = ~P27;
  24. }
  25. void main()
  26. {
  27.     VOCTRL = 0x00;                              //掉电模式时使用内部SCC模块,功耗约1.5uA
  28. //  VOCTRL = 0x80;                              //掉电模式时使用外部SCC模块,功耗约0.15uA
  29. //    EX0 = 1;                                    //使能INT0中断,用于唤醒MCU
  30.     INTCLKO = EX3|EX2;                              //使能INT3中断
  31.         
  32.         
  33.     P0M0 = 0x00; P0M1 = 0xff;         
  34.     P1M0 = 0x00; P1M1 = 0xFF;
  35.     P2M0 = 0x00; P2M1 = 0xff;
  36.     P3M0 = 0x00; P3M1 = 0xff;
  37. //    P3M0 = 0x00; P3M1 = 0xf3;
  38.     P4M0 = 0x00; P4M1 = 0xff;
  39.                 P5M0 = 0x00; P5M1 = 0xff;
  40.         
  41.     P0=0x00;
  42.           P1=0x00;  
  43.           P2=0x00;
  44.           P3=0x00;
  45.           P4=0x00;
  46.           P5=0x00;        
  47.         
  48.    P_SW2 |= 0x80;   //允许操作扩展寄存器
  49.     P0IE = 0x00;
  50.           P1IE = 0x00;
  51.           P2IE = 0x00;
  52.           P3IE = 0xC0; //INT0管脚,不能关闭数字输入
  53.           P4IE = 0x00;
  54.           P5IE = 0x00;
  55.         
  56.    EA=1;
  57.          
  58.     _nop_();
  59.     _nop_();
  60.                
  61. //    PCON = IDL;                                 //MCU进入IDLE模式
  62.     PCON = PD;                                  //MCU进入掉电模式
  63.                  P3M0 = 0x00; P3M1 = 0xf3;        //P32,P33准双向口。临时打开可以
  64.      P2M0 = 0x00; P2M1 = 0x7b;        //P22,P27准双向口
  65.     _nop_();
  66.     _nop_();
  67.                 _nop_();
  68.     _nop_();
  69.     _nop_();                                
  70.         
  71.     while (1);
  72. }
复制代码




回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-7-23 14:26:15 | 显示全部楼层
既然高阻了,和置0置1就没有关系了,电压由外部电路决定
DebugLab
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 16:11 , Processed in 0.144822 second(s), 51 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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