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

<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ī)常見延時(shí)與中斷問題及解決方法

        單片機(jī)常見延時(shí)與中斷問題及解決方法

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

        #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、各位大俠幫我看一下我寫的51C程序中斷有沒有問題,執(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++);

        d7=0;

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

        d7=1;

        }

        答:

        IT0=0;//低電平觸發(fā),只要監(jiān)測(cè)到是低電平,就觸發(fā)中斷

        你P3.2一直接地,一直是低電平,那中斷就不斷的執(zhí)行,當(dāng)然回不到主程序中了。

        改成IT0=1;//下降沿觸發(fā),監(jiān)測(cè)到高電平到電平跳變,就觸發(fā)中斷

        就算P3.2一直接地,也只觸發(fā)一次,中斷執(zhí)行完了,就回到主程序中了。

        4、我的單片機(jī)這個(gè)程序?yàn)槭裁床荒芡耆珗?zhí)行整個(gè)程序誰能告訴我!就是沒法執(zhí)行3次亮暗的!

        2010-10-20 21:40 提問者:3865203bin3 | 懸賞分:10

        ORG 0000H

        AG:MOV A,#11111110B

        AG1:RL A

        MOV P0,A

        ACALL DELAY

        DJNZ R0,AG1

        ACALL DELAY

        MOV A,#11111111B

        MOV P1,A

        ACALL DELAY

        MOV P0,#00000000B

        ACALL DELAY

        MOV P0,#11111111B

        ACALL DELAY

        MOV P0,#00000000B

        ACALL DELAY

        MOV P0,#11111111B

        ACALL DELAY

        SJMP AG

        DELAY:MOV R3,#10

        D3:MOV R2,#200

        D1:MOV R1,#250

        D2JNZ R1,D2

        DJNZ R2,D1

        DJNZ R3,D3

        RET

        END

        我是想執(zhí)行完流水燈亮.就然后執(zhí)行全亮全暗3次 !可是就是不會(huì)跳到全亮全暗3次~~

        答:

        R0沒有賦初值!另外建議不要使用前2B個(gè)地址,因?yàn)?1中斷矢量就在這個(gè)空間里。建議從0030H開始。以下程序在keil4中仿真成功。

        51單片機(jī)相關(guān)文章:51單片機(jī)教程


        c語言相關(guān)文章:c語言教程


        晶振相關(guān)文章:晶振原理


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉