?? 11.c
字號:
#include <AT892051.H>
//#include <AT89C2051.H>
//#include <w77c32.h>
#define uchar unsigned char
#define uint unsigned int
//#define FULL_ON 255
//#define FULL_OFF 0
#define ON 1
#define OFF 0
void SYsInit(void);
void ucjianbian(void);
//void P_Init();
void All_Dimming();
//void R_G_B_Dimming(void);
//void Delay30s(uint Time);
uchar ucTime50us;
uchar PWMcounter;
uchar ucdot[6]; //pwm 控制;
uchar lightness[6];
uchar bhroad;
//bit mode_flag;
//sfr WDREST = 0xa6;
uchar k,counter0,counter1,counter2;
uchar Is_10mschange;
uchar Data_20mschange;
void main(void)
{
SYsInit();
while(1)
{
All_Dimming();
}
}
void SYsInit(void)//初始化函數;
{
uchar i;
ucTime50us=0;
Is_10mschange=0;
PWMcounter=128;
TH0=0xff;
TL0=0xea;
Data_20mschange=0;
// PMR=0X45;
TMOD=0x01;
counter0=2;
counter1=2;
counter2=2;
EA=1;
ET0=1;
// bhroad=0;
TR0=1;
k=0;
for(i=0;i<2;i++)
{
lightness[i]=0;
}
}
void Int_T0(void) interrupt 1 using 1 //t0定時中斷50us;at 11.0592mhz.
{
uchar i;
TH0=0xff;
TL0=0xea;
ucTime50us++;
if(ucTime50us>150)
{
ucTime50us=0;
Is_10mschange=1;
Data_20mschange++;
}
if( Data_20mschange>=250)
{
Data_20mschange=0;
}
PWMcounter--;
if( PWMcounter>0)
{
if(ucdot[0]>0){ ucdot[0]--; P1_7=ON; } else { P1_7=OFF; }
if(ucdot[1]>0){ ucdot[1]--; P1_6=ON; } else { P1_6=OFF; }
if(ucdot[2]>0){ ucdot[2]--; P1_5=ON; } else { P1_5=OFF; }
}
else
{
PWMcounter=128;
for(i=0;i<3;i++)
{
ucdot[i]=lightness[i]>>1;
}
}
}
void All_Dimming(void)
{
switch(k)
{
case 0:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0++;
counter1=0;
counter2=0;
if(counter0>=254)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 1: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 2:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0--;
counter1=0;
counter2=0;
if(counter0<=0)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 3: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 4:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0=0;
counter1++;
counter2=0;
if(counter1>=254)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 5: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 6:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0=0;
counter1--;
counter2=0;
if(counter1<=0)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 7: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 8:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0=0;
counter1=0;
counter2++;
if(counter2>=254)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 9: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 10:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0=0;
counter1=0;
counter2--;
if(counter2<=0)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 11: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 12:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0++;
counter1++;
counter2=0;
if(counter0>=254&counter1>=254)
{
k++;
}
}
lightness[0]= counter0;
lightness[1]= counter1;
lightness[2]= counter2;
}
break;
case 13: while(Data_20mschange<=10)
{
// REST_DOG();
}
Data_20mschange=0;
k++;
break;
case 14:if(Is_10mschange)
{
Is_10mschange=0;
if( Data_20mschange>=2)
{
Data_20mschange=0;
counter0--;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -