标题:51单片机流水灯C语言源程序

来源:互联网 发布:集成电路查询软件 编辑:程序博客网 时间:2024/05/20 06:28
**************************************************************
文件名称:flash_led.c
文件说明:流水灯C程序
编写日期:2006年10月5日
程序说明:MCU采用AT89S51,外接12M晶振,P1口输出

*************************************************************/
#include//51系列单片机定义文件
#define ucharunsigned char //定义无符号字符
#define uintunsigned int //定义无符号整数
voiddelay(uint); //声明延时函数
voidmain(void)
uinti;
uchartemp; 
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp>>=1;
}
}
}
voiddelay(uint t) //定义延时函数
{
register uintbt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}



#include
#include
#include
#define ucharunsigned char
#define uintunsigned int
#defineTimeDelay 60000
voiddelay(uint n);
voidFlash0a(void);
voidFlash0b(void);
voidFlash1a(void);
voidFlash1b(void);
voidFlash2a(void);
voidFlash2b(void);
voidFlash3a(void);
voidFlash3b(void);

voidmain(void)
{
while(1)
{
Flash1b();
Flash1a();

delay(TimeDelay);
delay(TimeDelay);

Flash0b();
Flash0a();

Flash2b();
Flash2a();

Flash1b();
Flash1a();

Flash3b();
Flash3a();
}
}

voiddelay(uint n)
{
while(n!=0)
{
n--;
}
}
voidFlash0a(void)
{
uchari;
ucharTemp;
Temp =0x80;
for(i=0;i<8;i++)
{
P0 =~Temp;
delay(TimeDelay);
Temp = Temp>> 1;
}
P0 =0xff; 
}
voidFlash0b(void)
{
uchari;
ucharTemp;
Temp =0x80;
for(i=0;i<8;i++)
{
P0 =Temp; 
delay(TimeDelay);
Temp = Temp>> 1;
}
P0 =0;
}
voidFlash1a(void)
{
uchari;
ucharTemp;
P1 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P1 =~Temp;
delay(TimeDelay);
Temp = Temp>> 1;
}
P1 =0xff;
}
voidFlash1b(void)
{
uchari;
ucharTemp;
P1 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P1 =Temp; 
delay(TimeDelay);
Temp = Temp>> 1;
}
P1 =0;
}
voidFlash2a(void)
{
uchari;
ucharTemp;
P2 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P2 =~Temp;
delay(TimeDelay);
Temp = Temp>> 1;
}
P2 =0xff;
}
voidFlash2b(void)
{
uchari;
ucharTemp;
P2 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P2 =Temp; 
delay(TimeDelay);
Temp = Temp>> 1;
}
P2 =0;
}
voidFlash3a(void)
{
uchari;
ucharTemp;
P3 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P3 =~Temp;
delay(TimeDelay);
Temp = Temp>> 1;
}
P3 =0xff;
}
voidFlash3b(void)
{
uchari;
ucharTemp;
P3 =1;
Temp =0x80;
for(i=0;i<8;i++)
{
P3 =Temp; 
delay(TimeDelay);
Temp = Temp>> 1;
}
P3 =0;
}

===========
;P1口八个LED灯做三路流水灯实验
;***************************************************************
;* Date :2004.4.20 *
;***************************************************************
ORG0000H
LJMPMAIN
ORG030H
MAIN:MOVP1,#0DBH ;11011011--0为亮,1为灭
ACALLDELAY
MOV P1,#06DH;01101101
ACALLDELAY
MOV P1,#0B6H;10110110
ACALLDELAY
AJMPMAIN 
DELAY:MOVR7,#255 ;延时子程序
D1: MOVR6,#255
D2: DJNZR6,D2
DJNZR7,D1
RET
END


本文引用通告地址:http://tvb2058.spaces.eepw.com.cn/articles/trackback/item/37543
0 0
原创粉丝点击