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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2288|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

單片機一個按鍵立馬控制呼吸燈亮滅,為什么中斷服務(wù)程序里面不能執(zhí)行掉電模式?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:863657 發(fā)表于 2022-10-20 09:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void main()
{
Timer0Init;
while(1)
        {
                PWM_huxi ();
  }
}

void T0 () interrupt 1
{
        TL0 = 0xCD;                //設(shè)置定時初值
        TH0 = 0xD4;                //設(shè)置定時初值
        num++;
        if(num==10)   //10ms
                {
               
         
         if(!K1)
         {
                  Delayms(20);
                 if(!K1)
                 {
                  
                  while(!K1);
            INT_CLKO |= 0x40; //打開INT4 外部中斷 喚醒功能
                        num=0;
                        PCON=0X02;//進入掉電模式
                        Delayms(5);
                  
                 }
         }
         else num=0;
}
}
void Int4()  interrupt 16
{
        
                INT_CLKO &= 0xBF;        //中斷清零
                        EA=0;
        IAP_CONTR=0X20; //直接復(fù)位程序重新執(zhí)行
        
        }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:198189 發(fā)表于 2022-10-20 09:57 | 只看該作者
當它運行到10毫秒時,你的按鍵要正好按下,請問你的手速有這么快嗎?還是說你以什么方法實現(xiàn)的?如果你的“!K1”是人工操作的,這個要進入掉電模式就和你中獎的幾乎也差不多了。
回復(fù)

使用道具 舉報

板凳
ID:863657 發(fā)表于 2022-10-20 10:04 | 只看該作者
xia20 發(fā)表于 2022-10-20 09:57
當它運行到10毫秒時,你的按鍵要正好按下,請問你的手速有這么快嗎?還是說你以什么方法實現(xiàn)的?如果你的“ ...

人工按得,想法是 相當于是每10ms 掃描一次按鍵狀態(tài),好像怎么改時間中斷服務(wù)函數(shù)里 都進不去 掉電
回復(fù)

使用道具 舉報

地板
ID:624769 發(fā)表于 2022-10-20 10:11 | 只看該作者
既然,啥都沒有所有都靠猜,那就瞎猜一下,你的K1  剛好接在 P3.0,
回復(fù)

使用道具 舉報

5#
ID:863657 發(fā)表于 2022-10-20 10:20 來自手機 | 只看該作者
188610329 發(fā)表于 2022-10-20 10:11
既然,啥都沒有所有都靠猜,那就瞎猜一下,你的K1  剛好接在 P3.0,

是的 就是p3.0,掉電模式放主函數(shù)里就可以掉電,但是不能立即掉電,得等呼吸燈跑完,
放中斷里想著應(yīng)該可以立即掉電了吧又不能執(zhí)行
回復(fù)

使用道具 舉報

6#
ID:624769 發(fā)表于 2022-10-20 10:39 | 只看該作者
zhaomin253 發(fā)表于 2022-10-20 10:20
是的 就是p3.0,掉電模式放主函數(shù)里就可以掉電,但是不能立即掉電,得等呼吸燈跑完,
放中斷里想著應(yīng)該 ...

按鍵按下,又抬起后, (你要想穩(wěn)定工作,必須抬起后。!)設(shè)置一個標志, 比如 Poweroff = 1;
PWM函數(shù),中檢測到  if(Poweroff)  break;   跳出PWM函數(shù)。
最后,主函數(shù)中,
if(Poweroff)
{
   Poweroff  = 0;
   PCON      = 0x02;
}
回復(fù)

使用道具 舉報

7#
ID:384109 發(fā)表于 2022-10-20 10:41 | 只看該作者
按鍵釋放后再掉電
回復(fù)

使用道具 舉報

8#
ID:401564 發(fā)表于 2022-10-20 14:50 | 只看該作者
不能在中斷函數(shù)中進入掉電模式
掉電模式喚醒過程:在掉電模式執(zhí)行之后,被中斷觸發(fā),程序馬上進入中斷
如果在中斷模式中進入掉電模式:中斷本身還沒有返回,你就在當前模式進入了掉電模式,等到你再按下按鍵,又一次進入中斷,而之前的中斷并沒有返回
整個過程都斷套了.......至于會出什么問題,不知道,也不重要,你只要知道單片機亂了就行了
回復(fù)

使用道具 舉報

9#
ID:863657 發(fā)表于 2022-10-20 15:25 | 只看該作者
Y_G_G 發(fā)表于 2022-10-20 14:50
不能在中斷函數(shù)中進入掉電模式
掉電模式喚醒過程:在掉電模式執(zhí)行之后,被中斷觸發(fā),程序馬上進入中斷
如果 ...

哦原來如此,受教了,請問下,
那不用中斷,如何才能控制一個程序在運行中途突然關(guān)機呢,(不切斷電源,只軟關(guān)斷,比如一個信號),
回復(fù)

使用道具 舉報

10#
ID:161164 發(fā)表于 2022-10-20 16:26 | 只看該作者
zhaomin253 發(fā)表于 2022-10-20 15:25
哦原來如此,受教了,請問下,
那不用中斷,如何才能控制一個程序在運行中途突然關(guān)機呢,(不切斷電源, ...

用標志位,不要用1ms以上的delay
回復(fù)

使用道具 舉報

11#
ID:863657 發(fā)表于 2022-10-20 16:56 | 只看該作者
lkc8210 發(fā)表于 2022-10-20 16:26
用標志位,不要用1ms以上的delay

請問 標志位是需要用 if判斷的么,如果程序已經(jīng)在一個if 語句里執(zhí)行了,這時候標志位變化了,那還是得等到當前if語句執(zhí)行完才能判斷 標志位變化的if吧
回復(fù)

使用道具 舉報

12#
ID:863657 發(fā)表于 2022-10-20 17:25 來自手機 | 只看該作者
lkc8210 發(fā)表于 2022-10-20 16:26
用標志位,不要用1ms以上的delay

好像明白了,每執(zhí)行一段程序就判斷一下標志位,這樣就可以比較快的關(guān)機了
回復(fù)

使用道具 舉報

13#
ID:401564 發(fā)表于 2022-10-20 19:08 | 只看該作者
zhaomin253 發(fā)表于 2022-10-20 15:25
哦原來如此,受教了,請問下,
那不用中斷,如何才能控制一個程序在運行中途突然關(guān)機呢,(不切斷電源, ...

參考一下:
sbit        KEY=P3^2;                //按鍵開關(guān)
bit                ON;                                //開機狀態(tài)標志位
unsigned char        time_10ms=0x00;        //按鍵10mS延時變

while(1)
        {                                                                                                                                                
                if((time_10ms>=5)&&KEY)                                        //按鍵沒有按下,50mS進行一次處理
                {
                        if(!key_press)
                       {
                           ON=!ON;                                        //按鍵有效按下就開/關(guān)機
                           key_press=0;
                        }
                        if(!ON&&!key_press)                                                  //ON標志位補清除,按鍵已經(jīng)處理,關(guān)機
                        {
                                PCON=0x02;                                                        //進入掉電模式
                                _nop_();_nop_();_nop_();_nop_();        //4個空指令
                                Mcu_Awaken();                                                  //單片機喚醒,自己可以寫一些自己需要的功能                       
                        }
                        time_10ms=0x00;                                                        //清除時間
                }       
        }

void Int0_isr() interrupt 0        //外部中斷0
{       
        key_press=1;                          //按下按鍵
        time_10ms=0x00;                          //從最后一次退出中斷開始計時
        IE0=0;
}

void T0_isr() interrupt        1
{
        if(time_10ms<250)time_10ms++;        //每10mS,time_10ms++一次
}
time_10ms是定時器中斷中++的全局變量.按鍵按下就清除
key_press是一個標示,按鍵中斷按下就標志,隨便按鍵怎么抖動,中斷只做這兩件事
主程序中的相關(guān)程序執(zhí)行,永遠是在if((time_10ms>=5)&&KEY)        這個條件下才會被執(zhí)行的,這就是一個去抖動的效果



回復(fù)

使用道具 舉報

14#
ID:123289 發(fā)表于 2022-10-21 08:46 | 只看該作者
只問一個問題:
在中斷服務(wù)程序中,執(zhí)行了【掉電模式】之后。如何喚醒呢?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线视频 | 亚洲午夜精品一区二区三区他趣 | 一区二区三区四区电影视频在线观看 | 国产精品视频一二三区 | 国产成人精品一区二区三 | 亚洲精品久久久蜜桃网站 | 欧美精品三区 | 国产精品国产精品 | 涩涩视频在线看 | 久久精品国产一区二区三区 | 亚洲最新在线 | 日韩精品在线免费观看视频 | 久久久一区二区 | 欧美日韩综合一区 | 成人午夜在线视频 | 国产精品视频久久 | 久久夜色精品国产 | 免费三级网 | 91av国产在线视频 | 国产精品毛片久久久久久久 | 欧美一区免费 | 成人一区二区三区在线观看 | 亚洲国产精品久久久久婷婷老年 | 精品成人av | 欧美成年网站 | 亚洲国产成人精品女人 | 国产成人午夜高潮毛片 | 亚洲一一在线 | 久久精品91久久久久久再现 | 99国产精品久久久久老师 | 免费在线一区二区 | 成人免费在线视频 | 久久综合伊人一区二区三 | 亚洲巨乳自拍在线视频 | 人妖一区 | 99精品久久 | 97成人在线 | 欧美xxxx做受欧美 | 国产电影一区二区在线观看 | 先锋资源在线 | 日本精品一区二区在线观看 |