Assemblerprogrammierung

Hi,

Ich sitze gerade vor der Programmierung zur HSIT6, progarmierung des 8051.
Das auslesen klappt ja schon, auch die Auswertung ob die LED an oder aus sein soll. Bei der schei... Blocksicherung komme ich nicht weiter:angry:

Ich kann zwar im Debug-Modus sehen ob das Paritätsbit für die Querparität HI oder LOW ist, es aber nicht wieter nutzen.
Hat einer von euch eine Idee wie das weiter gehen kann?

Lernen macht ja so viel Spass....
Gruss im Voraus...
SteGie
 
AW: Assemblerprogrammierung

Hallo!!!


das Paritäts-Bit befindet sich im PSW (Programmstatuswort).

dieses kann einzel abgefragt werden über das Adressbit D0H

Versuche es mal mit dem Befehl JB D0H,Marke ( habs nicht probiert müßte aber so gehen)

Falls du ne Tabelle über das SFR vorliegen hast kannst du leicht erkennen

welche Adressen Byte oder auch Bit addressierbar sind!!!

Nanel111
 
AW: Assemblerprogrammierung

Hallo Nanel111,


Zweiter Anlauf der Antwort, Netz hatte mal wieder ne Macke.



Hab deinen Tip ausprobiert.
Mit deiner Anweisung 'JB D0H,Marke ' konnte mein Compiler(Keil-[FONT=Lucida Sans, sans-serif]µ[/FONT]Vision2)
leider nichts anfangen.
Was soll der Befehl JB bewirken?


Habe aber doch noch eine Lösung, dank deines Tip's mit D0H gefunden!
Bei 7 Bit als Ausgangswert
Mit mov a,0d0h ; Flagregister laden
anl a,#01h ; mit Maske '00000001' UND-Verknüpfen
; Übrig bleit nur Bit 0 = Parity-Flag
jnz NoPari ; springe zur Aktion bei keiner Parität
jz Pari ; springe zur Aktion bei Parität
NoPari:
clr c
jmp Ausgang
Pari:
setb c
Ausgang:
rlc a ; links Rotieren, unter Einbeziehung

des Carry-Bit
; jetz steht im Akku der korrekte Wert


klappt es mit der Querparität.
Jetzt kommt das nächste Problem!
Wie krieg ich es hin aus z.B. 7 Byte die Längsparität zu bilden?
Auf dem Papier und mit dem Kopf kein Problem, aber in Assembler???


Falls Du oder jemand anders einen Lösungsansatz weiss - bin für Vorschläge dankbar.
 
AW: Assemblerprogrammierung

Hey !!!


Habs nochmals selbst getestet und das geht , wahrscheinlich hast du nicht
JB 0D0H,marke_1, das kannst du dir aber für alle Zukunft merken kommt immer wieder!!!!!!!!!!!!!!!!!!

Code:


;Test


ORG 000h
jmp 100h


org 100h
start: mov A,#01h
JB 0D0H,marke_1
jmp fertig
marke_1: nop
fertig: jmp start
end.
 
AW: Assemblerprogrammierung

Hallo Nanel111,


Zweiter Anlauf der Antwort, Netz hatte mal wieder ne Macke.



Hab deinen Tip ausprobiert.
Mit deiner Anweisung 'JB D0H,Marke ' konnte mein Compiler(Keil-[FONT=Lucida Sans, sans-serif]µ[/FONT]Vision2)
leider nichts anfangen.
Was soll der Befehl JB bewirken?


Habe aber doch noch eine Lösung, dank deines Tip's mit D0H gefunden!
Bei 7 Bit als Ausgangswert
Mit mov a,0d0h ; Flagregister laden
anl a,#01h ; mit Maske '00000001' UND-Verknüpfen
; Übrig bleit nur Bit 0 = Parity-Flag
jnz NoPari ; springe zur Aktion bei keiner Parität
jz Pari ; springe zur Aktion bei Parität
NoPari:
clr c
jmp Ausgang
Pari:
setb c
Ausgang:
rlc a ; links Rotieren, unter Einbeziehung

des Carry-Bit
; jetz steht im Akku der korrekte Wert


klappt es mit der Querparität.
Jetzt kommt das nächste Problem!
Wie krieg ich es hin aus z.B. 7 Byte die Längsparität zu bilden?
Auf dem Papier und mit dem Kopf kein Problem, aber in Assembler???


Falls Du oder jemand anders einen Lösungsansatz weiss - bin für Vorschläge dankbar.
Na ja 7 Byte ne längs parität zu bilden wird schwer, da wird dein Pari-Flag immer 1 sein.

doch versuchs mal mit 8 byte dann hast du ne Chance auf p=0 oder P=1.


Mein Versuch für dein Problem wäre eventuell

- eventuell maskierung um nur diese relevanten bits zu nützen

-addiere funktion einsetzten

zb. 1
+ 1
= 10
diese O auswerten wprde ja keine Parität bedeuten
ist ja richtig da nicht ungerade Anzahl von Nullen oder Einsen
Dies wprde dann für 0,2,4,6,8, gelten was ja richtig ist.
Dein Ergebnis addiert du dann immer mit dem nächsten Byte bis du eben alle
Bytes zusammengerechnet hast.

-Eventuell könnten man dies auch über xor machen!!!

Ich hoffe das ist ein wenig verständlich



Nanel111
 
AW: Assemblerprogrammierung

Hallo Nanel111,

Ich bin den Weg mit dem XOR gegangen.
Nachdem ich mir die Fuktionvon XOr noch mal genauer angesehen habe, war das gar nicht mehr so schwer(falls ich es richtig habe).

Habe Dank deiner Anregungen wohl doch erfogreich die Aufgabe beendet.
 
AW: Assemblerprogrammierung

Rückmeldung ist wichtig ganz klar, wir wollen ja alle hier was dazu lernen!!!
OK dann wäre das auch geklärt!!!

Nanel111
 
Top