一键多能(按键控制RGB渐变)
void timer(uint t)
{
uint n;
for(n=0;n { while(RC5==0) num=5; } } #include __CONFIG(0X1B4); #define uchar unsigned char #define uint unsigned int unsigned char a; unsigned char g,r,b,p,num; void delay(uint x) { uint c,d; for(c=x;c>0;c--) for(d=110;d>0;d--); } void timer(uint t) { uint n; for(n=0;n { while(RC5==0) num=5; } } void LED0_ON() { RC0=0; RC1=0; RC2=0; RC3=0; } void LED1_ON() { RC0=0; RC1=1; RC2=0; RC3=0; } void LED2_ON() { RC0=0; RC1=0; RC2=1; RC3=0; } void LED3_ON() { RC0=0; RC1=0; RC2=0; RC3=1; } void LED4_ON()//此渐变函数是无意中在网上发现的 { RC3=0; if(g!=0&&b==0) { g--; r++; } if(r!=0&&g==0) { r--; b++; } if(b!=0&&r==0) { b--; g++; } if(g+r+b!=240) { g=200; r=0; b=0; } for(a=0;a<10;a++) { if(g!=0) { RC0=0; timer(g); RC0=1; } if(r!=0) { RC1=0; timer(r); RC1=1; } if(b!=0) { RC2=0; timer(b); RC2=1; } } } void LED5_ON() { RC0=1; RC1=1; RC2=1; RC3=1; } void init() { TRISA=0b11111111; TRISC=0b11100000; ANSEL=0X00;//把RC1,RC2,RC3设置为普通I/O 或者中断输入,模拟输入时候ANSEL=0XFF CMCON=0X07;//比较器禁止 RC4=0; RC3=0; RC0=0; RC1=0; RC2=0; g=240;r=0;b=0; } void scan() { while(!RC5) { delay(5); p++; } if(p>10) { p=0; num++; if(num>5)num=0; } void main() { init(); while(1) { scan(); switch(num) { case 0:LED0_ON();break; case 1:LED1_ON();break; case 2:LED2_ON();break; case 3:LED3_ON();break; case 4:LED4_ON();break; case 5:LED5_ON();break; } }
程序代码如下:
一键多能按键控制RGB渐 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)