Over the past two years I have spoken with several people with your same goal. I also have the same goal. As of yet I have not yet achieved this. The following is a summary of what I know of Using a PIC as a DMX receiver. Several people have talked about using a PIC chip for DMX Receiver. I have not yet spoken to anyone who has actually done this. Nor have I. My reasons are I am not an assembly language programmer. (but I am slowly learning.) Here is what I know. DMX receiving is harder than transmitting DMX. All of the designs that I know of in commercial products use a micro with an 8031 core (8051 etc.). All current designs that I know of use a UART on the chip. The last design that I know of that used an external UART was the colortran D192 Dimmer. A PIC running at 20MHz should be fast enough to bit bang a receiver, but you will have few instruction cycles left to do anything with. A 16C65 has a UART on the chip but you will have to run it at 16Mhz to get 250KbPS for DMX. You can't use 20MHz because Microchip now recommends that you do not use BRGH=1 which would be required for 250Kbps. This is true with all of the PICs with UARTS. The 88us break will cause a frame error in the UART. A frame error is not a reliable way to detect a break. It should be possible to detect the break by bit banging the input and then enabling the UART during the 4us mark after break. There is not enough memory on any current PIC to receive all 512 bytesof the packet with out using some type of external fast memory. It the device you are building only needs to look at a few DMX channels you should be able to do the following. Detect the break by bit banging the Rx pin. Make sure that the break is at least 88us long. wait for the mark after break. Enable the UART. Check the first byte make sure that it is a zero. If it is. Start your counter. Receive a byte. If it is an address that you want save the value. If it is not what you want, throw it away. Increment your counter. Check the next byte. Repeat until you have the addresses that you want. When you have all the values that you want. Do what ever processing you need to do with the information. Go back to your bit banging routine to detect the break of the next packet. For my application I wish to build some motor speed controllers (both DC AND stepper) that can use DMX as input. We use a lot of scenic projections for both rain and clouds. It would be nice to be able to dynamically change the speeds on the belts from the light board. I will be happy to discuss any of this with you or others. If you have any information please share it. Dennis Long Indiana University Opera Theater