AT89C51 LED点亮程序
1、点亮一个灯 ,实现D1闪烁
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2^0;
void delay(u16 i)
{
while(i--);
}
int main()
{
while(1)
{
led=1;
delay(50000);
led=0;
delay(50000);
}
return 0;
}
2、LED流水灯(总线法)
#include<reg52.h>
#define led P2
void delay(int i)
{
while(i--);
}
int main()
{
int t,i;
t=10000;
while(1)
{
for(i=0;i<8;i++)
{
led=~(0x01<<i);
delay(t);
}
for(i=0;i<8;i++)
{
led=~(0x80>>i);
delay(t);
}
}
return 0;
}
3、LED流水灯(函数法)
#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define led P0
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i;
led=0x01;
while(1)
{
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(5000);
}
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(5000);
}
}
}
4、LED混合操作
#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define led P0
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i;
while(1)
{
led=~(0x01);
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(10000);
}
led=(0x01);
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(10000);
}
led=(0x01);
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(10000);
}
led=~(0x01);
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(10000);
}
led=0x55;
delay(30000);
led=~led;
delay(30000);
led=0x55;
delay(30000);
led=~led;
delay(30000);
led=0x00;
delay(30000);
led=~led;
delay(30000);
led=0x00;
delay(30000);
led=~led;
delay(30000);
}
}