找回密码
 立即注册
首页 业界区 安全 流水灯代码实现

流水灯代码实现

巩芷琪 前天 09:11
  1. //流水灯左移
  2. //其中调用math.h文件中的pow函数
  3. #include <reg52.h>
  4. #include <math.h>
  5. sbit ADDR0 = P1 ^ 0;
  6. sbit ADDR1 = P1 ^ 1;
  7. sbit ADDR2 = P1 ^ 2;
  8. sbit ADDR3 = P1 ^ 3;
  9. sbit ENLED = P1 ^ 4;
  10. int main(void)
  11. {
  12.         int count;
  13.            ENLED = 0;
  14.     ADDR3 = 1;
  15.    
  16.         ADDR2 = 1;
  17.     ADDR1 = 1;
  18.     ADDR0 = 0;
  19.    
  20.         count = 0;
  21.         while (1)
  22.         {
  23.                 int j;
  24.                 float fl;
  25.                 int m;
  26.                 if (8 == count)
  27.                         count = 0;
  28.                 fl = pow(2, count);
  29.                 m = fl;
  30.                 P0 = 0xFF ^ m;
  31.                 for (j = 0; j < 9000; j++)
  32.                         ;
  33.                 count++;
  34.         }
  35. }          
复制代码
  1. //流水灯左移
  2. #include <reg52.h>
  3. sbit ADDR0 = P1 ^ 0;
  4. sbit ADDR1 = P1 ^ 1;
  5. sbit ADDR2 = P1 ^ 2;
  6. sbit ADDR3 = P1 ^ 3;
  7. sbit ENLED = P1 ^ 4;
  8. /*
  9. @func:求取2的m次幂
  10. @ret:返回2的m次幂的整型值
  11. */
  12. int POW(int m)
  13. {
  14.         int i;
  15.         int iRet;
  16.         iRet = 1;
  17.         for (i = 0; i < m; i++)
  18.         iRet = iRet * 2;
  19.         return iRet;               
  20. }  
  21. int main(void)
  22. {
  23.         int count;
  24.            ENLED = 0;
  25.     ADDR3 = 1;
  26.    
  27.         ADDR2 = 1;
  28.     ADDR1 = 1;
  29.     ADDR0 = 0;
  30.                
  31.         count = 0;
  32.         while (1)
  33.         {
  34.                 int j;
  35.                 if (8 == count)
  36.                         count = 0;
  37.                 P0 = 0xFF ^ POW(count);
  38.                 for (j = 0; j < 9000; j++)
  39.                         ;
  40.                 count++;
  41.         }
  42. }       
复制代码
  1. //流水灯右移
  2. #include <reg52.h>
  3. sbit ADDR0 = P1 ^ 0;
  4. sbit ADDR1 = P1 ^ 1;
  5. sbit ADDR2 = P1 ^ 2;
  6. sbit ADDR3 = P1 ^ 3;
  7. sbit ENLED = P1 ^ 4;
  8. int POW(int m)
  9. {
  10.         int i;
  11.         int iRet;
  12.         iRet = 1;
  13.         for (i = 0; i < m; i++)
  14.         iRet = iRet * 2;
  15.         return iRet;               
  16. }  
  17. int main(void)
  18. {
  19.         int count;
  20.            ENLED = 0;
  21.     ADDR3 = 1;
  22.    
  23.         ADDR2 = 1;
  24.     ADDR1 = 1;
  25.     ADDR0 = 0;
  26.                
  27.         count = 7;
  28.         while (1)
  29.         {
  30.                 int j;
  31.                 P0 = 0xFF ^ POW(count);
  32.                 for (j = 0; j < 9000; j++)
  33.                         ;
  34.                 if (0 == count)
  35.                         count = 8;
  36.         
  37.                 count--;
  38.         }
  39. }       
复制代码
  1. //流水灯左移到头接着右移,右移到头再左移
  2. #include <reg52.h>
  3. sbit ADDR0 = P1 ^ 0;
  4. sbit ADDR1 = P1 ^ 1;
  5. sbit ADDR2 = P1 ^ 2;
  6. sbit ADDR3 = P1 ^ 3;
  7. sbit ENLED = P1 ^ 4;
  8. int POW(int m)
  9. {
  10.         int i;
  11.         int iRet;
  12.         iRet = 1;
  13.         for (i = 0; i < m; i++)
  14.         iRet = iRet * 2;
  15.         return iRet;               
  16. }  
  17. int main(void)
  18. {
  19.         int count;
  20.         int iflag; //iflag = 0时,从右向左,iflag = 1时,从左向右
  21.            ENLED = 0;
  22.     ADDR3 = 1;
  23.    
  24.         ADDR2 = 1;
  25.     ADDR1 = 1;
  26.     ADDR0 = 0;
  27.                
  28.         count = 0;
  29.         iflag = 0;
  30.         while (1)
  31.         {
  32.                 int j;
  33.                 if (0 == iflag)
  34.                 {
  35.                         if (8 == count)//最后一个灯点亮后,开始点亮倒数第二个灯
  36.                         {
  37.                                 count = 6;
  38.                                 iflag = 1;
  39.                         }
  40.                 }
  41.                 else
  42.                 {
  43.                         if (0 == count)//第一个灯此时未点亮,故只改变方向后进行第一个灯的点亮
  44.                                 iflag = 0;
  45.                 }
  46.                 P0 = 0xFF ^ POW(count);
  47.                 for (j = 0; j < 9000; j++)
  48.                         ;
  49.                
  50.                 if (0 == iflag)
  51.                         count++;
  52.                 else
  53.                         count--;
  54.         }
  55. }       
复制代码
  1. //流水灯右移到头接着左移,左移到头再右移
  2. #include <reg52.h>
  3. sbit ADDR0 = P1 ^ 0;
  4. sbit ADDR1 = P1 ^ 1;
  5. sbit ADDR2 = P1 ^ 2;
  6. sbit ADDR3 = P1 ^ 3;
  7. sbit ENLED = P1 ^ 4;
  8. int POW(int m)
  9. {
  10.         int i;
  11.         int iRet;
  12.         iRet = 1;
  13.         for (i = 0; i < m; i++)
  14.         iRet = iRet * 2;
  15.         return iRet;               
  16. }  
  17. int main(void)
  18. {
  19.         int count;
  20.         int iflag; //iflag = 0时,从右向左,iflag = 1时,从左向右
  21.            ENLED = 0;
  22.     ADDR3 = 1;
  23.    
  24.         ADDR2 = 1;
  25.     ADDR1 = 1;
  26.     ADDR0 = 0;
  27.                
  28.         count = 7;
  29.         iflag = 1;
  30.         while (1)
  31.         {
  32.                 int j;
  33.                 if (0 == iflag)
  34.                 {
  35.                         if (8 == count)//最后一个灯点亮后,开始点亮倒数第二个灯
  36.                         {
  37.                                 count = 6;
  38.                                 iflag = 1;
  39.                         }
  40.                 }
  41.                 else
  42.                 {
  43.                         if (0 == count)//第一个灯此时未点亮,故只改变方向后进行第一个灯的点亮
  44.                                 iflag = 0;
  45.                 }
  46.                 P0 = 0xFF ^ POW(count);
  47.                 for (j = 0; j < 9000; j++)
  48.                         ;
  49.                
  50.                 if (0 == iflag)
  51.                         count++;
  52.                 else
  53.                         count--;
  54.         }
  55. }       
复制代码
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册