久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4017|回復(fù): 10
收起左側(cè)

STC15單片機(jī)掉電模式請(qǐng)教

[復(fù)制鏈接]
ID:28752 發(fā)表于 2021-10-21 16:42 | 顯示全部樓層 |閱讀模式
想用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è)參考...
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 INT0喚醒掉電模式舉例--------------------------*/
  4. /*---------------------------------------------------------------------*/
  5. //本示例在Keil開發(fā)環(huán)境下請(qǐng)選擇Intel的8058芯片型號(hào)進(jìn)行編譯
  6. //假定測(cè)試芯片的工作頻率為18.432MHz


  7. #include "reg51.h"

  8. #include "intrins.h"

  9. bit FLAG;                       //1:上升沿中斷 0:下降沿中斷

  10. sbit P10 = P1^0;
  11. //中斷服務(wù)程序
  12. void exint0() interrupt 0       //INT0中斷入口
  13. {
  14.     P10 = !P10;                 //將測(cè)試口取反
  15.     FLAG = INT0;                //保存INT0口的狀態(tài), INT0=0(下降沿); INT0=1(上升沿)
  16. }
  17. //-----------------------------------------------
  18. void main()
  19. {
  20.     IT0 = 0;                    //設(shè)置INT0的中斷類型為上升沿和下降沿,上升沿和下降沿均可喚醒
  21. //  IT0 = 1;                    //設(shè)置INT0的中斷類型為僅下降沿,下降沿喚醒

  22.     EX0 = 1;                    //使能INT0中斷
  23.     EA = 1;
  24.     while (1)
  25.     {
  26.         PCON = 0x02;            //MCU進(jìn)入掉電模式
  27.         _nop_();                //掉電模式被喚醒后,首先執(zhí)行此語句,然后再進(jìn)入中斷服務(wù)程序
  28.         _nop_();
  29.     }
  30. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-10-21 19:53 | 顯示全部樓層
去年正好做過一個(gè)小東西,正好也是外部中斷喚醒,外部中斷執(zhí)行,你可以參考一下,代碼只有幾行。

電子門鈴STC15W100.rar (1.12 MB, 下載次數(shù): 68)


回復(fù)

使用道具 舉報(bào)

ID:28752 發(fā)表于 2021-10-21 20:44 | 顯示全部樓層
188610329 發(fā)表于 2021-10-21 19:53
去年正好做過一個(gè)小東西,正好也是外部中斷喚醒,外部中斷執(zhí)行,你可以參考一下,代碼只有幾行。

謝謝,我下下來研究下能不能看明白...
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-10-21 21:50 | 顯示全部樓層
//適合STC15W系列
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
//-----------------------------------------------
sbit key  = P3^2;

sbit LED1  = P1^0;

uchar i;

void delayms(uint k)//1T
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=829;j>0;j--);
}

void main()
{
        IT0 = 1;//設(shè)置INT0的中斷類型為下降沿喚醒
        EX0 = 1;//使能INT0中斷
        EA  = 1;//開總中斷                                                        
        while (1)
        {
                if(i==0)
                {
                        while(!key)       
                        {
                                LED1=~LED1;
                                delayms(100);
                        }
                }
                if(i==1)
                {
                        while(!key)       
                        {
                                LED1=~LED1;
                                delayms(400);
                        }
                }
                if(i==2)
                {
                        while(!key)       
                        {
                                LED1=~LED1;
                                delayms(1600);
                        }
                }
                LED1=1;
                PCON = 0x02;//MCU進(jìn)入掉電模式
                _nop_();    //掉電模式被喚醒后,首先執(zhí)行此語句,然后再進(jìn)入中斷服務(wù)程序
                _nop_();    //中斷服務(wù)程序執(zhí)行完再接著此句繼續(xù)執(zhí)行
        }
}

//-----------------------------------------
//中斷服務(wù)程序
void exint0() interrupt 0       //INT0中斷入口
{
        i=++i%3;
}
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2021-10-21 22:57 | 顯示全部樓層
思路:
1,P3.2按鍵喚醒或者關(guān)機(jī),可以是雙擊或者長(zhǎng)按,單擊功能切換
2,每按下就進(jìn)入中斷,在中斷中處理,先檢測(cè)是不是掉電模式,或者是要不要喚醒
主程序給你參考一下
void main(void)
{
        Mcu_Rst();          //單片機(jī)復(fù)位
        Mcu_Awaken(); //單片機(jī)喚醒操作
        Stc8g_Adc_int();//stc8gadc初始化
        Tap6130_Start();  //耳放啟動(dòng)
//———————————————————————————————————————————————————————————————————          
        while(1)
        {                         
         if((USB==1)||(ON==1)) Battry_Voltage_Disp(ADC_VCC);        //電池電壓處理
         if((USB==0)&&(ON==1))        Key_Disp();                                         //按鍵處理                 
         if((TWO_PRE==1)||(LONG_PRE==1))
                {                                       
                        ON=!ON;                                                                                //長(zhǎng)按/雙擊有效
                        TWO_PRE=0;
                        LONG_PRE=0;
                        Mcu_Up=0;                                                                                //清除按鍵喚醒標(biāo)志位
                        if(ON==1)                                                                          
                          {                                                       
                                        Delay_ms(300);                                                                //延時(shí)一定時(shí)間開機(jī),沒有為什么,就是達(dá)到某個(gè)效果而已,可有可無
                                        Tap6130_Start();                                                         //如果是按鍵開機(jī),就啟動(dòng)耳放和藍(lán)牙
                                        Stc8g_Adc_int();                                                        //stc8gadc初始化                        
                                }                               
                }
                else if(ONE_PRE==1)
                                {
                                   ONE_PRE=0;                                                                  //單擊有效
                                   Mcu_Up=0;
                                   if(ON==1)Play();                                                                         //播放/暫停/接聽/掛斷                                  
                                }                          
                        else if((USB==0)&&(ON==0)&&(Mcu_Up==0))                //UBS在插著,就不關(guān)機(jī)
                                        {                               
                                                Delay_ms(300);                                                                //延時(shí)0.3秒關(guān)機(jī)
                                                Mcu_Sleep();                                                                //單片機(jī)進(jìn)入掉電模式
                                                PCON=0x02;                                                                        //進(jìn)入掉電模式
                                                _nop_();                               
                                                _nop_();
                                                _nop_();
                                                _nop_();
                                                _nop_();
                                                Mcu_Awaken();                                                                  //單片機(jī)喚醒
                                                if(USB==1)Stc8g_Adc_int();                                        //如果USB高電平,就表示是USB播放,stc8gadc初始化               
                                        }                                                               
        }                          
//———————————————————————————————————————————————————                               
}
回復(fù)

使用道具 舉報(bào)

ID:956872 發(fā)表于 2021-10-22 00:40 來自手機(jī) | 顯示全部樓層
喚醒時(shí)首先關(guān)閉中斷,按鍵就成普通按鍵了。進(jìn)入掉電模式前打開外部中斷,按鍵就能喚醒單片機(jī)了
回復(fù)

使用道具 舉報(bào)

ID:28752 發(fā)表于 2021-10-22 11:07 | 顯示全部樓層
wulin 發(fā)表于 2021-10-21 21:50
//適合STC15W系列
#include "reg51.h"
#include "intrins.h"

感謝回復(fù),我試了下,這代碼必須保持P3.2一直低才能完成功能...,不過也有啟發(fā)了...
回復(fù)

使用道具 舉報(bào)

ID:28752 發(fā)表于 2021-10-22 11:08 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-10-21 22:57
思路:
1,P3.2按鍵喚醒或者關(guān)機(jī),可以是雙擊或者長(zhǎng)按,單擊功能切換
2,每按下就進(jìn)入中斷,在中斷中處理,先檢 ...

感謝回復(fù),我仔細(xì)研究研究...
回復(fù)

使用道具 舉報(bào)

ID:28752 發(fā)表于 2021-10-22 11:08 | 顯示全部樓層
PEB188 發(fā)表于 2021-10-22 00:40
喚醒時(shí)首先關(guān)閉中斷,按鍵就成普通按鍵了。進(jìn)入掉電模式前打開外部中斷,按鍵就能喚醒單片機(jī)了

多謝回復(fù),我試著改改看看...
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-10-22 21:10 | 顯示全部樓層
grb7906 發(fā)表于 2021-10-22 11:07
感謝回復(fù),我試了下,這代碼必須保持P3.2一直低才能完成功能...,不過也有啟發(fā)了...

把死循環(huán)while(!key)改for循環(huán)即可解決松手問題。

評(píng)分

參與人數(shù) 1黑幣 +10 收起 理由
ax6808 + 10

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:28752 發(fā)表于 2021-10-22 21:54 | 顯示全部樓層
wulin 發(fā)表于 2021-10-22 21:10
把死循環(huán)while(!key)改for循環(huán)即可解決松手問題。

麻煩有時(shí)間的話,能不能給一組循環(huán)的代碼,我進(jìn)死胡同了...,初學(xué)階段...
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色视频一区二区 | 中文字幕人成乱码在线观看 | 国产精品久久久久久久久久三级 | www国产成人免费观看视频,深夜成人网 | 色综合久久久 | 亚洲精品国产a久久久久久 午夜影院网站 | 免费看a| 影音先锋成人资源 | 精品国产一区二区三区性色 | 亚洲精品久久久久久久不卡四虎 | 精品国产欧美一区二区 | 午夜免费电影院 | 欧美日韩一区二区三区四区 | 99久久精品免费看国产四区 | 国产成人免费视频网站高清观看视频 | 国产成人啪免费观看软件 | 精品国产乱码久久久久久中文 | 国产欧美精品一区二区 | 欧美日韩在线不卡 | 久久人人网 | 国产91久久久久久 | 欧美99久久精品乱码影视 | 国产午夜精品久久久 | 国产精品国产三级国产aⅴ无密码 | 精品一区二区三区视频在线观看 | 午夜电影网站 | 99精品在线 | 国产高清精品一区二区三区 | 伊人网综合在线 | 国产男女视频网站 | 欧美精品久久久久 | 成人毛片视频免费 | 亚洲成年影院 | 91精品导航 | 欧美高清hd| 欧美一级欧美三级在线观看 | 精品av天堂毛片久久久借种 | 99久久精品免费看国产小宝寻花 | 国产资源网 | 国产精品久久久久一区二区三区 | 久久日韩精品一区二区三区 |