想用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_();
- }
- }
復制代碼 |