evo malo sam se zainteresirao za ove IR projekte i onda slucajno naletim na RC5IN komandu u Proton IDE-u koji koristi PICBASIC compiler, cool, ali avaj prvi put se igram sa ovim 12F629 kojeg dobih od kolege s posla, a kako sam jucer citav dan pokusavo "nacherat" ovu komandu da radi sa INTOSC-om, onda sam odustao. Ali ne lezi vraze sa externim oscc-om na 8 MHz radi perfektno!!!sorry za neke nelogicnosti u programu ali, brzina je moja vrlina, spretnost osobina to bi rek'o jedan moj drug...
Tsop 1738
evo i codeta za 12F629 i 16F877A
pa ko ima volje neka se malo igra i nadam se iskoristi ovo
Code: Select all
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 23/06/2010 *
'* Version : 1.0 *
'* Notes : GPIO.0 IZLAZ NA RELEJ *
'* : GPIO.2 TASTER *
'* : GPIO.1 RC5IN *
'* : GPI0.4 i 5 NA 8 MHZ KRISTAL *
'****************************************************************
'_________________________________________________________________
'podesenja
'_________________________________________________________________
Device 12F629
Xtal 8
CMCON=7' KOMPARATORI off
All_Digital = True
'*******************************************************************
Declare RC5In_Pin GPIO.1 'infrared sensor pin
'********************************************************************
' CONFIG ZA HS OSCILATOR, A ZA INTOSC NE RADI ?????
Reminders 0
Config CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_OFF, WDT_OFF, HS_OSC'INTRC_OSC_NOCLKOUT
'________________________________________________________________
'Deklaracija promjenjivih
'________________________________________________________________
Dim ir_ulaz As Word ' WORD variabla za zaprimanje podataka
Dim ukljuci As ir_ulaz.LowByte
Dim EEpromAdress As Byte 'eprom adresa za upis
Dim test As Word 'uporedjivach
Dim cnt As Byte 'brojach
Dim a As Byte 'brojach
Symbol ulaz = GPIO.2
'________________________________________________________________
'pocetene vrijednosti
'________________________________________________________________
EEpromAdress = 0
cnt=0
a=0
'________________________________________________________________
'Inicijalizacija
'________________________________________________________________
High GPIO.0
DelayMS 2000
Low GPIO.0
DelayMS 2000
'________________________________________________________________
'pregledaj eeprom ako ima sta idi na main ako ne idi na pripremu
'________________________________________________________________
provjera:
test.LowByte = ERead EEpromAdress 'iscitaj zapis iz eeproma sa adrese 0
If test.LowByte = $FF Then 'ako je FF pici dalje
GoSub eepromprogON
EndIf
'________________________________________________________________
'cekaj promjenu na rc5 ulazu
'________________________________________________________________
main:
While 1 = 1 ' petlja beskoncna
Repeat
a=0
While ulaz=1
Inc a
Toggle GPIO.0
DelayMS 1000
Wend
If a>=10 Then
GoSub eepromprogON
ElseIf a=1 And cnt=0 Then
High GPIO.0
cnt=cnt+1
ElseIf a=1 And cnt=1 Then
Low GPIO.0
cnt=0
EndIf
ir_ulaz = RC5In' Primanje signala sa TSOP1738
Until ir_ulaz.LowByte <> 255 ' Trazi-cekaj dok ne naleti valjano zaglavlje signala
If ir_ulaz.LowByte=test.LowByte And cnt=0 Then
High GPIO.0
DelayMS 800
cnt=cnt+1
ElseIf ir_ulaz.LowByte=test.LowByte And cnt=1 Then
Low GPIO.0
DelayMS 800
cnt=0
EndIf
Wend
'________________________________________________________________
'podprogram za programiranje uredjaja
'________________________________________________________________
eepromprogON:
High GPIO.0
Repeat
ir_ulaz.LowByte= RC5In ' Primanje signala sa TSOP1738
Until ukljuci<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
EWrite EEpromAdress , [ ir_ulaz.LowByte ]
test.LowByte = ERead EEpromAdress
Low GPIO.0
Return
Code: Select all
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 07/06/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'_________________________________________________________________
'podesenja
'_________________________________________________________________
Device = 16F877A
CMCON=7
'ADCON1 = 7
Xtal=8
Declare RC5In_Pin PORTC.7
LCD_DTPin = PORTB.0
LCD_RSPin = PORTB.4
LCD_ENPin = PORTB.5
LCD_Interface = 4 ' 4-bit Interfejsbuk
LCD_Lines = 2
LCD_Type = 0
LCD_CommandUs = 2000
LCD_DataUs = 50
'________________________________________________________________
'Deklaracija promjenjivih
'________________________________________________________________
Dim ir_ulaz As Word ' WORD variabla za zaprimanje podataka
Dim ukljuci As ir_ulaz.LowByte
Dim EEpromAdress As Byte 'epromarivach
Dim test As Word 'uporedjivach
Dim cnt As Byte 'brojach
Dim a As Byte 'brojach
Symbol ulaz = PORTA.4
'________________________________________________________________
'pocetne vrijednosti
'________________________________________________________________
EEpromAdress = 0
cnt=0
a=0
Cls
All_Digital = True ' Ucini sve pinove digitaljnim
Print At 1,1,"pozz..."
DelayMS 500
Cls ' Ociti LCD
'________________________________________________________________
'pregledaj eeprom ako ima sta idi na main ako ne idi na pripremu
'________________________________________________________________
provjera:
test.LowByte = ERead EEpromAdress 'iscitaj zapis iz eeproma sa adrese 0
If test.LowByte = $FF Then 'ako je FF pici dalje
Print At 1,1,"odo na podrrg"
Print At 2,1,Dec test.LowByte
DelayMS 200
Cls
GoSub eepromprogON
Print At 1,1,"vratih se iz pod"
DelayMS 200
Cls
test.LowByte = ERead EEpromAdress 'provjeri upis
Print At 1,1,"Uredjaj spreman"
Print At 2,1,Dec test.LowByte
DelayMS 200
Cls
EndIf
'________________________________________________________________
'cekaj promjenu na rc5 ulazu
'________________________________________________________________
main:
While 1 = 1 ' petlja beskoncna
Repeat
a=0
While ulaz=1
Inc a
Cls
Print At 1,1, Dec a
DelayMS 1000
Cls
Wend
If a>=10 Then
GoSub eepromprogON
ElseIf a=1 And cnt=0 Then
High PORTA.1
cnt=cnt+1
ElseIf a=1 And cnt=1 Then
Low PORTA.1
cnt=0
EndIf
Print At 1,1,"cekaj"
ir_ulaz = RC5In' Primanje signala sa TSOP1738
Until ir_ulaz.LowByte <>255 ' Trazi-cekaj dok ne naleti valjano zaglavlje signala
Cls
If ir_ulaz.LowByte=test.LowByte And cnt=0 Then
High PORTA.1
Print At 1,1,"u",Dec ir_ulaz.LowByte
Print At 2,1,Dec test.LowByte
DelayMS 1500
cnt=cnt+1
Cls
ElseIf ir_ulaz.LowByte=test.LowByte And cnt=1 Then
Low PORTA.1
Print At 1,1,"i", Dec ir_ulaz.LowByte
Print At 2,1,Dec test.LowByte
DelayMS 1500
cnt=0
Cls
EndIf
Wend
'________________________________________________________________
'podprogram za programiranje uredjaja
'________________________________________________________________
eepromprogON:
High PORTA.0
Print At 1,1,"izaberi tipku za"
Print At 2,1," kontrolu!"
Repeat
ir_ulaz = RC5In ' Primanje signala sa TSOP1738
Until ir_ulaz.LowByte<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
Cls
Print At 1,1,"Komanda:",Dec ukljuci," "
DelayMS 400
Cls
EWrite EEpromAdress , [ ir_ulaz.LowByte ]
Print At 1,1,"upisao sam se"
DelayMS 200
Cls
test.LowByte = ERead EEpromAdress
Low PORTA.0
Return