Hmmmm,
wenn ich Dich richtig verstehe, willst Du Bit0 dazu mißbrauchen, Parity, ohne Parity zu machen
An sich weniger das Problem, hmm dazu mußt Du wisssen, ob in Deinen 7 Bits eine gerade, ohne ungerade Anzahl der '1' vorliegt, nur wie rauskriegen?
Eine Möglichkeit wäre zuerst Deine Ausgangszahl(die versendet werden soll) 7 mal nach links über Carry schieben und zählen, wie oft Carry gesetzt ist:
Code:
push ausgangszahl ;Daten retten
ldi bitzaehler,6
clr zaehler ;zaehler loeschen
einserzaehlen:
rol ausgangszahl ;links ueber Carry schieben
brcc einserzaehlen1
inc zaehler
einserzaehlen1:
dec bitzaehler
brne einserzaehlen
pop ausgangszahl
Jetzt müsste in zaehler die einser Anzahl gespeichert sein...
weiter muß man prüfen ob zaehler gerade, oder ungerade ist und entsprechend Bit 0 in ausgangszahl setzen, oder auch nicht:
Code:
sbrc zaehler,0
ori ausgangszahl,1
rcall senden
wobei senden ist Deine Routine, die die Zahl über UART verschickt.
Naja, vielleicht gibt es einfachere Lösungen ?
Ich bin gespannt, ob noch jemand was dazu beiträgt
P.S.
Kann man die Übertragung nicht auf 1/7/1 mit Parity einstellen ?
Gruß Sebastian
Lesezeichen