1.任务书
用51单片机控制一个发光二极管,打开单片机后LED亮。
2.分析
首先是考虑电路连接问题。单片机所有1/O 口都可以驱动发光二极管。设选用P2.0 来接发光二极管,所谓“闪亮”,就是点亮发光管后,过一段时间关闭,再过一段时间又点亮,重复。“过一段时间”是实现效果的关键。一是要 考虑程序中如何实现过一段时间亮过一段时间灭二是要考虑亮的时间多久怎么实现?当然是用“延时程序”。
单片机执行任何指令都是要消耗一定时间的, 虽然一条指 令用的时间很短,但是很多条指令用的时间累积起来就多了。延时就是用这样一种思想,让单片机反复地运行一些空指令来消耗时间,达到等待、延时的效果。单片机执行一条指令的时间是微秒级的,甚至1微秒都不到。如果要等待1秒钟,势必要重复写近1 00000条指令,这太可怕了!当然我们不会这么“老实”地写这么多条指令,而是用“循环”来实现。循环指令中只要设定好循环次数(循环变量),就可以控制延迟时间的长短。
3. while 循环
while是条件“真"循环指令。
格式:
while(条件 表达式)
{
程序语句组;
}
while指令执行流程是:当圆括号中的条件成立时,就一直执行 “程序语句组;”直到条件表达式为假
所以说当while(1)条件表达式直接为1的时候那程序接下来的日子就只能在这里停滞不前咯。
#includesbit LED=P2^0; //定义io口 #define uint unsigned int //宏定义 在后面的程序里面出现uint 就等于是unsigned int void delay(uint i){while(i--);}//执行空指令函数 void main() //主函数main { while(1) { LED=0;//打开led delay(10000);//延迟 LED=1;//关闭LED delay(10000);//延迟 } }
注意了我们这里LED接的是单片机的vcc 所以当我们给入低电平时就亮,高电平就灭。



