欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機關于外部中斷0的一個程序 [打印本頁]

作者: mobaiqueen    時間: 2020-1-17 23:57
標題: 51單片機關于外部中斷0的一個程序
一個很簡單的中斷程序,就是數碼管0-7循環動態顯示,利用外部中斷0使小燈點亮,但是接線之后小燈不亮是什么原因(已經排除接線原因),不知道程序哪里出了問題..
#include<reg52.h>

typedef unsigned char u8;
typedef unsigned int u16;

sbit LED=P1^0;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u16 k;

u8 table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
            0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

void delay(u16 i)
{
   while(i--);
}   

void main()
{
   EA=1;
   EX0=1;
   IT0=0;
      for(k=0;k<8;k++)
      {
         switch(k)
         {
            case 0:LSA=0;LSB=0;LSC=0;break;
            case 1:LSA=1;LSB=0;LSC=0;break;
            case 2:LSA=0;LSB=1;LSC=0;break;
            case 3:LSA=1;LSB=1;LSC=0;break;
            case 4:LSA=0;LSB=0;LSC=1;break;
            case 5:LSA=1;LSB=0;LSC=1;break;
            case 6:LSA=0;LSB=1;LSC=1;break;
            case 7:LSA=1;LSB=1;LSC=1;break;
         }
         P0=table[k];              //動態數碼管是共陰的
         delay(1000000);
         P0=0x00;         //對P0進行清零,否則第二個數碼管會有第一個數碼管的重影
      }
}

void Init0() interrupt 0
{
   LED=0;
}


作者: ztzp    時間: 2020-1-18 01:23
電路圖都沒有怎么分析呢?
不知道你的LED接法,文字上也沒說明LED哪端接地,無法分析。
作者: wulin    時間: 2020-1-18 07:16
1.樓主程序沒有約束在主循環中運行,加while(1)。
2.外部中斷要采用IT0=1;//下降沿觸發。
3.錯誤使用延時函數:delay(1000000);
修改如下:
  1. #include<reg52.h>

  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. sbit LED=P1^0;

  5. sbit LSA=P2^2;
  6. sbit LSB=P2^3;
  7. sbit LSC=P2^4;

  8. u8 k;
  9. u8 table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
  10.             0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

  11. void delay(u16 i)
  12. {
  13.    while(i--);
  14. }   

  15. void main()
  16. {
  17.         EA=1;
  18.         EX0=1;
  19.         IT0=1;//下降沿觸發
  20.         while(1)
  21.         {
  22.                 P0=0x00;         //消隱
  23.                 switch(k)
  24.                 {
  25.                         case 0:LSA=0;LSB=0;LSC=0;break;
  26.                         case 1:LSA=1;LSB=0;LSC=0;break;
  27.                         case 2:LSA=0;LSB=1;LSC=0;break;
  28.                         case 3:LSA=1;LSB=1;LSC=0;break;
  29.                         case 4:LSA=0;LSB=0;LSC=1;break;
  30.                         case 5:LSA=1;LSB=0;LSC=1;break;
  31.                         case 6:LSA=0;LSB=1;LSC=1;break;
  32.                         case 7:LSA=1;LSB=1;LSC=1;break;
  33.                 }
  34.                 P0=table[k];//動態數碼管是共陰的
  35.                 k++;
  36.                 k%=8;
  37.                 delay(110);//延時1ms
  38.         }
  39. }

  40. void Init0() interrupt 0
  41. {
  42.    LED=~LED;//取反
  43. }
復制代碼

作者: 笑看天下    時間: 2020-1-18 09:32
建議初學者敲代碼前一定看懂別人的代碼,不要一上手就想著自己就來敲,然后敲不出不就跑來問,這種學習方式是不妥的。一個新的東西肯定有他的知識點,不去了解掌握你怎么憑空想的出來?學東西開始都是先模仿別人,再熟練,到融會慣通......




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1