I wish to build my own RGB LED colour controller that is based on the PIC16F630. I have a suitable circuit layout but lack the code for the IC. The circuit drives 3 MOSFETs to increase the power output to the RED,GREEN and BLUE LED's. The circuit has 6 momentary contact switches and one 3 way switch that will link to the chip and act as the control method. I need the code to do the following. When the 3 way switch is in the first position the controller becomes a RGB mixer where the 6 buttons become the + or - for the RGB. Each press of either a + or - will result in an increment jump of say 20 of a scale that goes from zero through to 100% brightness of the corresponding LED. I also want this to work that a quick press will notch up or down but a solid press ( longer than say 0.5 of a second) will result in the smooth flow up or down the scale of brightness output. When the 3 way switch is flipped to the other direction the controller becomes a automatic mood light controller that will cycle through millions of random colours. The 6 momentary contact buttons now become the control for Functions +/-, Speed +/- ( 10 scales and with the same moment or solid press functionality, default first selection to be in the middle of the scale)and Brightness +/- of ( same thing ie 10 increments and button reaction but default is 100% brightness and the scale goes down to 10% brightness only and not zero). The functions I require are [url removed, login to view] fade from one colour to the next 2. Pulse from one colour to the next ie the colour dims then changes gets brighter then dims changes etc etc. I require that when the selection switch is flipped from either RGB mode or auto that is will save the relevant last setting. ie I've mixed a lovely shade of blue in the RGB mode and want to save it for tomorrow evening so I flip the 3 way switch to Auto and power down the whole unit. When tomorrow arrives I select RGB and power up and recall my saved shade of blue. This is absolutely possible for the right person with the right skills. I can provide more information on request and am open to feedback regarding the best way to do achieve my goal. Thank you !