新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51學(xué)習(xí)之外部中斷

        51學(xué)習(xí)之外部中斷

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        學(xué)習(xí)外部中斷,因為不了解,直接粘了程序來執(zhí)行。
        void ISR0_Key() interrupt 0 using 1
        {
        Speak1=~Speak1;
        }
        void ISR1_Key() interrupt 2 using 2
        {
        Speak2=~Speak2;
        }
        void Main()
        {
        EA=1; //全局中斷開
        EX0=1; //外部中斷0開
        EX1=1; //外部中斷1開
        IT0=1; //邊沿觸發(fā),為0則為低電平觸發(fā)
        IT1=0; //邊沿觸發(fā),為0則為低電平觸發(fā)
        while(1);
        }
        執(zhí)行結(jié)果好像有點亂。不太了解,邊沿和電平觸發(fā)的區(qū)別。從網(wǎng)上看了,能理解,可實際執(zhí)行是不一樣的。
        1、在第1次掃描到鍵盤按下時,結(jié)果如前面我們說的一樣,不論是低電平觸發(fā)還是下降沿觸發(fā)結(jié)果都會觸發(fā)事件,這里觸發(fā)時即指示燈點亮。然后程序繼續(xù)運行……
        2、當(dāng)程序繼續(xù)運行到第2次掃描鍵盤時按鍵還沒放開,結(jié)果就不一樣了。
        低電平觸發(fā):觸發(fā)條件依然為低電平,觸發(fā)條件成立,那么執(zhí)行事件,指示燈狀態(tài)改變,此時指示燈由亮變滅;
        下降沿觸發(fā):觸發(fā)條件依然為低電平,下降沿觸發(fā)條件不成立,那么不執(zhí)行事件,指示燈維持原來的亮的狀態(tài)。
        呵呵,明天再研究吧!
        還有就是中斷處理程序的一些問題。
        中斷服務(wù)程序通過使用 interrupt 關(guān)鍵字和中斷號(0 到 31)來實現(xiàn)中斷服務(wù)程序處理的是哪一個中斷。
        using 關(guān)鍵字用來指定中斷服務(wù)程序使用的寄存器組。用法是:using 后跟一個0 到3 的數(shù),對應(yīng)著 4 組工作寄存器。一旦指定工作寄存器組,默認的工作寄存器組就不會被壓棧,這將節(jié)省 32 個處理周期,因為入棧和出棧都需要 2 個處理周期。

        今天只試了進入中斷這種方式。明天試下查詢的方式,應(yīng)該和定時器是一樣的。



        關(guān)鍵詞: 51學(xué)習(xí)外部中

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 富锦市| 瑞丽市| 扎囊县| 微山县| 砀山县| 苏尼特右旗| 西盟| 拉萨市| 孟连| 乌拉特后旗| 广西| 广河县| 阿荣旗| 土默特左旗| 贵港市| 新田县| 陆河县| 防城港市| 青岛市| 永嘉县| 龙井市| 竹北市| 乳山市| 邮箱| 灵川县| 溧水县| 荃湾区| 莆田市| 贵州省| 邢台县| 宁陵县| 盐边县| 手游| 宁德市| 惠水县| 和静县| 沙河市| 邢台市| 兰坪| 西乡县| 江安县|