If Rc = 0 Then Portb.0 = 0 schreibe, dann geht Portb.0 auf low. Also kommt aus den Timer nicht mal 1 oder 2 raus
Wenn der PinB.4 beim Start 1 ist, dann ist Rc beim ersten Durchlauf noch 0 (so schnell ist der Timer nicht), damit wird PortB.0 auf 0 gesetzt und das war's dann, denn auf 1 geht er laut Deinem Code nicht mehr.
Probier mal folgendes:
Code:
$regfile = "attiny12.dat" ' Controller = ATtiny12
$crystal = 1200000 ' Takt 1MHz
$noramclear ' RAM nicht initialisieren
$tiny ' Stack nicht initialisieren
'$hwstack = 32 ' Stackinitialisierung wird durch $TINY unterdrückt
$swstack = 0 ' Software 0
$framesize = 0 ' Framesize = 0
'#################################################################################################################################
'#
'# Hardware initialisieren
'#
'#################################################################################################################################
Config Timer0 = Timer , Prescale = 64 ' 1,5mS x (1200000Hz / 64) = Schwellwert 28
Config Portb.0 = Output
Config Pinb.4 = Input
Portb.0 = 1
'#################################################################################################################################
'#
'# Variablen
'#
'#################################################################################################################################
Dim Rc As Iram Byte ' Variablen als IRAM definieren
'#################################################################################################################################
'#
'# Hauptprogramm
'#
'#################################################################################################################################
Do
'Geberweg des Senders Minimum = 65 / Maximum = 110 / Mitte = 87
If Pinb.4 = 0 Then
Bitwait Pinb.4 , Set 'Auf positive Flanke warten
Timer0 = 1 'Zaehler starten
Bitwait Pinb.4 , Reset 'Auf negative Flanke warten
Rc = Timer0
End If
If Rc > 20 Then
Portb.0 = 0
Else
Portb.0 = 1
End If
Loop
Lesezeichen