C51单片机实行流水灯程序
//**
//*********************************************************************************************************
void vDelayChange(void) interrupt 2
{
if(Delay>=16)
//**
//*<函数功能>:当定时器0溢出时执行此函数,首先执行2个判断:*
//*(1)if判断是否改变灯的状态,可用于改变延时时间;*
//*(2)switch判断闪烁模式,根据不同模式对灯进行不同的通断。*
//*最后对定时器TH0,TL0重新赋值,溢出时间为50ms。*
//**
//*********************************************************************************************************
unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF};
unsigned char TAB[9]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//定义断码表。
unsigned char i=0,j=9;//数据选择计数。
case 2:
if(i>=4)
i=0;
else i++;
LEDPort=LED23_[i];
break;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式3,灯从中间往两边依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
case 3:
if(i<=0)
while(1);
}
//*********************************************************************************************************
//**
//*************************************定时器0中断函数*************************************
i=4;
else i--;
LEDPort=LED23_[i];
break;
case 4:
if(i<16)
i++;
else i=0;
LEDPort=LED4_[i];
break;
case 5:
if(i<7)
i=i+2;
else i=0;
LEDPort=LED56_[i];
break;
case 6:
if(i<7)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式1,灯从下往上依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
case 1:
if(i<=0)
i=8;
else i--;
LEDPort=LED01_[i];
break;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式2,灯从两边往中间依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//方式2,方式3灯开关数组。
unsigned char LED4_[16]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1f,0X3f,0X7f};//方式4
unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC};
case 8:
if(LEDPort==0xFF)
LEDPort=0x00;
else LEDPort=0xFF;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vModeChange(void) interrupt 0
{
if(Mode>7)
Mode=0;
else Mode++;
P2=TAB[Mode];
}
//*********************************************************************************************************
i++;
else i=0;
LEDPort=LED56_[i];
break;
case 7:
if(i>=7)
i=0;
else i++;
LEDPort=LED7_[i];
break;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<所有等以一定时间间隔同时闪烁。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include<reg51.h>
#define LEDPort P1
unsigned char LED01_[9]=
{0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,};
//方式0,方式1灯开关数组。
unsigned char LED23_[5]=
{0xFF,0x7E,0xBD,0xDB,0xE7};
//**
//*************************************外部中断1中断函数*************************************
//**
//*<函数功能>:当外部中断1产生下降沿信号时执行此函数,将闪灯时间从50ms,250ms,500ms,750ms循环切换。*
default:
break;
}
}Hale Waihona Puke else Count++;
TH0=0x3C;//重新给定时器赋值。
TL0=0xB0;//定时时间:50ms。
}
//*********************************************************************************************************
switch(Mode)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式0,灯从上往下依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>