我给你来个程序试试
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC15F100 系列 INT0唤醒掉电模式举例--------------------------*/
- /* --- Mobile: (86)13 922 805190 -------------- -------------------------*/
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
- //本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
- //若无特别说明,工作频率一般为11.0592MHz
- #include "reg51.h"
- #include "intrins.h"
- //-----------------------------------------------
- sfr P3M1 = 0xb1;
- sfr P3M0 = 0xb2;
- bit FLAG; //1:上升沿中断 0:下降沿中断
- sbit P33 = P3^3;
- //-----------------------------------------
- //中断服务程序
- void exint0() interrupt 0 //INT0中断入口 P3.2
- {
- P33 = !P33; //将测试口取反
- FLAG = INT0; //保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
- }
- //-----------------------------------------------
- void main()
- {
- P3M0 = 0x00;
- P3M1 = 0x00;
- IT0 = 0; //设置INT0的中断类型为上升沿和下降沿,上升沿和下降沿均可唤醒
- // IT0 = 1; //设置INT0的中断类型为仅下降沿,下降沿唤醒
- EX0 = 1; //使能INT0中断
- EA = 1;
- while (1)
- {
- PCON = 0x02; //MCU进入掉电模式
- _nop_(); //掉电模式被唤醒后,首先执行此语句,然后再进入中断服务程序
- _nop_();
- }
- }
复制代码 |