Bascom Problem mit Sprungbefehlen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  08:00:19      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Bascom Problem mit Sprungbefehlen

    







BID = 534186

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen
 

  


Hallo,
bin hier so langsam am Verzweifeln.
Ich versuche ein Programm zu schreiben, dass etwas eigentlich recht simples macht: 8 Ledn und ein Taster; drückt man den Taster ein mal, geht die erste Led an, beim zweiten Mal geht sie aus, beim dritten mal geht die dritte Led an,etc. (Also dass immer nur eine Led leuchtet). Folgendes Programm funktioniert nur leidlich:


Code :

$regfile "m32def.dat"

$crystal= 8000000
Dim A As byte
A = Pind.4
Do
For A = 1 To 1
Wend

Porta.1 = 1
Wait 1
For A = 1 To 1
Next
Porta.1 = 0
Wait 1
For A = 1 To 1
Next
Porta.2 = 1
Wait 1
For A = 1 To 1
Next
Porta.2 = 0
Wait 1
For A = 1 To 1
Next
Porta.3 = 1
Wait 1
For A = 1 To 1
Next
Porta.3 = 0
Wait 1
For A = 1 To 1
Next
Porta.4 = 1
Wait 1
For A = 1 To 1
Next
Porta.4 = 0
Wait 1
For A = 1 To 1
Next
Porta.5 = 1
Wait 1
For A = 1 To 1
Next
Porta.5 = 0
Wait 1
For A = 1 To 1
Next
Porta.6 = 1
Wait 1
For A = 1 To 1
Next
Porta.6 = 0
Wait 1
For A = 1 To 1
Next
Porta.7 = 1
Wait 1
For A = 1 To 1
Next
Porta.7 = 0
Wait 1
For A = 1 To 1
Next
Porta.8 = 1
Wait 1
For A = 1 To 1
Next
Porta.8 = 0

Wait 5
Loop
End


Die ganzen Klimmzüge habe ich gemacht, weil ich nicht weiß, ob man den Zustand "alles aus" mit rotate hinbekommt, ich habe keine Ahnung wie man das sonst hinbekommen könnte, deshalb frage ich euch, ob ihr a) wisst, wie ich mein Programm so hinbiegen kann, dass es funktioniert, oder b) eine elegantere Lösung parat habt.
PS: a (der Zustand des Tasters) ist als Byte definiert, weil es sonst Fehler hagelt.
PPS: Ich verwende das Pollinboard. Muss ich für die Taster Pull-ups aktiviert haben?

_________________

BID = 534196

Sunday

Neu hier



Beiträge: 49
Zur Homepage von Sunday

 

  

Hallo
Weis zwar nicht welchen µC du verwendest,
aber da ich selber Mikrobasic verwende und die
Codes ähnlich sind, hab ich dir mal eine Routine
eingefügt, von meinem Prg. Vielleicht hilft es dir
ja weiter.

b = 1
if PORTA.5 = 1 then ;Taste 5 abfragen
if b = 1 then
PORTA.3 = 1 ;LED an
b = 0
else
b = 1
PORTA.3 = 0 ;LED aus
end if

usw.

SUNDAY.

BID = 534200

Jornbyte

Moderator



Beiträge: 7178

Hallo Nicki
Du hast in deinem Programm die Zeilen:

For A=1 To 1
Next

stehen. Diese werden nicht ausgeführt, da bei "Durchlaufe eine Schleife von 1 bis 1" die Bedingung schon erfüllt ist. Daher sind diese Zeilen nutzlos und können ohne Bedenken gelöscht werden.

Du hast auch in der Pinzählung einen Fehler. Richtig ist die Zählung von 0 bis 7 nicht so wie bei dir, von 1 bis 8.

nun zur Erfüllung deiner Aufgabenstelung:
(DO)
verwende den Befehl Bitwait um deinen Taster abzufragen
verwende Rotate um die Led der Reihe nach ein und aus zu schalten
beachte bei Rotate den Wert des einzelnen Bit's
(1, 2, 4, 8, 16, 32, 64, 128)
prüfe (IF) ob du 1 oder 128 ereicht hast, je nach Rotation (rechts, links)
lade das Port(A) mit 0 (Null) um alle LED aus zu schalten
(LOOP)
(END)





_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 534202

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen

Danke ihr zwei!
@ Jornbyte:
Wenn ich deinen Vorschlag richtig deute, gehen die Ledn nur am "Anfang" und am "Ende" aus.
Hm, ich meinte allerdings folgendes Muster:

00000000
tasterdrück
10000000
tasterdrück
00000000
tasterdrück
01000000
tasterdrück
00000000
tasterdrück
00100000
tasterdrück
00000000
.
.
.

Ich bräuchte also ne Art Tor oder wie man das nennt.

_________________

Gute Nacht.
[ Diese Nachricht wurde geändert von: ElektroNicki am 12 Jul 2008 22:35 ]

[ Diese Nachricht wurde geändert von: ElektroNicki am 12 Jul 2008 22:39 ]

[ Diese Nachricht wurde geändert von: ElektroNicki am 12 Jul 2008 22:42 ]

BID = 534204

Racingsascha

Schreibmaschine



Beiträge: 2247
Wohnort: Gundelsheim
ICQ Status  

Ich würde das etwa so lösen:

-in eine Speicherzelle 0b00000001 reinschreiben (0x01)
-den Port löschen
schleife
-auf Tastendruck warten
-wenn gedrückt den Port abfragen
-wenn Port nicht 0, Portwert in die Speicherzelle schreiben, um 1 verschieben und den Port löschen
-wenn Port 0, den Wert der Speicherzelle in den Port schreiben.
-goto schleife


_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.

BID = 534210

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen

hey, coole Idee!

_________________


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182401260   Heute : 1035    Gestern : 7426    Online : 347        26.11.2024    8:00
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0301940441132