;V-1 ;Compileren met Crownhill Proton+ PIC Basic compiler. ;Dit programma geeft op een (2*16) LC-Display (HD44780 4-line mode) de RC5 code. ;Als PORTB.0 hoog is worden systeem-naam en command-naam weergegeven als deze bekend is. ;Als PORTB.0 laag is wordt de IR-code van systeem, command en het togglebit weergegeven: ;Sys: de decimale- en de binaire- systeem waarde ;Com: de decimale- en de binaire- commando waarde ;Groene LED: Infrarood ontvangst. ;Gele LED: Geen RC5 of glitch. ;Rode LED: Geen RC5 code of slechte ontvangst. ;Toggle LED: RC5 toggle waarde (0 of 1). ;Nieuwere systemen zoals DVD werken met RC6 code's en worden daarom niet herkend. ;De RC5 lijst is niet compleet vanwege vele 'dialecten', deze zijn zelf bij te voegen. ;Er is dan wel een PICmicro met meer geheugen (> 4k) nodig. ;Let op: De TSOP1736 (= 36kHz ontvanger) moet via een weerstand van 470 Ohm aan ; +5V aangesloten worden en over de + en - pin een tantaal van minimaal 0,1uF ! ; Aansluiting TSOP1736: || | ; -+ s ; PIC16F648A: +--v--+ ; LED Groen <[ ]> LED Rood ; LED Toggle <[ ]> LED geel ; Signaal van de TSOP1736 >[ ] ; Via weerstand aan +5V ---[33k]--- >[ ] ; GND [ ] +5V ;Openlaten=Namen/Verbind met GND=Codes >[ ]> DB7 LCD ; [ ]> DB6 LCD ; LCD EN <[ ]> DB5 LCD ; LCD RS <[ ]> DB4 LCD ; +-----+ ;There is an English version too / Er is ook een Engelse versie ;www.picbasic.nl / Frits Kieftenbelt, Raalte, Netherlands (Frizie) DEVICE 16F648A ;= 16F628A met 2x zoveel geheugen i.v.m. de vele tekst CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF ;Geen kristal ;XTAL 4 ;Bij gebruik van een kristal een 4MHz type gebuiken (zijn tijden op gebaseerd) ALL_DIGITAL TRUE ;Normale aliases (constanten) SYMBOL Glitch = 52 ;Max 255: Onderdrukken storingstijd (glitches) SYMBOL LED_Tijd = 500 ;mSec: Error LED's brand tijd (mSec) SYMBOL Ok = 50 ;Max 255: Controletijd of RC5 code goed wordt ontvangen ;Logische aliases (constanten) SYMBOL AAN = 0 ;Omgekeerd ON SYMBOL FALSE = 0 SYMBOL OFF = 0 SYMBOL ON = 1 SYMBOL TRUE = 1 SYMBOL UIT = 1 ;Omgekeerd OFF ;Poort aliases SYMBOL LED_Geel = PORTA.0 ;LED's via 1k weerstand aansluiten tussen PORT en GND SYMBOL LED_Rood = PORTA.1 SYMBOL LED_Groen = PORTA.2 SYMBOL LED_Toggle = PORTA.3 SYMBOL IR_Ontvanger= PORTA.4 ;TSOP1736 SYMBOL BijNaam = PORTB.0 ;Als hoog dan Systeem-naam en Command-naam weergeven, anders de IR-code ; 76543210 TRISA = %11110000 TRISB = %11111111 PORTB_PULLUPS ON ;BYTE DIM Command AS BYTE DIM CommandOud AS BYTE DIM Systeem AS BYTE DIM SysteemOud AS BYTE DIM BD1 AS BYTE ;Byte Dummy ;BIT DIM BijNaamOud AS BIT ;Als er wordt omgeschakeld tussen code- en tekst-mode zou bij dezelfde RC5 code de LCD niet worden ge-updated DIM ToggBit AS BIT DIM Waarde AS BIT ;Argument voor subroutine "BitOphalen" DIM ID1 AS BIT ;bIt Dummy CLEAR DELAYMS 500 ;LC-Display stabilisering CLS: PRINT "RC5 Namen NL V-1" ;Programma naam en versie ;PRINT AT 2,1,"www.picbasic.nl" niet mogelijk vanwege geheugen tekort GOTO Start ;Spring over de subroutines ;Subroutines BitOphalen: Waarde = IR_Ontvanger ;Maak Waarde 0 of 1 afhankelijk van ontvangen IR code BD1 = 0 WHILE IR_Ontvanger = Waarde AND BD1 < Ok;Niveau moet binnen een bepaalde tijd veranderen INC BD1 WEND IF Ok = BD1 THEN ErrorOntvangst ;Niet binnen de tijd een niveau-verandering DELAYUS 1100 ;950 - 1600 RETURN ;Hoofdprogramma Start: LED_Groen = OFF LED_Geel = OFF LED_Rood = OFF BijNaamOud = BijNaam BD1 = 0 WHILE IR_Ontvanger = 1 WEND ;Wacht op ontvangst WHILE IR_Ontvanger = 0 AND BD1 < Glitch INC BD1 WEND IF BD1 < Glitch THEN GOTO ErrorGlitch CommandOud = Command ;Bewaar oude waarden voor herstel in geval van een error SysteemOud = Systeem LED_Groen = ON ;Een IR signaal ontvangen DELAYUS 500 ;200 - 825; Header van RC5 vermijden GOSUB BitOphalen Command.6 = Waarde ^ 1 ;Extended bit GOSUB BitOphalen ToggBit = Waarde GOSUB BitOphalen Systeem.4 = Waarde GOSUB BitOphalen Systeem.3 = Waarde GOSUB BitOphalen Systeem.2 = Waarde GOSUB BitOphalen Systeem.1 = Waarde GOSUB BitOphalen Systeem.0 = Waarde GOSUB BitOphalen Command.5 = Waarde GOSUB BitOphalen Command.4 = Waarde GOSUB BitOphalen Command.3 = Waarde GOSUB BitOphalen Command.2 = Waarde GOSUB BitOphalen Command.1 = Waarde GOSUB BitOphalen Command.0 = Waarde IF Systeem <> SysteemOud OR Command <> CommandOud OR BijNaam <> BijNaamOud THEN ;Zonder deze regel knippert het LCD tijdens ontvangst (door CLS) CLS IF BijNaam = TRUE THEN SELECT CASE Systeem CASE 0: PRINT "TV" CASE 1: PRINT "TV2" CASE 2: PRINT "Teletext" CASE 3: PRINT "Video VD" CASE 4: PRINT "Video LV1" CASE 5: PRINT "VCR1" CASE 6: PRINT "VCR2" CASE 8: PRINT "SAT" CASE 9: PRINT "Camera" CASE 10: PRINT "SAT2" CASE 12: PRINT "CDV" CASE 13: PRINT "Camcorder" CASE 16: PRINT "Versterker" CASE 17: PRINT "Tuner" CASE 18: PRINT "Tape" CASE 19: PRINT "Voorversterker" CASE 20: PRINT "CD" CASE 21: PRINT "Pick-up" CASE 23: PRINT "Digitale tape" ;DAT, MD, DCC CASE 26: PRINT "CDR" CASE 29: PRINT "Verlichting" CASE 30: PRINT "Verlichting 2" CASE 31: PRINT "Telefoon" CASE ELSE: PRINT "Sys:", DEC Systeem END SELECT CURSOR 2,1 SELECT CASE Command CASE 0 TO 9: PRINT "Toets ", DEC Command CASE 10: PRINT "-/--" CASE 11: SELECT CASE Systeem CASE 0: PRINT "C/P" ;TV CASE 5, 6: PRINT "C/P / Select" ;VCR 1 & 2 CASE 20,23:PRINT "Time" ;CD, DCC END SELECT CASE 12: PRINT "Stand-by" CASE 13: PRINT "Mute" CASE 14: SELECT CASE Systeem CASE 0: PRINT "Voorkeur" ;TV CASE 5, 6: PRINT "Tracking" ;VCR 1 & 2 END SELECT CASE 15: PRINT "Info" CASE 16: PRINT "Volume +" CASE 17: PRINT "Volume -" CASE 18: PRINT "Helderheid +" CASE 19: PRINT "Helderheid -" CASE 20: PRINT "Kleur +" CASE 21: PRINT "Kleur -" CASE 22: PRINT "Bass +" CASE 23: PRINT "Bass -" CASE 24: PRINT "Treble +" CASE 25: PRINT "Treble -" CASE 26: PRINT "Balans R" CASE 27: PRINT "Balans L" CASE 28 SELECT CASE Systeem CASE 20: PRINT "Shuffle" ;CD CASE 23: PRINT "Repeat" ;DCC END SELECT CASE 29: SELECT CASE Systeem CASE 5, 6: PRINT "Timer" ;VCR 1 & 2 CASE 20: PRINT "Repeat" ;CD END SELECT CASE 30: SELECT CASE Systeem CASE 5, 6: PRINT "Record mode" ;VCR 1 & 2 CASE 17: PRINT "Search +" ;Tuner END SELECT CASE 31: SELECT CASE Systeem CASE 5, 6: PRINT "Fast reverse 1" ;VCR 1 & 2 CASE 17: PRINT "Search -" ;Tuner END SELECT CASE 32: PRINT "Programma +" CASE 33: PRINT "Programma -" CASE 34 SELECT CASE Systeem CASE 0: PRINT "P