" I have not failed. I've just found 10,000 ways that won't work". T.A.Edison
Code :
Code:
'
' PIC12F675: +--U--+
' +5V [ ] GND
' key 5 |---/--- >[ ]< ---/---| key 1
' key 4 |---/--- >[ ]< ---/---| key 2
' pull-up! key 3 |---/--- >[ ]>--[4K7]-- NPN Transistor, IR LED
@ DEVICE PIC12F675, intrc_osc, wdt_off, pwrt_on, mclr_off, bod_off
INCLUDE "MODEDEFS.BAS"
DEFINE OSC 4
CMCON=7
OPTION_REG.7=0
GPIO = %00000000 ' All outputs = 0 on boot
TRISIO = %00111011
WPU=%00111011
IOCB=%00111011
ANSEL=0
@ #DEFINE IRTX GPIO ; Define port to use for IR LED drive
@ #DEFINE PIN 2 ; Define port pin to use for IR LED
but1 var gpio.0
but2 var gpio.1
but5 var gpio.5
vplus CON 106 '// = ( 106 * 25uS) = 2650 uS burst
vminus CON 130 '// = ( 130 * 25us) = 3250 uS burst
vmute CON 202 '// = ( 202 * 25uS) = 5050 uS burst
vpuls CON 27 '// = ( 27 * 25uS) = 675 uS burst
delay var word
cycles var byte
acycles var byte
timeX var byte
GIE var intcon.7 ' global interrupt enable 1=on ; 0=off
gpie var intcon.3 ' port change interrupt enable 1=0n ; 0=off
gpif var intcon.0 ' port change interrupt flag bit
GIE=0
GPIE=1
'=========================================
main:
@ sleep
pause 100
IF but1=0 then ; VOLUME UP
acycles = vplus
delay = 2580
while but1=0
GOSUB IR_REMOTE
wend
ENDIF
IF but2=0 then ; VOLUME DOWN
acycles = vminus
delay = 3200
while but2=0
GOSUB IR_REMOTE
wend
ENDIF
IF but5=0 then ; MUTE
acycles = vmute
delay = 5000
while but5=0
GOSUB IR_REMOTE
wend
ENDIF
GPIF=0 'Clear port change interrupt flag
PAUSE 50
Goto Main
'=========================================
ir_REMOTE:
cycles=acycles
call Pulse
pauseus delay
cycles=vpuls ' ~ 670 uS
call Pulse
PAUSE 500
return
'=========================================
Pulse: '// Emits # of 39kHz bursts held in variable Cycles
ASM
bsf IRTX,PIN ; 1uS, LED=on
goto $+1 ; + 2uS = 3uS
goto $+1 ; + 2uS = 5uS
goto $+1 ; + 2uS = 7uS
goto $+1 ; + 2uS = 9uS
goto $+1 ; + 2uS = 11uS
goto $+1 ; + 2uS = 13uS
bcf IRTX,PIN ; 1uS, LED=off
goto $+1 ; + 2uS = 3uS
goto $+1 ; + 2uS = 5uS
goto $+1 ; + 2uS = 7uS
goto $+1 ; + 2uS = 9uS
decfsz _Cycles,f ; + 1uS = 10S
goto _Pulse ; + 2uS = 12uS
ENDASM
RETURN '// Return to Main
'=====================================================
Debounce :
For timeX= 1 to 50
Pause 5
next timeX
Return
'========================================
END
Of course, zero result ! Even ISIS say it's ok, my RC Blaupuntk don't react ! I have one original RC 10 remote (and receiver, of course) from one friend; works fine. But, if I try to transmit something with my schematic...zero result ! Any advice, please ?!?
Bookmarks