-
-
Erfahrener Benutzer
Robotik Einstein
Du kannst mit dem Programm ja Sekunden zählen und in der Routine die Sekunden bis 60 hochzählen lassen. Bis 60 Erreicht ist dann die LED leuchten lassen.
Nach 60 Sekunden halt ausschalten.
Du kannst ja durch erneutes drücken des Tasters die Sekunden wieder auf 0 setzen.
Jetzt einen Code zu geben (der auch für alle anderen passt, die sowas in der Art machen wollen) ist schwer, ohne zu wissen, was das Programm evtl sonst noch können soll.
$regfile = "m16def.dat"
$crystal = 3686400
Config Timer1 = Timer, Prescale = 64
Config Pinc.2 = Output
Led3 Alias Portc.2
On Timer1 Timer_irq
Const Timervorgabe = 7936
Dim Sekunden as Byte
Enable Timer1
Enable Interrupts
Do
If Sekunden <60 then Set LED3
Reset LED3
Loop
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
Return
Das Programm sollte bei 3,86MHz wie du sie auch hattest nach dem Start eine Minute die LED leuchten lassen.
If PIND.2 = 0 Then Enable Timer1
würde den Timer erst starten wenn der Taster gedrückt wurde. Allerdings musst du die Zeile vorher im Code wo er schon gestartet wird entfernen.
Soviel muss als Hilfestellung reichen. Mehr geht nur wenn man genau weiss, was das Programm machen soll. Der Taster wird ja auchnicht dauerhaft abgefragt wenn das Programm größer ist. Evtl ist ein Interrupt notwendig. Aber ohne es genau zu wissen muss dir das zum üben erstmal reichen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen