标题:
小白请教一个单片机AT89C51的问题,两个LED轮流点亮500ms 求思路
[打印本页]
作者:
479674001
时间:
2020-3-5 21:44
标题:
小白请教一个单片机AT89C51的问题,两个LED轮流点亮500ms 求思路
他的要求是p0.0、p0.1相连的两个LED轮流点亮500ms,想了很久没想出来,大佬能给一个具体思路吗
作者:
lovexulu
时间:
2020-3-5 22:38
你好,轮流点亮,我理解为P0.0亮500ms然后熄灭,接着P0.1亮500ms然后熄灭,然后P0.0亮500ms。。。。。循环下去。那么转化成这么理解,P0.0输出-->延迟500ms-->P0.0停止输出-->P0.1输出-->延迟500ms-->P0.1停止输出。完成一循环,那么我把上面步骤放入循环体中不就可以了吗?授人与鱼不如授人与渔,还请你多多思考一下。
作者:
CZ1
时间:
2020-3-5 22:41
使用定时器计时,每500ms改变一次两个小灯状态。初始状态相反。
作者:
hantu
时间:
2020-3-5 22:51
while(1)
{
P0^0=~P0^0;
P0^1=~P0^0;
DelayMs(500); //延时500ms,这个子函数自己写吧
}
作者:
想进步要学习
时间:
2020-3-5 22:57
while(1)
{
LED1亮;
延时500ms;
LED1灭;
LED2亮;
延时500ms;
LED2灭;
}
你要这样子吗?
作者:
wulin
时间:
2020-3-6 07:59
这种逻辑功能可以有多种写法,仅举2例种供楼主参考。
#include "reg52.h"
sbit led1=P0^0;
sbit led2=P0^1;
void delay(unsigned int i)
{
while(i--);
}
void main()
{
led1=0;
delay(55500);
while(1)
{
led2=led1;
led1=~led1;
delay(55500);
}
}
#include "reg52.h"
void delay(unsigned int i)
{
while(i--);
}
void main()
{
P0=0xfe;
delay(55500);
while(1)
{
P0=P0<<1|0x01;
delay(55500);
P0=P0>>1|0x80;
delay(55500);
}
}
作者:
hghvhgv
时间:
2020-3-6 10:49
用延时函数就行
作者:
479674001
时间:
2020-3-6 12:11
lovexulu 发表于 2020-3-5 22:38
你好,轮流点亮,我理解为P0.0亮500ms然后熄灭,接着P0.1亮500ms然后熄灭,然后P0.0亮500ms。。。。。循环 ...
谢谢谢谢
作者:
479674001
时间:
2020-3-6 12:11
感谢帮助我的大佬,我就不一一回复了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1