Hallo!
Ich bin gerade dabei, mir die Timerfunktion näher anzuschauen. Es gibt ja das tolle Programm RNAVR, das mir wirklich schon gut geholfen hat.
Ich möchte im ersten Schritt nur sekundenweise hochzählen. Jedoch habe ich hier schon probleme. Hier ist mal mein Code (Es handelt sich bei mir um ein Entwicklungsboard aus der Elektor:
Es handelt sich also nur um den Code, der durch RNAVR erzeugt wurde und dem hinzugefügten:Code:'Initialisieren inkl. LCD $regfile = "m16def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 8000000 $baud = 9600 'Pins des LCD-Modules setzen ggf. an eigene Anschlüsse anpassen Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Config Lcd = 20 * 4a , Chipset = Ks077 Config Lcd = 20 * 4 Config Lcdbus = 4 Initlcd 'Einsllen der Ein und Ausgänge Config Porta = Input Config Portb = Output Config Portc = Output 'Display!!! 'Config PORTD = 'Nicht belegt / RS232 'Namen für die Ausgänge vergeben Led1 Alias Portb.0 Led2 Alias Portb.1 Led3 Alias Portb.2 Led4 Alias Portb.3 Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portb.6 Led8 Alias Portb.7 'Namen für die Eingänge S1 Alias Porta.0 S2 Alias Porta.1 S3 Alias Porta.2 S4 Alias Porta.3 S5 Alias Porta.4 S6 Alias Porta.5 S7 Alias Porta.6 S8 Alias Porta.7 'Ausgänge vorschalten Led1 = 1 'Deklarationen Dim A As Byte Dim Sekunden As Byte '############################################### 'Timer einstellen Config Timer1 = Timer , Prescale = 256 'Hier wird der Timer und der Teiler festgelegt 'Hier wird das Unterprogramm festgelegt, das 'in dem von ihnen eingestellten Intervall aufgerufen wird On Timer1 Timer_irq 'Diese Vorgabe wurde berechnet um die genaue Intervallfrequenz zu erreichen Const Timervorgabe = 34286 'Hier werden die Timer aktiviert Enable Timer1 Enable Interrupts 'Dies ist der Programmteil, der in dem von ihnen gewählten 'Intervall aufgerufen wird Timer_irq: Timer1 = Timervorgabe '################ 'Hier könnte nun ihre beliebige IRQ-Routine stehen 'Dabei sollte man darauf achten das diese nicht mehr Zeit 'benötigt, als das Intervall zuläßt 'Der Zustand der LED wir umgekehrt, wodurch sich blinken in der halben Frequenz ergibt 'Hohe Frequenzen sind natürlich nicht mehr sichtbar Toggle Led2 Sekunden = Sekunden + 1 'Sekunden +1 '############################################################################# 'Displayausgabe Cls 'Display löschen (IMMER ERST LCD LÖSCHEN UND DANN POSITION ANGEBEN!!!) Locate 1 , 1 'Zeile1 Zeichen1 Lcd Sekunden Return
Sekunden = Sekunden + 1
Dann die displayausgabe der Sekunden.
Das Toggeln der LED funktioniert wunderbar im Sekundentakt, jedoch die Displayausgabe bleibt bei 1.
Eigentlich müsste doch der Wert "Sekunde" nach jedem überlauf weitergezählt werden? Wo ist mein denkfehler?
Ich hoffe ihr könnt mir Helfen![]()
Gruß
blondie







Zitieren

Lesezeichen