在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            單片機中斷問題30例

            作者: 時間:2013-05-07 來源:網(wǎng)絡(luò) 收藏

            一、30例

            1、外中斷INT0為下降沿觸發(fā),當(dāng)中斷被觸發(fā)后cpu執(zhí)行中斷程序,若本次中斷的程序還未執(zhí)行完INT0又來了一個相同的下降沿中斷信號怎么辦?cpu會怎么處理?若是定時器中斷呢?串口中斷呢?求解釋

            答:再來一個不會執(zhí)行。相同的優(yōu)先級不會打斷正在執(zhí)行的中斷。

            一. 如果是高優(yōu)先級的中斷來了,會打斷低優(yōu)先級的正在執(zhí)行的中斷而執(zhí)行高優(yōu)先級的中斷。

            51的默認(rèn)(此時的IP寄存器不做設(shè)置)中斷優(yōu)先級為:

            外部中斷0 > 定時/計數(shù)器0 > 外部中斷1 > 定時/計數(shù)器1 > 串行中斷;

            當(dāng)同時有幾種中斷到達時,高優(yōu)先級中斷會先得到服務(wù)。

            例如:當(dāng)計數(shù)器0中斷和外部中斷1(優(yōu)先級 計數(shù)器0中斷>外部中斷1)同時到達時,會進入計時器0的中斷服務(wù)函數(shù);但是在外部中斷1的中斷服務(wù)函數(shù)正在服務(wù)的情況下,這時候任何中斷都是打斷不了它的,包括邏輯優(yōu)先級比它高的外部中斷0計數(shù)器0中斷。

            51單片機的中斷優(yōu)先級控制寄存器IP可以把默認(rèn)的中斷優(yōu)先級設(shè)置為高或低級,

            例如默認(rèn)是外部中斷0 > 定時/計數(shù)器0 > 外部中斷1 > 定時/計數(shù)器1 > 串行中斷;

            現(xiàn)在設(shè)為定時1 和串行中斷為高優(yōu)先級 其它為低 ,那么中斷0執(zhí)行時會被定時器1 或串行中斷打斷,如果設(shè)定的兩個高優(yōu)先級定時/計數(shù)器1 和串行中斷同時響應(yīng),會再自然排隊,先執(zhí)行定時1中斷再執(zhí)行串行中斷。

            2、單片機,中斷3為什么不執(zhí)行,整個程序有什么不對的地方呢?

            #include

            #define uint unsigned int

            #define uchar unsigned char

            sbit p1_0=P1^0;

            sbit p1_1=P1^1;

            sbit p1_2=P1^2;

            sbit p1_3=P1^3;

            sbit p1_4=P1^4;

            sbit p1_5=P1^5;

            uchar PWM_T1 = 0;

            uchar PWM_T2 = 0;

            uint i,m;

            void delay(uint z)

            {

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

            for(m=0;m110;m++);

            }

            void PWM_value_left(int pwm_set)

            {

            PWM_T1=pwm_set;

            }

            void PWM_value_right(int pwm_set)

            {

            PWM_T2=pwm_set;

            }

            void main(void)

            {

            bit flag = 1;

            uint n;

            TMOD=0x22;

            TH0=241;

            TH1=241;

            TL0=241;

            TL1=241;

            TR0=1;

            TR1=1;

            ET0=1;

            ET1=1;

            EA=1;

            P1=0xf0;

            delay(20);

            PWM_value_left(7);

            PWM_value_right(10);

            delay(100);

            PWM_value_left(8);

            PWM_value_right(9);

            delay(100);

            PWM_value_left(9);

            PWM_value_right(8);

            delay(100);

            PWM_value_left(10);

            PWM_value_right(7);

            }

            timer0() interrupt 1 using 2

            {

            static uint t ;

            t++;

            if(t==10)

            {

            t=0;

            p1_0=1;

            p1_1=0;

            }

            if(PWM_T1==t)

            P1=P10xfc;

            }

            timer1() interrupt 3

            {

            static uint t1 ;

            t1++;

            if(t1==10)

            {

            t1=0;

            p1_2=1;

            p1_3=0;

            }

            if(PWM_T2==t1)

            P1=P10xf3;

            }

            答:沒有主循環(huán),

            沒有等到中斷3

            程序運行一次就跑飛了!!!

            void main(void)

            {

            //...你的程序

            //在這里加 死循環(huán),等待中斷

            while(1)

            {

            ;

            }

            }

            而且,中斷響應(yīng)函數(shù)里必須要清中斷標(biāo)志位(你的沒有)!

            3、各位大俠幫我看一下我寫的51單片機C程序中斷有沒有問題,執(zhí)行中斷后不能繼續(xù)執(zhí)行主程序,注:P3.2口一直接

            注:P3.2口一直接地,程序如下:

            #include

            sbit dula=P2^6;

            sbit wela=P2^7;

            sbit d0=P1^0;

            sbit d1=P1^1;

            sbit d2=P1^2;

            sbit d3=P1^3;

            sbit d4=P1^4;

            sbit d5=P1^5;

            sbit d6=P1^6;

            sbit d7=P1^7;

            #define uchar unsigned char

            #define uint unsigned int

            uchar num;

            uchar code table[]={

            0x3f,0x06,0x5b,0x4f,

            0x66,0x6d,0x7d,0x07,

            0x7f,0x6f,0x77,0x7c,

            0x39,0x5e,0x79,0x71};

            void delay(uint z);

            void main()

            {

            EA=1;

            EX0=1;

            IT0=0;

            wela=1;

            P0=0xc0;

            wela=0;

            while(1)

            {

            for(num=0;num16;num++)

            {

            dula=1;

            P0=table[num];

            dula=0;

            delay(1000);

            }

            }

            }

            void delay(uint z)

            {

            uint a,b;

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

            for(b=110;b>0;b--);

            }

            void exter0() interrupt 0

            {

            uint c;

            for(c=0;c25000;c++);

            d0=0;

            for(c=0;c25000;c++);

            d0=1;

            for(c=0;c25000;c++);

            d1=0;

            for(c=0;c25000;c++);

            d1=1;

            for(c=0;c25000;c++);

            d2=0;

            for(c=0;c25000;c++);

            d2=1;

            for(c=0;c25000;c++);

            d3=0;

            for(c=0;c25000;c++);

            d3=1;

            for(c=0;c25000;c++);

            d4=0;

            for(c=0;c25000;c++);

            d4=1;

            for(c=0;c25000;c++);

            d5=0;

            for(c=0;c25000;c++);

            d5=1;

            for(c=0;c25000;c++);

            d6=0;

            for(c=0;c25000;c++);

            d6=1;

            for(c=0;c25000;c++);


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

            關(guān)鍵詞: 單片機 中斷問題 INT0信號

            評論


            相關(guān)推薦

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

            關(guān)閉