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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4049|回復: 15
打印 上一主題 下一主題
收起左側

請教單片機循環程序中加中斷

[復制鏈接]
跳轉到指定樓層
樓主
ID:405193 發表于 2018-11-14 16:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位師傅,您們好,下面程序在執行 if(key == 0x04)   {  output();  } 時間比較長,一直退不出來,F在當KEY等于別的值的時候,對應的的不輸出了,是不是要在 if(key == 0x04)   {  output();  } 這里面加入中斷程序,怎么加入,謝謝大家了。
if (!set)        
{            k=0;
        for(x=0;x<60;x++)
          if(K1==0)
          {    if(key == 0x08){D3=1;}
                   if(key == 0x04)
                    {  output();  }
                 if(key == 0x02){D1=1;}
                 if(key == 0x01){D0=1;}                                                                                       
                break;
             }
}               

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

使用道具 舉報

沙發
ID:396960 發表于 2018-11-14 18:01 | 只看該作者
你的輸出的功能,不用在中斷函數里執行的,可以在main函數里執行,中斷里加個標志就好了,main檢測到這個標志,然后就輸出,就不用在中斷里占用時間了。

評分

參與人數 1黑幣 +10 收起 理由
yong761228 + 10 很給力!

查看全部評分

回復

使用道具 舉報

板凳
ID:404160 發表于 2018-11-14 18:18 | 只看該作者
中斷是可以發生在任何時候的(位置的)。非多任務系統,只能等output()返回。
回復

使用道具 舉報

地板
ID:155507 發表于 2018-11-14 21:03 | 只看該作者
中斷子程序也不要寫得過長,處理過多的任務,要盡快處理后及時返回,如果中斷一次有很多任務需要執行完全,可以在中斷子程序中設置一個標志位,在主程序中查這個標志位,當標志為1時,就在主程序中完成這些任務,這樣就不會影響其它中斷源的中斷,也不會使中斷產生混亂。

評分

參與人數 1黑幣 +10 收起 理由
yong761228 + 10 很給力!

查看全部評分

回復

使用道具 舉報

5#
ID:405193 發表于 2018-11-14 21:38 | 只看該作者
非常感謝各位師傅!
回復

使用道具 舉報

6#
ID:405193 發表于 2018-11-18 09:30 | 只看該作者
各位師傅,您好,我在主程序的一個函數里開啟了定時器2中斷,現在一直循環退不出來,我想D2=~D2 10次退出來,如何實現,我在中斷里加k++, 在主程序里檢測k==10,這樣也不行,因為這個中斷是在主程序里的一個子程序里實現的,該如何修改,謝謝大家。
void ISR_INT2(void) interrupt 12        
{                 
          static ulong nn;
          
       T2L = 0x20;                //設置定時初值
           T2H = 0xD1;                //設置定時初值
              nn++;
        if (nn==6000)
              { D2 = ~D2;}      
        if (nn==7000)
            { D2 = ~D2;  nn=0;}           
     
        


}
回復

使用道具 舉報

7#
ID:405193 發表于 2018-11-18 09:37 | 只看該作者
我想把子程序的中斷調到主程序中用,結果中斷2不工作了,我是在子程序中設置一個標記k=1,在主程序中去檢測 if(k==1)讓定時器2開啟{Timer2Init();} 結果中斷2不工作,在主程序的子函數中開啟定時器2,中斷是工作的,只是上面的循環,我想10次停止,實現不了。
回復

使用道具 舉報

8#
ID:405193 發表于 2018-11-18 11:20 | 只看該作者
我已經解決了,是在中斷里設置標記,讓主程序去檢測標記就可以達到要求了,謝謝。
回復

使用道具 舉報

9#
ID:428593 發表于 2018-11-18 11:38 | 只看該作者
簡單的辦法,就是通過全局變量,在中斷服務程序中修改該變量,然后在main-loop中查詢該變量的狀態
回復

使用道具 舉報

10#
ID:405193 發表于 2018-11-18 15:00 | 只看該作者
mumu_tou 發表于 2018-11-18 11:38
簡單的辦法,就是通過全局變量,在中斷服務程序中修改該變量,然后在main-loop中查詢該變量的狀態

我就是這樣做的,解決問題了,謝謝。
回復

使用道具 舉報

11#
ID:428716 發表于 2018-11-18 15:35 | 只看該作者
中斷子程序也不要寫得過長,處理過多的任務,要盡快處理后及時返回,如果中斷一次有很多任務需要執行完全,可以在中斷子程序中設置一個標志位,在主程序中查這個標志位,當標志為1時,就在主程序中完成這些任務,這樣就不會影響其它中斷源的中斷,也不會使中斷產生混亂。
回復

使用道具 舉報

12#
ID:428756 發表于 2018-11-18 16:36 | 只看該作者
非常感謝各位師傅!
回復

使用道具 舉報

13#
ID:405193 發表于 2018-11-18 19:58 | 只看該作者
橙橙橙io 發表于 2018-11-18 15:35
中斷子程序也不要寫得過長,處理過多的任務,要盡快處理后及時返回,如果中斷一次有很多任務需要執行完全, ...

我四十多歲了,學單片機才2個月,非常感謝師傅。
回復

使用道具 舉報

14#
ID:382550 發表于 2018-11-18 20:41 | 只看該作者
輸出的功能不用在中斷函數里執行,可以在main函數里執行,中斷里加個標志就好了
回復

使用道具 舉報

15#
ID:429089 發表于 2018-11-19 11:39 | 只看該作者
按鍵處理程序?不用一直等待,可以在主循環里調用這個程序,每次調用先讀鍵值,有變化再處理
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费成人高清 | 国产精品久久久久久福利一牛影视 | 伊人看片| 久久99精品久久久久久国产越南 | 日韩精品色网 | 成人精品一区二区三区四区 | 久免费视频 | 欧美亚洲高清 | 一区二区三区免费在线观看 | 97久久精品午夜一区二区 | 成人免费xxxxx在线视频 | 国产精品一区二区三区四区 | 亚洲电影成人 | 欧美一区日韩一区 | 羞羞视频网 | 亚洲免费三区 | 成人欧美一区二区三区黑人孕妇 | 国产农村妇女毛片精品久久麻豆 | 免费激情av| 国产精品久久久久久久久久不蜜臀 | 久久国产亚洲精品 | 精品一区在线免费观看 | 精品欧美一区二区久久久伦 | 国产91视频一区二区 | 亚洲精品乱码久久久久久按摩观 | 国产精品视频久久 | 亚洲国产网站 | 无码日韩精品一区二区免费 | 一级免费视频 | 亚洲成人免费视频在线观看 | 欧美不卡一区 | 国产99久久精品一区二区永久免费 | 91资源在线 | 欧美 中文字幕 | 国产一区中文 | 国产精品欧美一区二区三区 | 亚洲国产成人av | 国产精品久久久久久久白浊 | 成人欧美一区二区三区黑人孕妇 | 国产午夜精品一区二区三区嫩草 | 国产精品成人一区二区 |