新手求助帖 想实现中断控制流水灯 从中间的两个灯开始同时左右移动

2019-07-15 09:16发布

  1. #include<AT89X52.h>
  2. #include<intrins.h>
  3. unsigned char count,i;
  4. unsigned char code TABLE[]={0xe7,0xdb,0xbd,0x7e} ;
  5. void main()
  6. {   
  7.     count=0;
  8.     TMOD=0x01;
  9.     TL0=0X00;
  10.     TH0=0X4C;
  11.     TR0=1;
  12.     EA=1;
  13.     ET0=1;

  14.     while(1)
  15.     {
  16.          for(i=0;i<4;i++)   
  17.         {
  18.             P1=TABLE[i];
  19.         }  
  20.          
  21.                           
  22.     }
  23. }
  24. void  t0interrupt(void) interrupt 1
  25. {
  26.             TL0=0X00;
  27.             TH0=0X4C;
  28.             count++;
  29.             if(count==20)
  30.             {   
  31.                 i=0;
  32.                 count=0;
  33.             }
  34.         
  35.                                                                               
  36. }
复制代码
  1. <img src="http://bbs.elecfans.com/forum.php?mod=image&aid=541492&size=300x300&key=591ba85311f98049&nocache=yes&type=fixnone" aid="attachimg_541492" alt="" border="0">大概就是想实现这个功能
复制代码

QQ图片20171125213956.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
余一痴
2019-07-15 20:59
人中狼 发表于 2017-11-26 16:20
定时器中断里要设一全局变量的标志,当定时到的时候这个标志有效。
在主程序的while里不用for,用if,同时设一个计算电灯序号的全局变量,if是判断定时器的标志是否有效,当定时器标志有效时,就可以执行P1=TABLE;其中的i就是电灯序号的全局变量,之后要判断这个变量是否超过了上限,这里是4个 ...

能给我  写一下吗   新手不大明白   先谢谢了

一周热门 更多>