Tja da bin ich wieder...
also beim senden (sobald ich den Taster anPC3 drücke) wird immer nur Wert1 gesendet und die Kontroll LED die mit dem Taster an geht, geht nach dem loslassen nicht mehr aus und es wir fleißig weider gesendet...
als wenn der irgendwo festhängt.
vielleicht hat ja jemand eine Idee.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 Merker As Bit 'Werte speichern: damit nur um 1 hochgezählt wird Dim Wert(200) As Word 'speichern des eigendlichen Wertes '------------------------------------------------------------------------------- 'Programm: '------------------------------------------------------------------------------- Zähler = 1 Merker = 0 'Werte speichern: damit nur um 1 hochgezählt wird Do Start Adc 'Starte analog Messung 'Analogeingänge Auslesen: Analog_in0 = Getadc(0) 'Wert aus Analogeingang laden '------------------------------------------------------------------------------- 'Merker zurücksetzen If Sekunden = 1 Then Merker = 0 End If '------------------------------------------------------------------------------- 'Werte Speichern: If Sekunden = 0 And Merker = 0 Then Toggle Portb.2 'Led umschalten zur kontrolle Wert(zähler) = Analog_in0 Incr Zähler Merker = 1 Print "Zähler: " ; Zähler End If '------------------------------------------------------------------------------- 'Werte über RS232 Senden: If Pinc.3 = 0 Then Portb.3 = 1 '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 10 Next Else Portb.3 = 0 'Led umschalten zur kontrolle 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
Tobias







Zitieren

Lesezeichen