Aufschlagwechsel

Gast #98590
Hi,

ich habe vor kurzem mit der Assemblerprogrammierung angefangen. Mein
erstes Projekt ist eine digitale Zähltafel für Tischtennis.
Das auf-, abzählen, multiplexen und Satzwechsel klappt schon, nur das
mit dem Aufschlagwechsel ist  nur Teilweise funktionsfähig.

Aufgabe: Nur wenn alle Zähler auf Null sind kann man den Aufschlag mit
Taster6 auswählen. Der Aufschlag wird durch Wechsel von PC6
und PC7 geändert. Bis zu einem Gesamtzählstand von 20 (10:10), soll der
Aufschlag nach jedem zweiten Punkt gewechselt werden. Sobald
die 20 erreicht ist soll der Aufschlag nach jedem Punkt gewechselt
werden. Bis hier funktioniert es bei mir auch. Nur wenn
der Zählstand korrigiert wird, also zurückzählen funktioniert es bei
mir nicht. Wenn der Satz fertig ist soll der Aufschlag
umgekehrt werden, also das entgegengesetzte von dem Wert, der mit
Taster6 ausgewählt wurde. Die anderen Pins von PORTC dürfen
nicht verändert werden.

Ich habe den Gesamtzählstand mit einem Register verglichen, Welches
nach jedem Wechsel um 2 bzw. um 1 erhöht wurde. Den Aufschlagwechsel
habe ich mit sbi und cbi gemacht, um die anderen Pins nicht zu
verändern.

Hoffentlich hat das jetzt jemand verstanden und kann mir Helfen.

MfG Christoph
Gast
etwas verwirrend, das mit dem zurückzählen beim tischtennis begreif ich
nicht,

versuch das ganze doch mal in ein paar formeln zu kleiden,
Gast
Ok, Ich habe nochmal "nachgedacht" das mit den zurückzählen brauche
ich eigentlich garnicht.
Nur wie kann ich jetzt PC6 und PC7 vertauschen ohne die anderen Pins zu
beeinflussen. Ist bestimmt ganz leicht, aber ich komm nicht drauf!
MfG Christoph
Gast
externe schaltung. ok, etwas übertrieben wenn es auch in software geht,
aber es geht....
du könntest z.b. indirekt auf das bit an portc zugreifen. mach zwei
variablen in denen drinsteht welches bit gerad welche funktion hat und
ändere alle funktionen die auf diese bits zugreifen so ab, dass sie nur
noch die variablen benutzen und nicht direkt auf das bit zugreifen.
wechsel wäre einfach die beiden vars zu tauschen
Gast
Bit-Swapping?
in C:
if (PORTC & (1<<PC6)
   {
     PORTC &= ~(1<<PC6);  // Pin PC6 löschen
   }
else
   {
     PORTC |= (1<<PC6);   // Pin PC6 setzen
   }
dito für PC7...

in ASM vielleicht so:

SBIS PORTC,6
rjmp PC6setzen

CBI PORTC,6
rjmp weiter

PC6setzen:
SBI PORTC,6

weiter:
...

Bin in ASM nicht wirklich bewandert...

Gruß Rahul
Gast
Ok es war doch sehr einfach. Ich habe die am Anfang ausgewählten PINs in
ein Register gespeichert. Wenn der Satz zuende ist nehme ich den com
Befehl und lade das Register wieder auf PortC.

Trotzdem Danke, dass sich jemand meinen wirren Text angesehen hat!

MfG Christoph

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.