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

標(biāo)題: 這個單片機(jī)程序為什么每一次定時器會讓LED增加? [打印本頁]

作者: 108880802    時間: 2020-2-23 11:26
標(biāo)題: 這個單片機(jī)程序為什么每一次定時器會讓LED增加?
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define led P2

  4. sbit k1=P3^2;
  5. sbit lsa=P2^2;
  6. sbit lsb=P2^3;
  7. sbit lsc=P2^4;
  8. sbit beep=P1^5;

  9. typedef unsigned int u16;
  10. typedef unsigned char u8;

  11. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,                  
  12.                                         0x08,0x37,0x08,0x37};

  13. void delay(u16 i)
  14. {
  15.         while(i-- );
  16. }

  17. void Int0Init()
  18. {
  19.         IT0=1;
  20.         EA=1;
  21.         EX0=1;
  22. }

  23. void Timer0Init()
  24. {
  25.         TMOD|=0X01;
  26.         TH0=0XFA;
  27.         TL0=0X00;
  28.         ET0=1;
  29.         EA=1;
  30.         TR0=1;
  31. }

  32. void yu()
  33. {
  34.         u8 i;
  35.         led=0xfe;
  36.         while(1)
  37.         {
  38.                 for(i=0;i<7;i++)
  39.                 {
  40.                         led=_crol_(led,1);
  41.                         delay(50000);
  42.                 }
  43.                 for(i=0;i<7;i++)
  44.                 {
  45.                         led=_cror_(led,1);
  46.                         delay(50000);
  47.                 }
  48.         }
  49. }

  50. void main()
  51. {
  52.         while(1)
  53.         {        
  54.                 Int0Init();
  55.                 Timer0Init();
  56.                 yu();
  57.         }        
  58. }

  59. void Int0() interrupt 0
  60. {
  61.         delay(1000);
  62.         if(k1==0)
  63.         {
  64.                  u8 p;
  65.                 for(p=0;p<10;p++)
  66.                 {
  67.                         lsa=1;lsb=1;lsc=1;
  68.                         P0=smgduan[p];
  69.                         delay(10000);
  70.                         P0=0x00;
  71.                 }
  72.         }
  73. }

  74. void Timer0() interrupt 1
  75. {
  76.         static u16 i;
  77.         TH0=0XFA;
  78.         TL0=0X00;
  79.         i++;
  80.         if(i==1000)
  81.         {
  82.                 i=0;
  83.                 for(i=0;i<10;i++)
  84.                 {
  85.                         lsa=1;lsb=1;lsc=0;
  86.                         P0=smgduan[i];
  87.                         delay(10000);
  88.                         P0=0x00;
  89.                 }
  90.         }
  91. }
復(fù)制代碼

作者: xuyaqi    時間: 2020-2-23 13:15
這一段程序使數(shù)碼管從0顯示到9:
for(i=0;i<10;i++)
                {
                        lsa=1;lsb=1;lsc=0;
                        P0=smgduan[i];
                        delay(10000);
                        P0=0x00;
                }
作者: 108880802    時間: 2020-2-23 14:23
xuyaqi 發(fā)表于 2020-2-23 13:15
這一段程序使數(shù)碼管從0顯示到9:
for(i=0;i

但是他執(zhí)行后,有一顆LED自動進(jìn)入主函數(shù)了,
作者: xuyaqi    時間: 2020-2-23 14:41
中斷執(zhí)行完后肯定重新返回主程序!坝幸活wLED自動進(jìn)入主函數(shù)了”這句我不明白。
作者: 108880802    時間: 2020-2-23 15:47
xuyaqi 發(fā)表于 2020-2-23 14:41
中斷執(zhí)行完后肯定重新返回主程序。“有一顆LED自動進(jìn)入主函數(shù)了”這句我不明白。

就是回到主函數(shù)后,他會由原來的只亮一顆LED燈,增加至倆顆
作者: wulin    時間: 2020-2-24 09:53
樓主把P2的3個端口作數(shù)碼管位驅(qū)動在中斷里運行,又把P2的8個端口作流水燈在主程序中運行,又沒有按端口復(fù)用來編程,不亂套才怪呢?




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