Hello Everyone. I made a simple IR transmitter & receiver. The receiver uses a low cost 38 KHZ IR receiver module that outputs the demodulated pulses without any external components. It is DIGIKEY P#: PNA4602M-ND. It works perfectly & I'm able to get 3 channels to work. The problem is that it is slow in responding. It uses the count command to determine which channel is being received. Sometimes you have to wait about a full second for the LED to light. It does the count routine 2 times to eliminate false triggering from room light. Can someone improve on this in a SIMPLE way? Possibly send serial data? I never sent serial data before - I don't have a clue on how to do this. Any help would be appreciated. I need about 10 different channels to respond immediately like a TV remote control. Here is the program for the transmitter & receiver:

'INFRARED TRANSMITTER USING PIC12F629
CMCON = 7 'comparators off
trisio = %00000000 'sets ALL PORTS AS OUTPUTS
GPIO = 0 'ALL LOW
DEFINE OSCCAL_1K 1 ' Set OSCCAL for 1K device
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_ON, BOD_ON, PWRT_ON, PROTECT_ON
X VAR BYTE
LET X = 000

START:
High GPIO.4 'MULTIPLE HIGH & LOW COMMANDS SLOW SQUARE WAVE
High GPIO.4 'GETTING 38KHZ WITH THIS SUBROUTINE
High GPIO.4
Low GPIO.4
Low GPIO.4
LET X= X + 001
IF X > 33 Then IROFF 'this limits on time of square wave 100 = 3ms
GoTo START ' works with 3 channels 100=CH1 66=CH2 33=CH3

IROFF:
LET X = 000
Pause 5 'this is actual off time 20=CH1 10=CH2 5=CH3
GoTo START

'INFRARED RECEIVER USING PIC 12F629
CMCON = 7 'comparators off
trisio = %00001000 'GPIO INPUT FROM IR RCVR
DEFINE OSCCAL_1K 1 ' Set OSCCAL for 1K device
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_ON, BOD_ON, PWRT_ON, PROTECT_ON
X VAR BYTE

START:
Low GPIO.0 'LED OFF

MEASURE:
High GPIO.4 'ON RECEIVER
Count GPIO.3, 100, X 'demodulated pulses fed to GPIO.3
IF X >= 003 AND X <= 005 Then MEASURE1
IF X >= 007 AND X <= 009 Then MEASURE2
IF X >= 015 AND X <= 017 Then MEASURE3
GoTo START
'I added a 2nd count routine to eliminate false triggering

MEASURE1:
Pause 50
Count GPIO.3, 100, X
IF X >= 003 AND X <= 005 Then LEDON1
GoTo MEASURE

MEASURE2:
Pause 50
IF X >= 007 AND X <= 009 Then LEDON2
GoTo MEASURE

MEASURE3:
Pause 50
IF X >= 015 AND X <= 017 Then LEDON3
GoTo MEASURE

LEDON1:
LET X= 0
High GPIO.0 'LED ON
Pause 1000 'LED ON 1 SECOND
Low GPIO.0
GoTo START

LEDON2:
LET X= 0
High GPIO.0
Pause 2000 'LED ON 2 SECONDS
Low GPIO.0
GoTo START

LEDON3:
LET X= 0
High GPIO.0
Pause 3000 'LED ON 3 SECONDS
Low GPIO.0
GoTo START