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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

關于中斷部分的小結(2)

作者:佚名   來源:本站原創(chuàng)   點擊數:  更新時間:2010年05月14日   【字體:

 中斷是單片機和其他各種微處理器中必不可少的一部分之一,在此對51單片機中斷有用的部分加以小結。

本文是接上篇http://www.zg4o1577.cn/mcu/829.html 
小結(2)主要是針對外部中斷部分,總結外部中斷對特殊功能寄存器的設置以及程序的編寫流程。此外這里重點介紹一些中斷擴展的方法。
外部中斷信號是由P3口的P3.2和P3.3兩個管腳輸入的。
外部中斷程序編寫流程:
一、外部中斷初始化:
在使用外部中斷前,先要設置相關特殊功能寄存器,即初始化過程;
1.開CPU總中斷:EA=1;
2.開外部中斷:
開外部中斷0:EX0=1;
    開外部中斷1:EX1=1;
3.設置外部中斷觸發(fā)方式:
    外部中斷0觸發(fā)控制位IT0;
IT0=0時,為電平觸發(fā)方式
IT0=1時,為邊沿觸發(fā)方式(下降沿有效)
外部中斷1觸發(fā)控制位IT1(同上);
4.外部中斷優(yōu)先級設置(可以不設置)
    PX0=1
PX1=1;
   
舉例如下:
void   interrupt_init(void)     // 中斷初始化
{
    EA = 1;       //開總中斷
    EX0 = 1;      //開外部中斷0
    EX1 = 1;      //開外部中斷0
    IT0 = 1;      //外部中斷0下降沿觸發(fā)方式
    IT1 = 0;      //外部中斷1電平的觸發(fā)方式
}
 
二、主程序
主程序部分為你需要實現的功能,這部分和中斷幾乎沒什么太大關聯(lián),只不過,在執(zhí)行主程序時,如果從外部來一個外部中斷信號,不得不放棄現在執(zhí)行的任務而轉而執(zhí)行中斷子程序;
 
三、中斷子程序
    這部分主要便是對請求中斷成功后進入中斷后,你需要執(zhí)行什么任務;
外部中斷子程序寫法如下:
void INT_0() interrupt 0 using 0      //外部中斷0子程序
{
        LED0 = ~LED0;         //這句話代換成你所需要功能的C代碼
}
void INT_1() interrupt 2 using 2      //外部中斷1子程序
{
        LED1 = 0;            //這句話代換成你所需要功能的C代碼
}
 
    完整外部中斷例程代碼如下:
    #include<reg52.h>
#define uchar unsigned char
sbit wr=P3^6;
sbit   LED0 = P1^0;
sbit   LED1 = P1^1;
void   interrupt_init(void)     // 中斷初始化
{
    EA = 1;       //開總中斷
    EX0 = 1;      //開外部中斷0
    EX1 = 1;      //開外部中斷0
    IT0 = 1;      //外部中斷0下降沿觸發(fā)方式
    IT1 = 0;      //外部中斷1電平的觸發(fā)方式
}
      
void main(void)
{
    wr=0;        //低電平時第三列為獨立按鍵
    interrupt_init();
    while(1)
           {
               LED1 = 1;
           }
}  
 
void INT_0() interrupt 0 using 0      //外部中斷0子程序
{
        LED0 = ~LED0;
}
 
void INT_1() interrupt 2 using 2      //外部中斷1子程序
{
        LED1 = 0;
}
實現功能:初始燈1和2全滅;
當按下P3.2對應鍵盤1(矩陣鍵盤第三行第三列),向下降沿觸發(fā)外部中斷0子程序,按一次鍵1松手燈1亮,再按一次鍵1松手燈1滅;
當按下P3.3對應鍵盤2(矩陣鍵盤第四行第三列),送入低電平信號觸發(fā)外部中斷1子程序,按下鍵2燈2亮,松手燈2滅。
 
中斷的擴展:
一、定時器擴展為外部中斷源
51單片機內部有兩個定時器/計數器T0和T1,在滿足中斷響應的情況下,當T0或T1的計數值從全1(0xFFFF)狀態(tài)進入全0(0x0000)時,此時就會產生定時器溢出中斷。
根據以上分析,我們只需要把計數器的初值設置為0xFFFF,那么只要計數輸入端再來一個脈沖就可以產生溢出中斷申請。設想我們把外部中斷輸入連接到計數器輸入端,就可以利用外部中斷申請的負脈沖產生定時器溢出中斷申請,而轉移到相應中斷服務程序入口地址。只要在(0x000B或0x001B)處存放外部中斷服務子程序,就可以達到目的。
具體步驟如下:
1.將定時/計數器T0或T1的計數輸入端(P3.3或P3.4)作為擴展外部中斷請求輸入端。
    2.置定時/計數器T0或T1為工作模式2,計數方式—8位自動裝載方式。
    3.定時/計數器T0或T1的高8位和低8位都預置為全1。
    4.在相應的中斷服務程序入口(0x000B或0x001B)處存放外部中斷服務子程序。
 
二、軟件查詢擴展外部中斷源
當需要的外部中斷源較多,采用第一種方法仍不能滿足實際需求,我們可以采用這種方法。
設有四個外部中斷源,INT00、INT01、 INT02 、INT03,這四個外部中斷請求源的輸入端通過一個4路的或非門連接到51單片機的/INT0引腳輸入端。只要4個外部中斷請求源中有一個或者一個以上的有效(高電平),就會產生一個負的/INT0信號向51單片機發(fā)出中斷申請。
為了確認在/INT0有效時究竟是INT00、INT01、 INT02 、INT03中哪個發(fā)出的中斷申請,可以通過軟件查詢的方法來確認。將四個中斷源輸入端INT00、INT01、 INT02 、INT03分別接到P1.0~P1.3這四個引腳上。一旦響應中斷,在中斷服務程序中CPU通過軟件查詢方法對P1.0~P1.3這四條線的電位進行檢測,以確認提出中斷申請的中斷源。
當擴展的4個外部中斷源優(yōu)先級不同時,軟件查詢的順序也應按照優(yōu)先級的的由高到低順序進行。設擴展的4個外部中斷源的優(yōu)先級由高到低的順序是INT00到INT03,則軟件查詢順序為P1.0到P1.3。
關閉窗口

相關文章

主站蜘蛛池模板: 国外成人在线视频 | 精品一区二区三区在线观看国产 | 亚洲一区二区免费视频 | 国产精品日韩欧美一区二区 | 99久久久无码国产精品 | 国产乱码久久久 | 岛国毛片在线观看 | 九九免费视频 | 在线资源视频 | 亚洲区一区二 | 国产9久| 紧缚调教一区二区三区视频 | 欧美黑人一级爽快片淫片高清 | 中文天堂网 | 久久精品| 日韩av在线一区二区 | 国产专区在线 | 成人在线 | 九九伊人sl水蜜桃色推荐 | 久久精品一区二区三区四区 | 综合在线视频 | 国产精品久久久久久久久动漫 | 色狠狠一区 | 日韩一区二区三区在线 | 久久久九九九九 | 91精品国产综合久久久久久首页 | 久久久久国产精品一区二区 | 亚洲一区免费视频 | 黄色一级免费看 | 国产婷婷精品 | 中文字幕在线一区二区三区 | 精品一区二区三区电影 | 久久人人爽人人爽 | 久久精品国产久精国产 | 日韩中文一区二区三区 | 国产综合精品一区二区三区 | 欧美日韩国产三级 | 亚洲成人一区二区 | 精品96久久久久久中文字幕无 | 国产精品久久久久久久久久久久午夜片 | 国产精品综合 |