STC89C54RD+单片机怎样编写这个程序:第一个灯亮1秒第二个灯亮2秒第三个灯亮5秒然后反向到第二个灯常亮。

2025-04-07 01:10:20
推荐回答(1个)
回答1:

#include

/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void delayus(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void delayms(unsigned int t)
{

while(t--)
{
//大致延时1mS
delayus(245);
delayus(245);
}
}
void main()
{
P1=0xff;//熄灭所有灯
delayms(2000);
P1=0xfe;//点亮第一个灯
delayms(1000);//延时一秒

P1=0xfd;//亮第二灯
delayms(2000);//延时两秒

P1=0xfb;//第三灯
delayms(5000);//延时5秒

while(1)//死循环,长亮第二灯
P1=0xfd;
}