婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 嵌入式系統 >> PIC單片機 >> 正文

PIC 單片機引腳中斷程序的設計技巧

作者:佚名    文章來源:網絡    點擊數:    更新時間:2008/11/3

1 、簡 述
    所有的中檔系列PIC單片機,PORTB端口最高的4個引腳(RB7~RB4)在設為輸入模式時,當輸入電平由高到低或由低到高發生變化時,可以讓單片機產生中斷。這就是通常所說的引腳狀態變化中斷。

    在設計引腳中斷程序時,有三個需要特別注意的地方。一是,在清除P0RTB中斷標志位RBIF之前,必須安排一條必不可少的,以PORTB端口數據寄存器 PORTB為源寄存器的讀操作指令。放置這一指令的目的有時并不只是為了讀取有用的數據,而是為了取消狀態變化的硬件信號,以便順利清除RBIF標志位,為下一次中斷做好準備。二是,由于端口PORTB是引腳電子變化中斷,即無論引腳出現上升沿還是下降沿都會產生中斷請求,所以必須處理好不需要的虛假中斷。三是,一般都利用PIC單片機的引腳功能來檢測按鍵,所以必須處理好按鍵消抖的問題。

2 、引腳中斷程序設計
    在主程序里先設置有關的寄存器。
    ◇設置TRISB寄存器,使RB7~RB4相關的引腳處于輸入狀態;
    ◇如果需要弱上拉,通過OPTION_REG的第7位設置;
    ◇RBIF=O;
    ◇RBIE=1;
    ◇GIF=1。

    響應狀態變化后的中斷服務程序。
    ◇檢查RBIF是否為l,為l則是引腳變化引起的中斷;
    ◇調用延時程序,延時20~30 ms,目的是為了按鍵去抖;
    ◇判斷是引腳出現上升沿還是下降沿引起的中斷;
    ◇調用按鍵處理程序;
    ◇讀PORTB口的值,取消狀態變化的硬件信號;
    ◇清除RBIF標志。

    筆者認為上面程序設計最大的問題是在中斷程序里調用延時程序。大家知道,中檔PIC單片機只有8層深度的硬件堆棧,在中斷里調用于程序出現極易堆棧溢出的情況。另外,PIC單片機中斷程序人口只有一個,在響應中斷的請求時,PIC單片機就會自動把全局中斷的使能位(INTCON的第7位GIF)清除,這樣其他中斷就暫時不能被響應(此時,如果別的中斷發出的中斷請求,標志位將一直保留著),直到這個中斷程序退出后才會得到響應。這就要求我們設計中斷程序的時候必須盡量短,避免調用子程序,更不要在中斷里進行復雜的運算。

    下面給出筆者設計程序時的思路。

    當引腳狀態變化引起中斷時,在中斷子程序里首先判斷引起中斷的原因是不是我們需要的變化引起的中斷。如果是,不要在這里延時,而是設置一個標志位,接著清除中斷標志,退出中斷。中斷程序如下:
else if((RBIE&RBlF)==1){ //如果引腳變化引起中斷
    if(RB4==0){ //RB4上的按鈕接地
    key=1; //按鍵標志位置位
    }
    RBIF=0; //清除引腳中斷標志位
    }

    其中,if(RB4==0)語句相當于讀取了PORTB端口數據寄存器,取消了狀態變化的硬件信號。

    下面詳細介紹怎么樣進行按鍵去抖。

    首先,在定時器中斷里設置一個lms的時間基準標志位“SYSlms”,每到lms,“SYSlms”便置位。程序如下:
    unsigned char count;
    if((ToIE&TOIF)==1){ //定時器中斷
    TMRO+=0x09; //每250μs中斷一次
    if(count==4){
    count=0;
    SYSlms=l; //系統時間標志
    couot++;
    }   

    T0IF=0; //清除時鐘中斷標志位
    }

    有了這個時間基準,便可以在主程序里進行按鍵去抖處理了。為了更好地利用這個時間基準,定義一個消息標志SYSTime,筆者把它稱作時間消息。為了讓這個消息有自我發布和自我消失的功能.定義了如下一個宏:
    bit SYSTime;
    #defincTimeEnahle()SYSTime=0,if(SYSlms){SYSTime=l;SYSlms=0;)

    可以把TimeEnable()放到主程序死循環的任何地方,每當程序執行這個宏,SYSTime就會清零,這就是標志位的自我消失.如果在定時器時間基準標志位SYSlms已經置位的話,SYSTime就會置1,這樣別的程序就可以利用這個時間消息了,這就是消息的自我發布。下面就是利用這個時間消息來進行按鍵延時去抖的,首先看一下按鍵掃描子程序;
    void seaakey(){
    unsigned char KeyTime,KeyTask;//定義任務時間參數、
    //任務參數
    switch(KeyTask){
    case0:if(key){
    KeyTime=30; //準備延時30 ms
    KeyTask++; //準備好下一個任務
    kcy=0;
    }
    break;
    case I:KeyTime--; //延時30 ms
    if(KeyTime==0)Key+ask++;
    break;
    case2;if(RB4==o){
    //調按鍵處理程序
    KeyTask=0;
    }
    else KeyTask=0;//退出任務
    break;
    }
}

    在主程序的死循環中這樣用:
    while(1){
    TimeEnable();
    If(SYSTime==1){scankey();)
    //在此可以添加其他程序

    只有有時問消息的時候才執行按鍵掃描程序。可以看到,進入掃描程序執行第一次的時候,程序首先判斷按鍵標志位有沒有置位,置位的話(也就是有按鍵按下的話),任務時間參數(KeyTime)賦值為30,這是延時30ms,去抖,當然你也可以設置為其他的時間值;同時任務參數 (KeyTask)加1。1ms后,再進入掃描程序,這個時候掃描程序執行casel的語句,這樣30次后(延時了30ms),任務參數 (KeyTask)加1,值為2。lms后,再進入掃描程序,將執行case 2的語句,首先在這里再次判斷是不是按鍵還在按下,如果是就調按鍵的處理程序,如果不是。就退出按鍵掃描程序。在這里,還可以加入按鍵是否抬起的判斷程序。

    這樣設計的引腳變化程序,CPU開銷小,效率高,不會出現堆淺溢出的問題,提高了系統的實時性。

Tags:PIC單片機,中斷,單片機中斷,程序  
責任編輯:admin
相關文章列表
沒有相關文章
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 亚洲国产午夜精品| 性chinese极品按摩| www.日本久久| 中文字幕第100页| 欧美日韩亚洲自拍| 成人精品视频一区二区| 丰满爆乳一区二区三区| 欧美一级视频免费看| 野外做受又硬又粗又大视频√| ijzzijzzij亚洲大全| 日本一道在线观看| 99在线精品免费视频| 日韩免费视频播放| 国产激情在线观看视频| 91热这里只有精品| 亚洲成人天堂网| www.com久久久| dy888午夜| 波多野结衣av一区二区全免费观看| 玖玖精品在线视频| 国产 日韩 亚洲 欧美| 女人天堂av手机在线| 欧美伦理片在线观看| 色偷偷中文字幕| 日韩 欧美 视频| 久久久精品三级| 亚洲欧美一区二区三区不卡| 成人短视频在线观看免费| 日本福利视频在线| 亚洲天堂av一区二区| 成人黄色大片网站| 九九热免费精品视频| 神马午夜伦理影院| 99精品视频在线看| 特级黄色片视频| 男人靠女人免费视频网站| 中文字幕在线视频精品| 国产真人做爰毛片视频直播| 国产高清视频网站| 人人妻人人添人人爽欧美一区| 小明看看成人免费视频| 日韩av在线播放不卡| 亚洲免费999| 免费毛片小视频| 国产亚洲精品久久久久久久| 91色国产在线| 国模吧无码一区二区三区| 吴梦梦av在线| 一本色道久久亚洲综合精品蜜桃 | 亚洲高清在线免费观看| 韩国无码av片在线观看网站| 久久久久久蜜桃一区二区| 男人添女人下部高潮视频在观看| 国产aⅴ爽av久久久久| 国产a级片免费观看| 国产精品999视频| japanese在线播放| 色偷偷中文字幕| 视频二区在线播放| 黄色三级视频在线| chinese少妇国语对白| 无码人妻h动漫| 黄色一级视频片| 免费在线观看视频a| 亚洲欧美一二三| 欧美日韩一区二区三区69堂| 精品久久久久久久无码| 成人三级视频在线播放| 欧美黄色免费网址| 欧美精品色视频| 亚洲免费成人在线视频| 国产天堂在线播放| 免费人成在线观看视频播放| 日本一道在线观看| 吴梦梦av在线| 熟妇熟女乱妇乱女网站| 日本中文字幕二区| 热久久久久久久久| wwwwwxxxx日本| 激情五月开心婷婷| 国产精品裸体瑜伽视频| 久久久免费视频网站| 北条麻妃在线观看| 蜜臀视频一区二区三区| 丰满少妇在线观看| 第四色婷婷基地| 操人视频免费看| 久久视频免费在线| 中文字幕第22页| 只有这里有精品| 日韩人妻一区二区三区蜜桃视频| www.亚洲一区二区| 国产va亚洲va在线va| 国产中文字幕视频在线观看| 中国丰满人妻videoshd| 中文字幕在线中文| 蜜臀久久99精品久久久酒店新书| 日韩中文字幕免费在线| 在线不卡一区二区三区| 99视频在线观看视频| 国产欧美自拍视频| 欧美a v在线播放| 自拍偷拍 国产| 国产成人一区二区三区别| av天堂永久资源网| 超碰在线超碰在线| www.爱色av.com| 亚洲免费在线播放视频| 91成人综合网| 欧美伦理片在线观看| 99视频在线免费播放| 男生操女生视频在线观看 | 亚洲色图欧美自拍| 国产精品国三级国产av| 久久精品免费网站| 阿v天堂2017| 亚洲综合20p| 欧美日韩第二页| 艳母动漫在线观看| 国产无色aaa| 黑鬼大战白妞高潮喷白浆| 91性高潮久久久久久久| www.超碰com| 一卡二卡三卡视频| 成人高清在线观看视频| 中文字幕在线观看第三页| 欧美视频在线播放一区| 91精品国产毛片武则天| 特黄视频免费观看| 乱子伦视频在线看| 国产精彩视频一区二区| 中文字幕日韩久久| 亚洲xxx在线观看| 天堂av在线8| 美女网站色免费| 116极品美女午夜一级| 轻点好疼好大好爽视频| 成人在线视频一区二区三区| 男插女免费视频| 国产二区视频在线| 亚洲色成人www永久在线观看 | 91精品一区二区三区四区| 欧美美女性视频| 亚洲天堂2018av| 成人性生生活性生交12| 日韩黄色短视频| 日本日本19xxxⅹhd乱影响| 一二三在线视频| 欧美交换配乱吟粗大25p| 日本a级片在线观看| 免费观看黄色大片| 亚洲一区 在线播放| 思思久久精品视频| 国产黄色特级片| 亚洲激情在线观看视频| 艹b视频在线观看| 在线播放 亚洲| 伊人免费视频二| 熟女人妇 成熟妇女系列视频| 毛片毛片毛片毛| 国产精品一区二区免费在线观看| 日日碰狠狠躁久久躁婷婷| wwwwwxxxx日本| 国产一区二区在线视频播放| 日韩av高清在线看片| 污片在线免费看| 粉色视频免费看| 一道本在线观看视频| 久久6免费视频| 青青草国产免费| 九九九九九伊人| 六月丁香激情网| 亚洲色图欧美自拍| 亚洲熟妇国产熟妇肥婆| 欧美伦理视频在线观看| 国产xxxxhd| 免费av手机在线观看| 色综合色综合色综合色综合| 日日噜噜噜夜夜爽爽| 免费日韩在线观看| 青青草原国产在线视频| 日韩一二区视频| 久久久久国产一区| 波多野结衣 作品| 国产免费人做人爱午夜视频| 青青视频免费在线观看| 日韩a级在线观看| 久久久久久综合网| 免费观看精品视频| 亚洲一级片av| 日韩av片免费观看| 午夜免费一区二区| 国产96在线 | 亚洲| 警花观音坐莲激情销魂小说| 亚洲 中文字幕 日韩 无码| 日本aa在线观看| 超碰97免费观看| 国产 国语对白 露脸| 最新天堂中文在线| 欧美成人乱码一二三四区免费|