上期回顾:
上篇文章我写了单片机零基础入门(2):点亮奇数位/偶数位LED灯,这篇文章实现LED灯闪烁:
单片机零基础入门(3):实现LED灯闪烁
一、需求分析:
一个LED灯闪烁,不就是:亮灭的过程吗?再仔细想想,是不是,亮1秒灭1秒??
那么,所有灯闪烁,不就是…000 0000—>1111 1111 的过程吗?有木有?是不是这样子?
0000 0000(点亮)—延迟1秒—>1111 1111(熄灭)---->循环??
二、代码实现:
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@12.000MHz 延时500ms
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
int main()
{
while(1)
{
/*所有灯亮为0*/
P2 = 0; //这里的0也是16进制的0x00
Delay500ms(); //所有灯亮
P2 = 0XFF;
Delay500ms(); //所有灯灭
}
return 0;
}
三、最后
有无发现,学到这里,发现单片机真的很简单,无非就是通过二进制转化为16进制进行赋值控制吗?so easy~
-----------------人生在勤,不索何获!-------------