完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
掉电模式
STC8H1K08 进入时钟掉电模式,CPU 以及全部外设均停止工作。 Keil 工程结构 原理图
使用外部中断 3 唤醒处于掉电模式的单片机 main.c 文件: 逻辑:按下按键 K1,熄灭发光二极管,然后使单片机进入掉电模式。按下按键 K2 触发外部中断,使单片机退出掉电模式,在中断处理方法中点亮发光二极管。 sfr PCON = 0x87; sfr INTCLKO = 0x8F; sfr P1 = 0x90; /* Port 1 Register */ sfr P1M1 = 0x91; /* Port 1 Configuration Register 1 */ sfr P1M0 = 0x92; /* Port 1 Configuration Register 0 */ sfr IE = 0xA8; sfr P3M1 = 0xB1; /* Port 3 Configuration Register 1 */ sfr P3M0 = 0xB2; /* Port 3 Configuration Register 0 */ sfr AUXINTIF = 0xEF; /** PCON Register Bits Definition */ #define PCON_PD (0x02) #define PCON_IDL (0x01) /** INTCLKO Register Bit Definition */ #define INT3_INTCLKO_EX3 (0x20) /** P1M1 Register Bits Definition */ #define P12M1 (0x04) /* P1.2 Mode Selection Bit 1 */ #define P16M1 (0x40) /* P1.6 Mode Selection Bit 1 */ /** P1M0 Register Bits Definition */ #define P12M0 (0x04) /* P1.2 Mode Selection Bit 0 */ #define P16M0 (0x40) /* P1.6 Mode Selection Bit 0 */ /** IE Register Bit Definition */ #define IE_EA (0x80) /** P3M1 Register Bit Definition */ #define P37M1 (0x80) /* P3.7 Mode Selection Bit 1 */ /** P3M0 Register Bit Definition */ #define P37M0 (0x80) /* P3.7 Mode Selection Bit 0 */ /** AUXINTIF Register Bit Definition */ #define INT3_AUXINTIF_INT3IF (0x20) #define setRegisterBit(r, b) r |= b #define clearRegisterBit(r, b) r &= ~b #define enableInterrupts() setRegisterBit(IE, IE_EA) #define disableInterrupts() clearRegisterBit(IE, IE_EA) ***it LED = P1^2; /* LED Control Bit. 0: On, 1: Off */ ***it KEY1 = P1^6; /* K1 */ /** * */ void main() { /** * External Interrupt 3 Initialization */ setRegisterBit(INTCLKO, INT3_INTCLKO_EX3); // 允许外部中断 3 请求中断 /** * IO Initialization */ // 将 LED 的控制引脚设置为推挽输出 clearRegisterBit(P1M1, P12M1); setRegisterBit(P1M0, P12M0); // 将 K1 所在的输入引脚设置为准双向口 clearRegisterBit(P1M1, P16M1); clearRegisterBit(P1M0, P16M0); // 将(K2)外部中断 3 所在的输入引脚设置为准双向口 clearRegisterBit(P3M1, P37M1); clearRegisterBit(P3M0, P37M0); enableInterrupts(); while(1) { if(!KEY1) { LED = 1; // LED Off setRegisterBit(PCON, PCON_PD); // 进入掉电模式 } } } void externalInterrupt3InterruptService() interrupt 11 { LED = 0; // LED On } STC-ISP 下载选项 测试
|
|
|
|
只有小组成员才能发言,加入小组>>
3260 浏览 9 评论
2940 浏览 16 评论
3442 浏览 1 评论
8943 浏览 16 评论
4035 浏览 18 评论
1073浏览 3评论
557浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
550浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2285浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 02:12 , Processed in 0.815059 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号