求单片机c51的C语言编程:设当开关为1时,控制2个led交替闪烁,闪烁时间为5秒
答案:2 悬赏:70
解决时间 2021-03-12 13:24
- 提问者网友:时间却是纷扰
- 2021-03-11 12:46
闪烁时间由定时器实现,求大神们帮我想想c语言怎么写!!谢谢谢谢
最佳答案
- 二级知识专家网友:萌萌哒小可爱
- 2021-03-11 13:07
uchar a=0;
void main()
{
TMOD=0x01;
TL0=(65536-50000)%256;//定时50ms
TH0=(65536-50000)/256;
ET0=1;
EA=1;
TR0=1;
while(key==1)
{
if(a<100)//50*100=5000ms 即5S
{
led1=0;
led2=1;
}
else//5-10秒,灯变换状态
{
led1=1;
led2=0;
}
}
}
void timer0() interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
a++;
if(a==200) a=0;
}
void main()
{
TMOD=0x01;
TL0=(65536-50000)%256;//定时50ms
TH0=(65536-50000)/256;
ET0=1;
EA=1;
TR0=1;
while(key==1)
{
if(a<100)//50*100=5000ms 即5S
{
led1=0;
led2=1;
}
else//5-10秒,灯变换状态
{
led1=1;
led2=0;
}
}
}
void timer0() interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
a++;
if(a==200) a=0;
}
全部回答
- 1楼网友:放肆的依賴
- 2021-03-11 13:41
用c51是多么简单的事情啊。你的每个灯的顺序不说。不好写。
思路这样的:
sbit led1=p1^0;
~~~
把所有的灯都定一下。
void delay(int ms)
{
int x,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
一个nms的延迟,要求是12m的晶振。
void main()
{
while(1)
{
led1=0;
delay(1000);
led1=1;
里面随便写了。
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯