/********************************************************************
* 创建人 : 金雨_FC云,2010年9月1日
* 版本号 : 1.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr P3M0 = 0xB2;
sfr P3M1 = 0xB1;
sfr P1M0 = 0x92;
sfr P1M1 = 0x91;
sbit LED_R=P3^5;
sbit LED_G=P3^7;
sbit LED_B=P1^0;
uchar set,setdat,jj,LD,tt;
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<100; j++);
}
void Time0_Init()
{
TMOD = 0x01;
IE = 0x82;
TH0 = 0xFF;
TL0 = 0xF8;
TR0 = 1; //初始化定时器
}
void Main(void)
{
P1M0=0xff;
P1M1=0x00;
P3M0=0xff;
P3M1=0x00;
P1=0x00;
P3=0x00;
Time0_Init();
while(1)
{
if(jj==0)
{
setdat++;
}
if(jj==1)
{
setdat--;
}
if(setdat==100)
{
jj=1;
tt++;
}
if(setdat==0)
{
jj=0;
tt++;
}
if(tt==2)
{
tt=0;
LD++;
if(LD==7)
{
LD=0;
}
}
Delay(30);
}
}
void Time0_Int() interrupt 1
{
TH0 = 0xFF;
TL0 = 0xF8;
set++;
if(set==100)
{
set=0;
}
switch(LD)
{
case 0: if(set<setdat)
LED_R = 1;
else
LED_R = 0;
break;
case 1: if(set<setdat)
LED_G = 1;
else
LED_G = 0;
break;
case 2: if(set<setdat)
LED_B = 1;
else
LED_B = 0;
break;
case 3: if(set<setdat)
{
LED_R = 1;
LED_G = 1;
}
else
{
LED_R = 0;
LED_G = 0;
}
break;
case 4: if(set<setdat)
{
LED_R = 1;
LED_B = 1;
}
else
{
LED_R = 0;
LED_B = 0;
}
break;
case 5: if(set<setdat)
{
LED_G = 1;
LED_B = 1;
}
else
{
LED_G = 0;
LED_B = 0;
}
break;
case 6: if(set<setdat)
{
LED_R = 1;
LED_G = 1;
LED_B = 1;
}
else
{
LED_R = 0;
LED_G = 0;
LED_B = 0;
}
break;
default:break;
}
}