|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Benny90
Anmeldungsdatum: 01.04.2008 Beiträge: 19
|
Verfasst am: 24.01.2013, 19:05 Titel: Kleines Problem mit READ - DATA |
|
|
Hallo,
Ich möchte über den LPT-Port eine 7-Segmentanzeige ansteuern , ich habe dafür ein kleines Programm geschrieben mit dem man die Anzeige entweder von 0 bis 9 oder von 9 bis 0 zählen lassen kann.
Es ist aber noch nicht ganz fertig , nicht dass jemand denkt warum da bei den Locate Befehlen alles kreuz und quer auf dem Bildschirm verteilt ist.
Hier mal das Programm:
Code: | 10 CLS
20 SCREEN 8
30 COLOR 14, 1
50 LOCATE 5, 35
60 PRINT "Z„hler"
70 LOCATE 6, 33
80 PRINT "* * * * *"
90 LOCATE 9, 19
100 PRINT "Soll der Z„hler vor oder zurck laufen ?"
110 LOCATE 11, 19
120 INPUT "Geben Sie eine 1 fr >auf< und eine 2 fr >ab< ein !", a
130 IF a = 0 THEN END
140 IF a = 1 THEN GOTO 170
150 IF a = 2 THEN GOTO 240
160 IF a > 2 THEN LOCATE 14, 19: COLOR 4: PRINT "Falsche Eingabe !": SLEEP 3: GOTO 10
' Aufw„rts z„hlen
170 READ c, b
180 IF c = -1 THEN RESTORE: END
190 OUT 888, b
200 LOCATE 17, 19
210 PRINT c
211 FOR t = 0 TO 125000: NEXT t
212 GOTO 170
220 DATA 0, 127, 1, 112, 2, 231, 3, 245, 4, 248, 5, 189, 6, 191, 7, 113, 8, 255, 9, 253, -1, -1
' Abw„rts z„hlen
240 READ d, e
250 IF d = -1 THEN RESTORE: END
260 OUT 888, e
270 LOCATE 17, 19
280 PRINT d
290 FOR t = 0 TO 125000: NEXT t
300 GOTO 240
310 DATA 9, 253, 8, 255, 7, 113, 6, 191, 5, 189, 4, 248, 3, 245, 2, 231, 1, 112, 0, 127, -1, -1
|
Ich bin leider kein besonders guter Programmierer und häng jetzt an einer vermutlich sehr einfachen Stelle fest.
Im Programm kann man ja sehen dass ich bei Eingabe einer 1 aufwärts und bei Eingabe einer 2 abwärts zählen will.
Das Problem ist jetzt , dass immer nur die obere DATA Zeile eingelesen wird.
Wie kann ich jetzt QBasic sagen dass bei einer 2 nur die untere DATA Zeile gelesen werden soll und die obere sozusagen übersprungen wird ?
mfg Benny90 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 24.01.2013, 19:14 Titel: |
|
|
Du könntest unter Umständen mit Labels und RESTORE arbeiten. Damit springst du an die Stelle, ab der die nächste DATA-Eingabe verwendet werden soll. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Benny90
Anmeldungsdatum: 01.04.2008 Beiträge: 19
|
Verfasst am: 24.01.2013, 19:35 Titel: |
|
|
Hmm ich hab jetzt einfach mal die Labels aus dem Beispiel genommen , funktioniert aber immer noch nicht.
Was mach ich falsch ?
Code: | 10 CLS
20 SCREEN 8
30 COLOR 14, 1
50 LOCATE 5, 35
60 PRINT "Z„hler"
70 LOCATE 6, 33
80 PRINT "* * * * *"
90 LOCATE 9, 19
100 PRINT "Soll der Z„hler vor oder zurck laufen ?"
110 LOCATE 11, 19
120 INPUT "Geben Sie eine 1 fr >auf< und eine 2 fr >ab< ein !", a
130 IF a = 0 THEN END
140 IF a = 1 THEN GOTO 170
150 IF a = 2 THEN GOTO 240
160 IF a > 2 THEN LOCATE 14, 19: COLOR 4: PRINT "Falsche Eingabe !": SLEEP 3: GOTO 10
' Aufw„rts z„hlen
170 READ c, b
180 IF c = -1 THEN RESTORE bar: END
190 OUT 888, b
200 LOCATE 17, 19
210 PRINT c
211 FOR t = 0 TO 125000: NEXT t
212 GOTO 170
' Abw„rts z„hlen
240 READ d, e
250 IF d = -1 THEN RESTORE foo: END
260 OUT 888, e
270 LOCATE 17, 19
280 PRINT d
290 FOR t = 0 TO 125000: NEXT t
300 GOTO 240
301 bar:
310 DATA 9, 253, 8, 255, 7, 113, 6, 191, 5, 189, 4, 248, 3, 245, 2, 231, 1, 112, 0, 127, -1, -1
311 foo:
320 DATA 0, 127, 1, 112, 2, 231, 3, 245, 4, 248, 5, 189, 6, 191, 7, 113, 8, 255, 9, 253, -1, -1
|
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 24.01.2013, 20:39 Titel: |
|
|
"RESTORE" ohne Label-Angabe setzt auf die erste DATA-Zeile. Abgesehen macht ein RESTORE vor dem END keinen Sinn - du kannst ja anschließend nichts mehr lesen, weil das Programm zuende ist.
Was Du brauchst ist "RESTORE foo" bzw. "RESTORE bar", um das Programm anzuweisen, dass er den ersten DATA-Eintrag nach "foo:" bzw. nach "bar:" verwenden soll. Du kannst natürlich auch die Zeilennummern als Label nehmen, wenn du die sowieso schon verwendest. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Benny90
Anmeldungsdatum: 01.04.2008 Beiträge: 19
|
Verfasst am: 24.01.2013, 21:26 Titel: |
|
|
Hmm irgendwie funktioniert das nicht .Ich mach vermutlich immer noch was falsch oder hab da was falsch verstanden.
Ich hab jetzt schon alle möglichen Sachen ausprobiert aber der Zähler zählt immer nur von 9 bis 0 aber nicht anders rum. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 24.01.2013, 21:58 Titel: |
|
|
Code: | 10 CLS
20 SCREEN 8
30 COLOR 14, 1
50 LOCATE 5, 35
60 PRINT "Z„hler"
70 LOCATE 6, 33
80 PRINT "* * * * *"
90 LOCATE 9, 19
100 PRINT "Soll der Z„hler vor oder zurck laufen ?"
110 LOCATE 11, 19
120 INPUT "Geben Sie eine 1 fr >auf< und eine 2 fr >ab< ein !", a
130 IF a = 0 THEN END
140 IF a = 1 THEN GOTO 170
150 IF a = 2 THEN GOTO 240
160 IF a > 2 THEN LOCATE 14, 19: COLOR 4: PRINT "Falsche Eingabe !": SLEEP 3: GOTO 10
' Aufw„rts z„hlen
170 RESTORE bar ' waere nicht notwendig
175 READ c, b
180 IF c = -1 THEN END
190 OUT 888, b
200 LOCATE 17, 19
210 PRINT c
211 FOR t = 0 TO 125000: NEXT t
212 GOTO 175
' Abw„rts z„hlen
240 RESTORE foo
245 READ d, e
250 IF d = -1 THEN RESTORE foo: END
260 OUT 888, e
270 LOCATE 17, 19
280 PRINT d
290 FOR t = 0 TO 125000: NEXT t
300 GOTO 245
301 bar:
310 DATA 9, 253, 8, 255, 7, 113, 6, 191, 5, 189, 4, 248, 3, 245, 2, 231, 1, 112, 0, 127, -1, -1
311 foo:
320 DATA 0, 127, 1, 112, 2, 231, 3, 245, 4, 248, 5, 189, 6, 191, 7, 113, 8, 255, 9, 253, -1, -1 |
Mal ganz abgesehen davon, dass du hier ziemlich umständlich vorgehst und eine doppelte Speicherung nicht viel Sinn macht - hier soll aber mal nur der Umgang mit RESTORE demonstriert werden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Benny90
Anmeldungsdatum: 01.04.2008 Beiträge: 19
|
Verfasst am: 24.01.2013, 22:16 Titel: |
|
|
Hey super vielen Dank jetzt gehts einwandfrei
Und ja ich weiss dass ich sehr umständlich programmiere aber ich bin erst gerade dabei QBasic zu lernen
gruß Benny |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|