在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機中斷問題30例

            單片機中斷問題30例

            作者: 時間:2013-05-07 來源:網絡 收藏

            26、我用51定時/計數(shù)器1計數(shù)為什么不計數(shù)?想讓它記數(shù)產生中斷讓蜂鳴器響。

            sbit fengming=P1^6;

            void main()

            {

            TMOD=0x50;

            EA=1;

            ET1=1;

            TH1=0xff;//來一次中斷記一次數(shù)

            TL1=0xff;

            TR1=1;

            }

            void time1(void) interrupt 3

            {

            fengming=0;

            }

            答:

            不知道是你在網頁上打錯了,還是怎么回事。

            void time1(void) interrupt 3-------》void timer1(void) interrupt 3

            主程序最后,要加個死循環(huán):while(1){};

            還有,你在這用了方式1,這個方式在你進中斷后,TH1和TL1會變成0000H。你不對他重新賦值,你要等FFFFH次計數(shù),才會進中斷。

            27MCS-51 定時器/計數(shù)器1的中斷入口地址是: 一共有四個A. 0003H B. 000BH C. 0013H D. 001BH,到底是是哪一個?

            答:答案是D.1BH

            因為:

            外中斷0——03h

            定時器0——0bh

            外中斷1——13h

            定時器1——1bh

            串口———23h

            請背熟

            28、我看很多程序都是主程序進入while(1),就死在while(1)里了,然后等待外中斷。那么現(xiàn)在的問題是我想讓它進入外中斷完事后,跳過while(1),執(zhí)行下邊的程序,該怎么辦?

            while里邊用break嗎?不知道好使不好使,還有標志位我看是硬件自動清零,查詢標志應該不能用吧,那該怎么辦呢?

            答:

            結束while(1)語句最好的方法就是使用break來跳出死循環(huán),關鍵就是選擇合適的flag(標志位),如果說中斷標志位是硬件自動清零的話,那么樓主不妨在中斷服務子程序中自己加入一個標志位:如果用匯編語言的話,PSW中的F0位就可以很好的使用;如果用C的話,就可以隨便定義一個位變量,如bit a=0;。也就是說,樓主需要在程序中定義一個位變量a,在中斷服務子程序中將a置1,退出中斷后查詢a是否為1,例如:if(a) {a=0;break;}這樣就跳出了while語句了。

            比方說,如果樓主想寫一個等待按鍵按下中斷的程序,就可以用while(!a);而不用while(1)語句了。

            29、我用外部中斷1,中斷一次顯示下一個數(shù),數(shù)碼管顯示沒問題。但是我用P3-3口用導線連接,接觸一次地線,松開一次,這時候數(shù)碼管顯示會亂跳,有時候加兩次數(shù),有時候加好多次數(shù),反正就是不穩(wěn)定。假如p3-3口通過按鍵接地的話,按一次按鍵一般情況會加一次數(shù),但有時候也是不穩(wěn)定,可能中斷好幾次。

            程序如下:

            #include

            #define uint unsigned int

            #define uchar unsigned char

            uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

            uchar times;

            uchar i=0;

            void delay(uint z)

            {

            uint x,y;

            for(x=z;x>0;x--)

            for(y=112;y>0;y--);

            }

            void main()

            {

            EA=1;

            EX1=1;

            IT1=1;

            while(1)

            {

            P1=table[i];

            P2=0x00;

            }

            }

            void into() interrupt 2

            { delay(1000);

            i++;

            if(i==10) i=1;

            }

            答:

            是抖動的問題。

            應該采取消抖措施,硬件、軟件方法皆可。

            ----

            樓主在中斷函數(shù)中,延時,時間看來很是不短!

            但是延時后,并沒有檢測按鍵是否還在按下,這就不能算是軟件消抖。

            30、 (1) 為什么有兩個外部中斷0允許位?有什么作用?

            (2)在51內核單片機中,當允許響應外部中斷0的中斷請求時,其特殊功能寄存器ie中的位必須為1 es exo ea et0?

            答:

            (1)兩個中斷是因為一般的單片機有兩個中斷源,可以實現(xiàn)兩級中斷嵌套,在實現(xiàn)復雜功能上兩級中斷嵌套很有用。

            (2)

            EA--總中斷允許位,必須為1

            ES--串行中斷允許位,不必開,為0

            EX0--外部中斷0允許位,應為1

            ET0--定時計數(shù)溢出中斷允許位,不必開,為0


            上一頁 1 2 3 4 5 6 7 8 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉