我在上面改了一下,这样能实现七彩渐变吗?
#include<at89x52.h> #define red P1_2 #define green P1_3 #define blue P1_4
  #define a 1        //漸變速度控制; #define b 300 #define c 256
  #define uchar unsigned char #define uint unsigned int  uchar percent,light,times;//percent,times:占空比控制;light:控制漸亮漸滅 uint i,j,k,p1;
  bit  flag; void red_light(); void yellow_light(); void green_light(); void cyan_light(); void blue_light(); void purple_light(); void white_light(); void white_red(); void delay();//延時函數 void change(); void delay500ms();
  void pulse() interrupt 1 using 0 //計時器0中斷服務程式 {      TH0 = -b/c;     TL0 = -b%c;     if(times++<100)        {flag=1;}     else{          flag=0;} } void main() {      times = 0;     percent = 100;     light = 1;     flag=1;     TMOD = 0x01;     //計時器0工作在方式1;     TH0 = -b/c; //賦初值,不同的TH0和TL0值對應不同的調製頻率,而上面已說過,調製頻率不能太高,否則     TL0 = -b%c; //會達不到調節效果。     EA = 1;     ET0 = 1;     TR0 = 1;     red_light();     do     {        yellow_light();        green_light();        cyan_light();        blue_light();        purple_light();        white_light();        white_red();     }     while(1); }
 
  void red_light() {    if(flag==1)         {              red=1;              green=0;              blue=0;              delay();  //LED渐渐点亮              percent = percent+a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=0;              green=0;              blue=0;              delay();             }      else{           red=1;           green=0;           blue=0;           delay500ms();           times=0;          } }
  void yellow_light() {    if(flag==1)         {              red=1;              green=1;              blue=0;              delay();  //LED渐渐点亮              percent = percent+a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=1;              green=0;              blue=0;              delay();             }      else{           red=1;           green=1;           blue=0;           delay500ms();           times=0;          }
  }
  void green_light() {    if(flag==1)         {              red=1;              green=1;              blue=0;              delay();  //LED渐渐灭              percent = percent-a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=0;              green=1;              blue=0;              delay();             }      else{           red=0;           green=1;           blue=0;           delay500ms();           times=0;          } }
  void cyan_light() {    if(flag==1)         {              red=0;              green=1;              blue=1;              delay();  //LED渐渐点亮              percent = percent+a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=0;              green=1;              blue=0;              delay();             }      else{           red=0;           green=1;           blue=1;           delay500ms();           times=0;          } }
  void blue_light() {    if(flag==1)         {              red=0;              green=1;              blue=1;              delay();  //LED渐渐点亮              percent = percent-a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=0;              green=1;              blue=1;              delay();             }      else{           red=0;           green=0;           blue=1;           delay500ms();           times=0;          } }
  void purple_light() {    if(flag==1)         {              red=1;              green=0;              blue=1;              delay();  //LED渐渐点亮              percent = percent+a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=0;              green=0;              blue=1;              delay();             }      else{           red=1;           green=0;           blue=1;           delay500ms();           times=0;          } }
  void white_light() {    if(flag==1)         {              red=1;              green=1;              blue=1;              delay();  //LED渐渐点亮              percent = percent+a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=1;              green=0;              blue=1;              delay();             }      else{           red=1;           green=1;           blue=1;           delay500ms();           times=0;          } }
 
  void white_red() {    if(flag==1)         {              red=1;              green=1;              blue=1;              delay();  //LED渐渐灭              percent = percent-a;//調節percent值可以改變占空比,通過不同的占空比,輸出不同的電
               red=1;              green=0;              blue=0;              delay();             }      else{              red=1;              green=0;              blue=0;           delay500ms();           times=0;          } }
 
 
  void delay() {     for(i = 0;i<6576;i++); }  
  void delay500ms(void)
         {
         unsigned char i,j,k;
          for(i=15;i>0;i--)
          for(j=202;j>0;j--)
          for(k=81;k>0;k--);
         }
  烧进去试了一下,实现不了七彩渐变,请帮忙看看为什么不行呀? 
 |   
     
  
 |