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

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機常見延時與中斷問題及解決方法

      單片機常見延時與中斷問題及解決方法

      作者: 時間: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

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

      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)測到是低電平,就觸發(fā)中斷

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

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

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

      4、我的單片機這個程序為什么不能完全執(zhí)行整個程序誰能告訴我!就是沒法執(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次 !可是就是不會跳到全亮全暗3次~~

      答:

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

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


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


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


      關(guān)鍵詞: 單片機 常見延時 中斷問題

      評論


      相關(guān)推薦

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

      關(guān)閉