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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機系統(tǒng)的暫停與恢復(fù)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:811381 發(fā)表于 2022-5-16 21:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想做個系統(tǒng),要求單片機在任意時刻,按下按鍵系統(tǒng)暫停,再次按下按鍵的時候恢復(fù)繼續(xù)執(zhí)行。我用了2種方法都有問題。
方法一:中斷和按鍵用的同一個引腳(部分程序,中斷開啟在初始化中做了)
bit temp;
sbit key=P3^2;
void int0() interrupt 0
{
       temp=1;
       while(temp==1)
       {
               if(key==0)
              {
                      delay(10);
                      if(key==0)
                     {
                            temp=0;
                            while(key==0);
                     }
              }
       }
}
方法二:掉電模式
void int0() interrupt 0      
{   
        uint x=0;
        IT0=0;
        EX0=0;
        while(k1==0)
        {
                x++;
                delay(10);
                if(x>=1000)
                {
                         PCON=0;
                }                  
        }
        if(x<1000)
        {
                IT0=1;
                EX0=1;
                PCON=0x02;
                delay(10);
        }              
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:811381 發(fā)表于 2022-5-16 21:43 | 只看該作者
方法二是參考的其他朋友的程序
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2022-5-17 10:28 | 只看該作者
做個奇偶控制器,為奇CPU進行休眠,為偶CPU退出休眠。
奇偶控制器的奇偶,由按鍵產(chǎn)生中斷的奇偶次數(shù)控制。
回復(fù)

使用道具 舉報

地板
ID:584814 發(fā)表于 2022-5-17 13:47 | 只看該作者
什么問題呢 ? 是按下鍵后沒人送茶么 ?
回復(fù)

使用道具 舉報

5#
ID:624769 發(fā)表于 2022-5-17 13:54 | 只看該作者
單片機, 是不存在暫停的, 要起到看上去"暫停"的效果, 要么讓他 在一個地方 傻跑, 要么休眠。你的兩個思路都對,但是代碼都有問題。

方法一:中斷和按鍵用的同一個引腳(部分程序,中斷開啟在初始化中做了)
注意: IT0 =1
sbit key=P3^2;
void int0() interrupt 0
{

       unsigned char i;
       while((IE0) || (!key))
       {
               IE0 = 0;
               i = 200;
               while(--i);
       }  //消抖 & 釋放按鍵
       while(!IE0);        //暫停現(xiàn)象
       while((IE0) || (!key))
       {
               IE0 = 0;
               i = 200;
               while(--i);
       }  //消抖 & 釋放按鍵
}


方法二:掉電模式    注意: IT0 =1
由于,STC15系列,部分機型 中斷中用PCON = 0x02; 會有意外,所以,掉電模式最好配合主程序使用。

bit Pause_Stats;
sbit key=P3^2;


void int0() interrupt 0      //必須要有
{   

               EX0 = 0;   //關(guān)中斷
}

void main()
{
       unsigned char i;
     IT0 = 1;
     EX0 = 0;   //關(guān)中斷
     EA  = 1;
  while(1)
  {
         if(IE0)
         {
               while((IE0) || (!key))
              {
                       IE0 = 0;
                       i = 200;
                       while(--i);
               }  //消抖 & 釋放按鍵
                EX0 = 1;     //開中斷
                 PCON=0x02;      //休眠           
                _nop_();
                _nop_();
                while((IE0) || (!key))
               {
                       IE0 = 0;
                       i = 200;
                       while(--i);
                }  //消抖 & 釋放按鍵
           }
}
回復(fù)

使用道具 舉報

6#
ID:811381 發(fā)表于 2022-5-17 16:06 | 只看該作者
188610329 發(fā)表于 2022-5-17 13:54
單片機, 是不存在暫停的, 要起到看上去"暫停"的效果, 要么讓他 在一個地方 傻跑, 要么休眠。你的兩個思路都 ...

謝謝,我研究下
回復(fù)

使用道具 舉報

7#
ID:811381 發(fā)表于 2022-5-25 14:18 | 只看該作者
188610329 發(fā)表于 2022-5-17 13:54
單片機, 是不存在暫停的, 要起到看上去"暫停"的效果, 要么讓他 在一個地方 傻跑, 要么休眠。你的兩個思路都 ...

您好,您的方法一,進入中斷后標志位不是自動清零的么?為什么還要手動IE0=0呢?然后當IE0=0時就原地等待,那么再次按下按鍵時,怎么退出中斷返回繼續(xù)執(zhí)行的呢?沒太懂,您的程序我驗證了,就是沒太明白您的設(shè)計思想
回復(fù)

使用道具 舉報

8#
ID:811381 發(fā)表于 2022-5-25 14:28 | 只看該作者
188610329 發(fā)表于 2022-5-17 13:54
單片機, 是不存在暫停的, 要起到看上去"暫停"的效果, 要么讓他 在一個地方 傻跑, 要么休眠。你的兩個思路都 ...

請教您下,方法二中, 中斷喚醒的時候自動對PCON清零么?不需要手動對PCON清零么?
回復(fù)

使用道具 舉報

9#
ID:624769 發(fā)表于 2022-5-25 14:30 | 只看該作者
的事發(fā)生的 發(fā)表于 2022-5-25 14:18
您好,您的方法一,進入中斷后標志位不是自動清零的么?為什么還要手動IE0=0呢?然后當IE0=0時就原地等待 ...

是的,IE0 會自動清0,但是98%以上的按鍵會有 “抖動” 所以 IE0 會又被置1,所以手動 清IE0 ,以及 判斷IE0 都是為了一個目的,那就是“消抖”, 大多數(shù)牽涉到按鍵的代碼,如果能確保 按鍵 不會有 “抖動”, 那么,代碼都會簡潔的多。
回復(fù)

使用道具 舉報

10#
ID:624769 發(fā)表于 2022-5-25 14:35 | 只看該作者
的事發(fā)生的 發(fā)表于 2022-5-25 14:28
請教您下,方法二中, 中斷喚醒的時候自動對PCON清零么?不需要手動對PCON清零么?

PCON = 0x02; 即給 PCON.1   位 置1 這個動作,只有1瞬間,作用是讓單片機休眠,但是,PCON.1 永遠不會變成1, 即任何時候,你讀 PCON.1 得到的 都是0, 所以,不存在給 PCON.1 清零的問題。
回復(fù)

使用道具 舉報

11#
ID:811381 發(fā)表于 2022-5-26 17:54 | 只看該作者
188610329 發(fā)表于 2022-5-25 14:30
是的,IE0 會自動清0,但是98%以上的按鍵會有 “抖動” 所以 IE0 會又被置1,所以手動 清IE0 ,以及 判斷I ...

中斷中while(!IE0);這條語句是等待 ,就死到中斷里面了,再次按下按鍵,IE0還是為零,怎么實現(xiàn)的再次按下按鍵跳出中斷返回繼續(xù)執(zhí)行程序的呢?
回復(fù)

使用道具 舉報

12#
ID:811381 發(fā)表于 2022-5-26 17:55 | 只看該作者
明白了,非常感謝您的解惑
回復(fù)

使用道具 舉報

13#
ID:624769 發(fā)表于 2022-5-26 20:02 | 只看該作者
的事發(fā)生的 發(fā)表于 2022-5-26 17:54
中斷中while(!IE0);這條語句是等待 ,就死到中斷里面了,再次按下按鍵,IE0還是為零,怎么實現(xiàn)的再次按下 ...

=>中斷中while(!IE0);這條語句是等待 ,就死到中斷里面了,再次按下按鍵,IE0還是為零,怎么實現(xiàn)的再次按下按鍵跳出中斷返回繼續(xù)執(zhí)行程序的呢?
程序死在 while(!IE0);  達到你要的“暫停”效果,直到你再次按下按鍵后,打破這個死循環(huán),然后進行后面的消抖后,跳出中斷。程序恢復(fù)運行。
回復(fù)

使用道具 舉報

14#
ID:811381 發(fā)表于 2022-5-27 16:55 | 只看該作者
188610329 發(fā)表于 2022-5-26 20:02
=>中斷中while(!IE0);這條語句是等待 ,就死到中斷里面了,再次按下按鍵,IE0還是為零,怎么實現(xiàn)的再次按 ...

哦,我以為第一次進入中斷暫停死到里面了,下次按鍵打斷中斷,進去后IE0仍為0,還退不出來中斷。看起來是我對具體的過程理解有誤,非常感謝您的解惑
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕 | 日韩在线免费视频 | 国产在线网址 | 超碰91在线 | 国产精品久久久久久久三级 | 久久久.com | 亚洲精品免费视频 | 久久久久久久国产 | 国产精品一区在线观看你懂的 | 国产成人精品久久二区二区91 | 91在线免费观看网站 | 日韩精品一区二区三区中文在线 | 亚洲精品一区二区三区在线观看 | 精品在线视频播放 | 亚洲狠狠 | 亚洲a在线视频 | 久久激情网 | 国产精品毛片无码 | 99这里只有精品视频 | 久久久www成人免费无遮挡大片 | 日韩亚洲欧美综合 | 男人的天堂亚洲 | 国产成人免费视频网站视频社区 | 日韩免费一二三区 | 麻豆av网站 | 无毛av| 欧美日韩成人在线 | 欧美一区二区三区免费在线观看 | 在线观看免费av网站 | 亚洲高清电影 | 国产精品婷婷 | 日本一区二区三区精品视频 | 一区二区三区视频在线免费观看 | www.日本在线观看 | 久久国产精品99久久久大便 | 羞羞的视频免费在线观看 | 日本黄视频在线观看 | 亚洲欧美国产精品久久 | 日韩在线播放第一页 | 97人人草 | 武道仙尊动漫在线观看 |