LED灯
1、点亮一个LED灯
2、LED闪烁
3、LED流水灯
法一:
#include <REGX52.H>
#include<intrins.h>
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
P2=0xfe; //1111 1110
Delay500ms() ;
P2=0Xfd; //1111 1101
Delay500ms();
P2=0xfb; //1111 1011
Delay500ms() ;
P2=0Xf7; //1111 0111
Delay500ms();
P2=0xef; //1110 1111
Delay500ms() ;
P2=0Xdf; //1101 1111
Delay500ms();
P2=0Xbf; //1011 1111
Delay500ms();
P2=0X7f; //0111 1111
Delay500ms();
}
法二:这个函数可以修改任意灯的延时时间,通过修改xms的值即可。
#include <REGX52.H>
#include<intrins.h>
void Delay1ms(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main()
{
P2=0xfe; //1111 1110
Delay1ms(500) ;
P2=0Xfd; //1111 1101
Delay1ms(500) ;
P2=0xfb; //1111 1011
Delay1ms(500) ;
P2=0Xf7; //1111 0111
Delay1ms(500) ;
P2=0xef; //1110 1111
Delay1ms(500) ;
P2=0Xdf; //1101 1111
Delay1ms(500) ;
P2=0Xbf; //1011 1111
Delay1ms(500)