想用stc15单片机做一个类似手电控制程序,单按键,循环显示不同闪烁频率,功能是实现了,但是因要用电池供电,工作电流7mA太大了,查了下stc只有掉电模式下才省电,下面代码,有以下疑问想咨询下各位大神,麻烦各位有时间时不吝赐教,谢谢!!!1,我的想法是外部中断口INT0/P3.2上接个开关到地,既做外部中断唤醒,又做按键计数,以实现按键循环功能,这样能行吗?
2,如果上面1条能行,我的按键扫描和功能执行程序要放在哪,int0的中断入口出么?即主程序直接进入掉电模式循环,中断唤醒后,执行所有按键循环1--2--3--跳出.??
3,有类似程序的能不能给我个参考...
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC15F4K60S4 系列 INT0唤醒掉电模式举例--------------------------*/
- /*---------------------------------------------------------------------*/
- //本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
- //假定测试芯片的工作频率为18.432MHz
-
- #include "reg51.h"
- #include "intrins.h"
- bit FLAG; //1:上升沿中断 0:下降沿中断
- sbit P10 = P1^0;
- //中断服务程序
- void exint0() interrupt 0 //INT0中断入口
- {
- P10 = !P10; //将测试口取反
- FLAG = INT0; //保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
- }
- //-----------------------------------------------
- void main()
- {
- IT0 = 0; //设置INT0的中断类型为上升沿和下降沿,上升沿和下降沿均可唤醒
- // IT0 = 1; //设置INT0的中断类型为仅下降沿,下降沿唤醒
- EX0 = 1; //使能INT0中断
- EA = 1;
- while (1)
- {
- PCON = 0x02; //MCU进入掉电模式
- _nop_(); //掉电模式被唤醒后,首先执行此语句,然后再进入中断服务程序
- _nop_();
- }
- }
复制代码 |