我給你來個程序試試
- /*---------------------------------------------------------------------*/
- /* --- 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_();
- }
- }
復制代碼 |