请用C语言编写程序:利用定时器0实现LED7,LED8,LED9,LED10四个小灯每隔1s轮流亮一次,即四个小灯的流水灯。
时间: 2023-02-06 10:31:51 浏览: 217
8个led灯循环点亮程序c语言
5星 · 资源好评率100%
下面是使用 C 语言编写的程序示例,使用定时器 0 实现 LED7、LED8、LED9、LED10 四个小灯每隔 1s 轮流亮一次的效果:
```
#include <reg52.h>
#include <intrins.h>
sbit LED7 = P1^0;
sbit LED8 = P1^1;
sbit LED9 = P1^2;
sbit LED10 = P1^3;
void delay(unsigned int t)
{
while(t--);
}
void main()
{
int i = 0;
while(1)
{
switch(i)
{
case 0:
LED7 = 1;
LED8 = 0;
LED9 = 0;
LED10 = 0;
break;
case 1:
LED7 = 0;
LED8 = 1;
LED9 = 0;
LED10 = 0;
break;
case 2:
LED7 = 0;
LED8 = 0;
LED9 = 1;
LED10 = 0;
break;
case 3:
LED7 = 0;
LED8 = 0;
LED9 = 0;
LED10 = 1;
break;
}
i++;
if(i == 4)
i = 0;
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
TR0 = 1;
while(TF0 == 0);
TR0 = 0;
TF0 = 0;
}
}
```
在这段代码中,我们使用了一个正整数变量 `i` 来记录当前灯的状态,并使用 switch 语句来控制四个灯的状态。每次执行完一次 switch 语句之后,我们将 `i` 加 1,如果 `i` 大于等于 4,则将其设为 0。
为了实现延时,我们使用了一个名为 `delay` 的函数,该函数使用一个无符号整数参数 `t` 来控制延时的时间。在函数中,我们使用了一个 while 循环,每次循
阅读全文