⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.c

📁 三路PWM输出信号!模拟PWM输出信号控制LED自渐变
💻 C
📖 第 1 页 / 共 2 页
字号:

#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 + -