#ifndef ___SmartRGB_H #define ___SmartRGB_H #define LED_1 asm("BSF LATC,0");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("BCF LATC,0");asm("NOP");asm("NOP");asm("NOP");asm("NOP") #define LED_0 asm("BSF LATC,0");asm("NOP");asm("BCF LATC,0");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP") /*enum c { red,green,blue,yellow,purple,white,greenblue,black };*/ #define red 0 #define green 1 #define blue 2 #define yellow 3 #define purple 4 #define white 5 #define greenblue 6 #define black 7 int last = 7; int SmartRGB(int color) { OSCCON=0b11110010; // 32MHz internal oscillator while(OSCSTATbits.HFIOFR==0 || OSCSTATbits.HFIOFL==0 || OSCSTATbits.HFIOFS==0); // asm("BANKSEL LATC"); if(color==red) { LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//red 255 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//green 0 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//green 0 } if(color==green) { LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//red 0 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//green 255 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//blue 0 } if(color==blue) { LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//red 0 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//green 0 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//blue 255 } if(color==yellow) { LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//red 255 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//green 255 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//blue 0 } if(color==purple) { LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//red 255 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//green 0 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//blue 255 } if(color==white) { LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//red 255 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//green 255 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//blue 255 } if(color==greenblue) { LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//red 0 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//green 255 LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;LED_1;//blue 255 } if(color==black) { LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//red 0 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//green 0 LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;LED_0;//blue 0 } last = color; OSCCON=0b01111010; // 16MHz internal oscillator return last; } #endif //SmartRGB_H