51單片機流水燈C語言源程序(源創) **************************************************************
文件名稱:flash_led.c
文件說明:流水燈C程序
編寫人員:Jerry Yang
編寫日期:2006年10月5日
程序說明:MCU采用AT89S51,外接12M晶振,P1口輸出
*************************************************************/
#include《reg51.h》 //51系列單片機定義文件
#define uchar unsigned char //定義無符號字符
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
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;
}
}
}
void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt《255;bt++);
}
/************************************************************
*89C51、S51單片機32個IO口流水燈測試程序
*Flash0、1、2、3分別對應單片機的P0、1、2、3四個口
*a程序對應流水燈從全滅到一個一個亮
*b程序對應流水燈從全亮到一個一個滅
*Author:大靈通
*2006-7-26 10:57,OK!
*************************************************************/
#include《reg51.h》
#include《intrins.h》
#include《absacc.h》
#define uchar unsigned char
#define uint unsigned int
#define TimeDelay 60000
void delay(uint n);
void Flash0a(void);
void Flash0b(void);
void Flash1a(void);
void Flash1b(void);
void Flash2a(void);
void Flash2b(void);
void Flash3a(void);
void Flash3b(void);
/************************************************************
*Function: 主函數
*parameter:
*Return:
*Modify:
*************************************************************/
void main(void)
{
while(1)
{
Flash1b();
Flash1a();
delay(TimeDelay);
delay(TimeDelay);
Flash0b();
Flash0a();
Flash2b();
Flash2a();
Flash1b();
Flash1a();
Flash3b();
Flash3a();
}
}
/************************************************************
*Function: 延時
*parameter:
*Return:
*Modify:
*************************************************************/
void delay(uint n)
{
while(n!=0)
{
n--;
}
}
void Flash0a(void)
{
uchar i;
uchar Temp;
Temp = 0x80;
for(i=0;i《8;i++)
{
P0 = ~Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P0 = 0xff;
}
void Flash0b(void)
{
uchar i;
uchar Temp;
Temp = 0x80;
for(i=0;i《8;i++)
{
P0 = Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P0 = 0;
}
void Flash1a(void)
{
uchar i;
uchar Temp;
P1 = 1;
Temp = 0x80;
for(i=0;i《8;i++)
{
P1 = ~Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P1 = 0xff;
}
void Flash1b(void)
{
uchar i;
uchar Temp;
P1 = 1;
Temp = 0x80;
for(i=0;i《8;i++)
{
P1 = Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P1 = 0;
}
void Flash2a(void)
{
uchar i;
uchar Temp;
P2 = 1;
Temp = 0x80;
for(i=0;i《8;i++)
{
P2 = ~Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P2 = 0xff;
}
void Flash2b(void)
{
uchar i;
uchar Temp;
P2 = 1;
Temp = 0x80;
for(i=0;i《8;i++)
{
P2 = Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P2 = 0;
}
void Flash3a(void)
{
uchar i;
uchar Temp;
P3 = 1;
Temp = 0x80;
for(i=0;i《8;i++)
{
P3 = ~Temp;
delay(TimeDelay);
Temp = Temp 》》 1;
}
P3 = 0xff;
}
void Flash3b(void)
{
uchar i;
uchar Temp;
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 *
;* Support Mb:020-34007281 E-mail:c51cn@163.com *
;* Create by :dengdewu http://www.c51.cn 更多例程請登陸網站 *
;* 網站單片機學習資料同步更新,敬請新老朋友隨時關注 *
;***************************************************************
ORG 0000H
LJMP MAIN
ORG 030H
MAIN:MOV P1,#0DBH ;11011011--0為亮,1為滅
ACALL DELAY
MOV P1,#06DH ;01101101
ACALL DELAY
MOV P1,#0B6H ;10110110
ACALL DELAY
AJMP MAIN
DELAY:MOV R7,#255 ;延時子程序
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
-
51單片機
+關注
關注
274文章
5702瀏覽量
123491 -
流水燈
+關注
關注
21文章
432瀏覽量
59692 -
程序
+關注
關注
117文章
3785瀏覽量
81004
發布評論請先 登錄
相關推薦
評論