also bei dem code einfach an Int0 den Tsop1736 anschließen und dann per terminal die ausgaben anschauen?
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
Wie kann ich dann die empfangenen daten wieder sende per IR-Led?
Lesezeichen