中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

        單片機(jī)中斷問題30例

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

        一、30例

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

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

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

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

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

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

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

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

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

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

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

        #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

        程序運(yùn)行一次就跑飛了!!!

        void main(void)

        {

        //...你的程序

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

        while(1)

        {

        ;

        }

        }

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

        3、各位大俠幫我看一下我寫的51單片機(jī)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)推薦

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

        關(guān)閉