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:
Jetzt müsste in zaehler die einser Anzahl gespeichert sein...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
weiter muß man prüfen ob zaehler gerade, oder ungerade ist und entsprechend Bit 0 in ausgangszahl setzen, oder auch nicht:
wobei senden ist Deine Routine, die die Zahl über UART verschickt.Code:sbrc zaehler,0 ori ausgangszahl,1 rcall senden
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







Zitieren
Lesezeichen