habe es mal so versucht.
geht relativ gut.
'Auwertung einer Drezahl mit einem CNY70
'Die LED des CNY70 wird an Protb.5 mit Timer2 gepulst
'am Transitor des CNY wird das Singnal mit einem RC Hochpaß aufbereitet und
'auf den INT0 (Portd.2) gegeben.
'Die Signale an Portd.2 werden während einer Torzeit(Timer0/Merker1) gezählt
'Liegt eine Frequenz an gab es während der Torzeit ca.6 Impulse
'Liegt eine Frequenz an wird hochgezählt und gewartet bis die Frequenz wieder weg ist.
'Liegt erneut eine Frequenz an wird wieder hochgezählt
$regfile = "m8adef.dat"
$crystal = 1000000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim Wert As Word 'Erkannte Impulse
Dim Zaehler As Word 'Impulse Frequenz zählen
Dim Merker As Bit 'Merker Torzeit abgelaufen
Dim Merker2 As Bit 'Frequenz Ja/Nein
Config Portb.5 = Output 'Ausgang LED CNY 70
Config Portd.2 = Input 'Impulseingang
Config Portb.1 = Output 'Anzeige-LED Frequenz erkannt
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portb.0
Config Lcd = 20 * 4
Cursor Off
Cls
Config Timer0 = Timer , Prescale = 256 'Torzeit Impulse
On Timer0 Torzeit
Enable Timer0
Config Timer2 = Timer , Prescale = 8 'LED Pulsen CNY70
On Timer2 Ledpulsen
Enable Timer2
Config Int0 = Rising 'Interrupt zum Frquenz zählen
On Int0 Eingangsimpuls
Enable Int0
Enable Interrupts
Do
If Merker = 1 Then Gosub Auswerten 'Auswert nach Torzeit Frequenz Ja/Nein '
Locate 1 , 1
Lcd Wert ; " " 'Anzeige der erkannten Impulse
Loop
End
Auswerten:
Merker = 0 'Torzeitmerker auf 0
If Zaehler > 3 And Merker2 = 0 Then 'Prüfung neuer Frequenzimpuls Ja/Nein bei dieser Torzeit ca.6 Impulse
Incr Wert 'Erkannte Impulse hochzälen
Portb.1 = 1 'Frequenz erkannt
Else
Portb.1 = 0 'Frequenz nicht erkannt
End If
If Zaehler > 3 Then
Merker2 = 1 'Frequenz erkannt
Else
Merker2 = 0 'keine Frequenz erkannt
End If
Zaehler = 0 'Zähler auf 0 für nächsten Durchgang
Return
Ledpulsen:
Timer2 = 130
Toggle Portb.5 'LED CNY70 pulsen
Return
Eingangsimpuls:
Incr Zaehler
Return
Torzeit:
Timer0 = 100 'Timer0 auf Startwert 100
Merker = 1 'Torzeit abgelaufen
Return
Lesezeichen