also bei dem code einfach an Int0 den Tsop1736 anschließen und dann per terminal die ausgaben anschauen?
Wie kann ich dann die empfangenen daten wieder sende per IR-Led?Code:$crystal = 8000000 $regfile = "m8def.dat" $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space $baud = 38400 Ddrd.2 = 0 Portd.2 = 1 'PullUp wenn nötig Dim Flanke As Byte Dim Flanken_index As Byte Dim Befehl As Word Dim I As Byte 'Word sollte reichen, da nur 12 bit relevant sind Dim Ausgabe_flag As Byte Dim Flanken_array(40) As Byte Config Timer0 = Timer , Prescale = 8 'hier den Timer eintragen (8-bit) On Ovf0 Tim0_isr Enable Timer0 Const Timer0_reload = 100 '8000000/8/(100) entspricht 10Khz Load Timer0 , Timer0_reload 'Auflösung reicht und gefundene Werte entsprechen immer 100µs Config Int0 = Change 'externer interrupt, z.B. Int0 auf portd.2 oder ein PCInt On Int0 Int0_isr Enable Int0 Enable Interrupts Do If Ausgabe_flag = 1 Then Ausgabe_flag = 0 Print Befehl ; " " ; Bin(befehl) ; " " ; Flanken_index; For I = 1 To Flanken_index Print " " ; Flanken_array(i); Next I Print "" End If Loop End Tim0_isr: Load Timer0 , Timer0_reload If Flanke = 199 Then Ausgabe_flag = 1 'If Flanke = 199 And Flanken_index = 25 Then Ausgabe_flag = 1 If Flanke < 200 Then 'Kein Impuls für 20ms Incr Flanke 'bei jedem Überlauf um 1 erhöhen End If Return Int0_isr: 'RC Impuls erkannt If Flanke = 200 Then Flanken_index = 1 'start eines neuen Befehls Befehl = 0 Else Flanken_array(flanken_index) = Flanke If Flanken_index.0 = 0 Then 'speichert nur bei gerader Anzahl, also die Werte ~18 und ~42 Shift Befehl , Left If Flanke > 30 Then Befehl.0 = 1 'dann war es eine 1 End If If Flanken_index < 31 Then Incr Flanken_index End If Flanke = 0 Return







Zitieren

Lesezeichen