- //流水灯左移
- //其中调用math.h文件中的pow函数
-
- #include <reg52.h>
- #include <math.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- int main(void)
- {
- int count;
- ENLED = 0;
- ADDR3 = 1;
-
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
-
- count = 0;
- while (1)
- {
- int j;
- float fl;
- int m;
- if (8 == count)
- count = 0;
- fl = pow(2, count);
- m = fl;
- P0 = 0xFF ^ m;
- for (j = 0; j < 9000; j++)
- ;
- count++;
- }
- }
复制代码- //流水灯左移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- /*
- @func:求取2的m次幂
- @ret:返回2的m次幂的整型值
- */
- int POW(int m)
- {
- int i;
- int iRet;
- iRet = 1;
- for (i = 0; i < m; i++)
- iRet = iRet * 2;
- return iRet;
- }
- int main(void)
- {
- int count;
- ENLED = 0;
- ADDR3 = 1;
-
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
-
- count = 0;
- while (1)
- {
- int j;
- if (8 == count)
- count = 0;
- P0 = 0xFF ^ POW(count);
- for (j = 0; j < 9000; j++)
- ;
- count++;
- }
- }
复制代码- //流水灯右移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- int POW(int m)
- {
- int i;
- int iRet;
- iRet = 1;
- for (i = 0; i < m; i++)
- iRet = iRet * 2;
- return iRet;
- }
- int main(void)
- {
- int count;
- ENLED = 0;
- ADDR3 = 1;
-
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
-
- count = 7;
- while (1)
- {
- int j;
- P0 = 0xFF ^ POW(count);
- for (j = 0; j < 9000; j++)
- ;
- if (0 == count)
- count = 8;
-
- count--;
- }
- }
复制代码- //流水灯左移到头接着右移,右移到头再左移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- int POW(int m)
- {
- int i;
- int iRet;
- iRet = 1;
- for (i = 0; i < m; i++)
- iRet = iRet * 2;
- return iRet;
- }
- int main(void)
- {
- int count;
- int iflag; //iflag = 0时,从右向左,iflag = 1时,从左向右
- ENLED = 0;
- ADDR3 = 1;
-
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
-
- count = 0;
- iflag = 0;
- while (1)
- {
- int j;
- if (0 == iflag)
- {
- if (8 == count)//最后一个灯点亮后,开始点亮倒数第二个灯
- {
- count = 6;
- iflag = 1;
- }
- }
- else
- {
- if (0 == count)//第一个灯此时未点亮,故只改变方向后进行第一个灯的点亮
- iflag = 0;
- }
- P0 = 0xFF ^ POW(count);
- for (j = 0; j < 9000; j++)
- ;
-
- if (0 == iflag)
- count++;
- else
- count--;
- }
- }
复制代码- //流水灯右移到头接着左移,左移到头再右移
- #include <reg52.h>
- sbit ADDR0 = P1 ^ 0;
- sbit ADDR1 = P1 ^ 1;
- sbit ADDR2 = P1 ^ 2;
- sbit ADDR3 = P1 ^ 3;
- sbit ENLED = P1 ^ 4;
- int POW(int m)
- {
- int i;
- int iRet;
- iRet = 1;
- for (i = 0; i < m; i++)
- iRet = iRet * 2;
- return iRet;
- }
- int main(void)
- {
- int count;
- int iflag; //iflag = 0时,从右向左,iflag = 1时,从左向右
- ENLED = 0;
- ADDR3 = 1;
-
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
-
- count = 7;
- iflag = 1;
- while (1)
- {
- int j;
- if (0 == iflag)
- {
- if (8 == count)//最后一个灯点亮后,开始点亮倒数第二个灯
- {
- count = 6;
- iflag = 1;
- }
- }
- else
- {
- if (0 == count)//第一个灯此时未点亮,故只改变方向后进行第一个灯的点亮
- iflag = 0;
- }
- P0 = 0xFF ^ POW(count);
- for (j = 0; j < 9000; j++)
- ;
-
- if (0 == iflag)
- count++;
- else
- count--;
- }
- }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |