|
想用stc15單片機(jī)做一個(gè)類似手電控制程序,單按鍵,循環(huán)顯示不同閃爍頻率,功能是實(shí)現(xiàn)了,但是因要用電池供電,工作電流7mA太大了,查了下stc只有掉電模式下才省電,下面代碼,有以下疑問想咨詢下各位大神,麻煩各位有時(shí)間時(shí)不吝賜教,謝謝!!!1,我的想法是外部中斷口INT0/P3.2上接個(gè)開關(guān)到地,既做外部中斷喚醒,又做按鍵計(jì)數(shù),以實(shí)現(xiàn)按鍵循環(huán)功能,這樣能行嗎?
2,如果上面1條能行,我的按鍵掃描和功能執(zhí)行程序要放在哪,int0的中斷入口出么?即主程序直接進(jìn)入掉電模式循環(huán),中斷喚醒后,執(zhí)行所有按鍵循環(huán)1--2--3--跳出.??
3,有類似程序的能不能給我個(gè)參考...
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC15F4K60S4 系列 INT0喚醒掉電模式舉例--------------------------*/
- /*---------------------------------------------------------------------*/
- //本示例在Keil開發(fā)環(huán)境下請(qǐng)選擇Intel的8058芯片型號(hào)進(jìn)行編譯
- //假定測(cè)試芯片的工作頻率為18.432MHz
-
- #include "reg51.h"
- #include "intrins.h"
- bit FLAG; //1:上升沿中斷 0:下降沿中斷
- sbit P10 = P1^0;
- //中斷服務(wù)程序
- void exint0() interrupt 0 //INT0中斷入口
- {
- P10 = !P10; //將測(cè)試口取反
- FLAG = INT0; //保存INT0口的狀態(tài), INT0=0(下降沿); INT0=1(上升沿)
- }
- //-----------------------------------------------
- void main()
- {
- IT0 = 0; //設(shè)置INT0的中斷類型為上升沿和下降沿,上升沿和下降沿均可喚醒
- // IT0 = 1; //設(shè)置INT0的中斷類型為僅下降沿,下降沿喚醒
- EX0 = 1; //使能INT0中斷
- EA = 1;
- while (1)
- {
- PCON = 0x02; //MCU進(jìn)入掉電模式
- _nop_(); //掉電模式被喚醒后,首先執(zhí)行此語句,然后再進(jìn)入中斷服務(wù)程序
- _nop_();
- }
- }
復(fù)制代碼 |
|