also irgendwie wird die Variable Zähler nicht hochgezählt: Am Anfang hab ich Zähler = 1 geschrieben und über RS232 wird immer Zähler2 gesendet....
Hat da einer eine Idee? Hier mal das Prog.:
Code:
'-------------------------------------------------------------------------------
'Konfiguration µC:
$regfile = "m8def.dat" 'AT-Mega8
$crystal = 3686400 'Quarz: 3.6864 MHz
$baud = 9600 'Baudrate der UART: 9600 Baud
'Analogmessung
Config Adc = Single , Prescaler = Auto , Reference = Avcc
'TIMER
On Timer1 Ontimer1overflow 'Timer1-Interruptroutine deklarieren
Config Timer1 = Timer , Prescale = 1024 '3686400Hz/1024=3600Hz
Enable Timer1
Timer1 = 61935 'Sofort Timer1-Überlauf (Bei 16 Bit: 65535+1=0)
Enable Interrupts
'-------------------------------------------------------------------------------
'Ein- Ausgänge:
DdrB = &B111111 '1 Ausgang, 0 Eingang = Pin PB5-0 als Ausgang
Ddrc = &B0000000 '1 Ausgang, 0 Eingang = Pin PC6-0 als Eingang
Ddrd = &B00000000 '1 Ausgang, 0 Eingang = Pin PD7-0 als Eingang
'-------------------------------------------------------------------------------
' Variablen
'-------------------------------------------------------------------------------
Dim Analog_in0 As Word '=0-1023 vom Analogeingang
'Timer
Dim Stunden As Byte
Dim Minuten As Byte
Dim Sekunden As Byte
'Speicherplätze
Dim Zähler As Word 'zum Werte hochzählen
Dim Wert(200) As Word 'speichern des eigendlichen Wertes
'-------------------------------------------------------------------------------
'Programm:
'-------------------------------------------------------------------------------
Do
Start Adc 'Starte analog Messung
Zähler = 1
'Analogeingänge Auslesen:
Analog_in0 = Getadc(0) 'Wert aus Analogeingang laden
'-------------------------------------------------------------------------------
'Werte Speichern:
If Sekunden = 0 Then
Toggle Portb.2 'Led umschalten zur kontrolle
Wert(zähler) = Analog_in0
Incr Zähler
Print "Zähler: " ; Zähler
End If
'-------------------------------------------------------------------------------
'Werte über RS232 senden:
' If Pinc.3 = 1 Then
' Toggle Portb.3 'Led umschalten zur kontrolle
' Zähler = 1 'Zähler zurücksetzen
' For Zähler = 1 To 200 Step + 1 'Zähler hochzählen
' Print "Wert " ; Zähler ; ": " ; Wert(zähler) 'und Wert senden
' Waitms 50
' Next
' End If
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'UHR einstellen:
'Minuten +
'If Pind.3 = 1 And Minuten <= 59 Then
'Minuten = Minuten + 1
'Waitms 300
'End If
'Stunden+
'If Pinc.2 = 1 And Stunden <= 23 Then
'Stunden = Stunden + 1
'Waitms 300
'End If
Loop
'-------------------------------------------------------------------------------
'Sprungmarken
'-------------------------------------------------------------------------------
Ontimer1overflow: 'Timer1-Interruptroutine
'Nächster Überlauf soll in einer Sekunde sein:
Timer1 = 61936 'Überlauf nach 65535, also: 65535+1-3600=61936
Incr Sekunden
If Sekunden >= 5 Then
Sekunden = 0
Incr Minuten
End If
If Minuten >= 60 Then
Minuten = 0
Incr Stunden
End If
If Stunden >= 24 Then
Stunden = 0
End If
Print "Zeit: " ; Stunden ; " : " ; Minuten ; " : " ; Sekunden ; " Uhr"
Print "Analog_in0: " ; Analog_in0 'Analog Eingangswert senden
Toggle Portb.0 'blink LED zum testen
Return
'Anzeige:
'Home Upper 'in die obere zeile gehen
' Cls : Lcd "Anzahl: " + Str(tuer_1_zaehler) 'Anzahl Türöffnungen
'Home Lower 'in die untere zeile gehen
'Lcd "Uhrzeit: " + Str(stunden) ; ":" + Str(minuten) ; ":" + Str(sekunden)
Return
Lesezeichen