標(biāo)題: 單片機(jī)中斷系統(tǒng)控制流水、跑馬燈 [打印本頁]

作者: 進(jìn)擊的小伙伴。    時(shí)間: 2020-3-27 17:05
標(biāo)題: 單片機(jī)中斷系統(tǒng)控制流水、跑馬燈
  1. #include<AT89X52.H>
  2. void DelayMs(unsigned int n);
  3. void DelayMs(unsigned int n)
  4. {
  5.         static unsigned int i;
  6.         while(n--)
  7.         {
  8.                 for(i=0;i<89;i++);
  9.         }
  10. }
  11. unsigned char LEDState=0;
  12. int main()
  13. {
  14.         unsigned char j;
  15.         IT0=1;//下降沿觸發(fā)中斷
  16.         EX0=1;//INT中斷允許
  17.         EA=1;//總中斷允許
  18.         PX0=1;//INT0中斷優(yōu)先級(jí)為低級(jí)
  19.        
  20.         IT1=1;//下降沿觸發(fā)中斷
  21.         EX1=1;//INT中斷允許
  22.         PX1=1;//INT0中斷優(yōu)先級(jí)為低級(jí)
  23.        
  24.         while(1)
  25.         {
  26.                 /*if(P1_0==0)//按鍵按下
  27.                         {
  28.                                 DelayMs(10);
  29.                                 //等待按鍵抬起,直到按鍵抬起為止
  30.                                 while(P1_0==0);
  31.                                 //消抖
  32.                                 DelayMs(10);//按鍵抬起以后做的事
  33.                                 LEDState=(LEDState+1)%5;
  34.                         }
  35.                
  36.                 else if(P1_1==0)//按鍵按下 反向
  37.                         {
  38.                                 DelayMs(10);
  39.                                 //等待按鍵抬起,直到按鍵抬起為止
  40.                                 while(P1_1==0);
  41.                                 //消抖
  42.                                 DelayMs(10);//按鍵抬起以后做的事
  43.                                 LEDState=(LEDState+5-1)%5;       
  44.                         }
  45.                         */
  46.                
  47.                
  48.                
  49.                
  50.                   if(LEDState==0)//閃爍
  51.                 {
  52.                         P2=0X00;
  53.                         DelayMs(100);
  54.                         P2=~P2;
  55.                         DelayMs(100);
  56.                 }
  57.                 else if(LEDState==1)//上到下跑馬
  58.                 {
  59.                         for(j=0;j<8;j++)
  60.                         {
  61.                                 P2=~(1<<j);
  62.                                 DelayMs(100);
  63.                         }
  64.                 }
  65.                 else if(LEDState==2)//下到上跑馬
  66.                 {
  67.                         for(j=0;j<8;j++)
  68.                         {
  69.                                 P2=~(1<<(7-j));
  70.                                 DelayMs(100);
  71.                         }
  72.                 }
  73.                 else if(LEDState==3)//上到下流水
  74.                 {
  75.                         P2=0XFF;
  76.                         for(j=0;j<8;j++)
  77.                         {
  78.                                 P2=P2&(~(1<<j));
  79.                                 DelayMs(100);
  80.                         }
  81.                         for(j=0;j<8;j++)
  82.                         {
  83.                                 P2=P2|(1<<j);
  84.                                 DelayMs(100);
  85.                         }       
  86.                 }
  87.                 else if(LEDState==4)//下到上流水
  88.                 {
  89.                         P2=0XFF;
  90.                         for(j=0;j<8;j++)
  91.                         {
  92.                                 P2=P2&(~(1<<(7-j)));
  93.                                 DelayMs(100);
  94.                         }
  95.                         for(j=0;j<8;j++)
  96.                         {
  97.                                         P2=P2|(1<<(7-j));
  98.                                         DelayMs(100);
  99.                         }
  100.                 }
  101.         }
  102. }
  103.                

  104.                 void INT_0(void) interrupt 0
  105.                 {
  106.                         LEDState=(LEDState+1)%5;
  107.                 }
  108.                
  109.                
  110.                 void INT_1(void) interrupt 2
  111.                 {
  112.                         LEDState=(LEDState+5-1)%5;       
  113.                 }
復(fù)制代碼


中斷控制流水跑馬燈.zip

80.17 KB, 下載次數(shù): 11, 下載積分: 黑幣 -5






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