Forum: Mikrocontroller und Digitale Elektronik 9 Bit binär in ASCII


von Rudi D. (rulixa)


Lesenswert?

Hier Beitrag "8 Bit binär zu ASCII"
hat Peter Danegger seine wirklich extrem kurze Routine vorgestellt.
Nun, ich brauchte sie bis über 255 hinaus bis max. 999

Ich hätte ja auch BIN2BCD nehmen können und dann in ASCII wandeln 
können.
Aber peda's Routine ist so Spitze, dass ich sie als Basis genommen habe 
und damit Respekt ausdrücken möchte.
1
;********fast 8bit_in_ASCII *** max 999dez ****************
2
;input:  wo_lo,wo_hi = 16 bit Wert, 
3
;output: ASCII-digits wie von peda
4
;RX6=  Hunderter
5
;RX5=  Zehner
6
;RX4=  Einer
7
.def   wo_hi  = r29
8
.def   wo_lo  = r28
9
.equ  _100 = 0x0064
10
11
byte_asc: 
12
        ldi    RX6, -1 + '0'  ;gleich in ASCII , -1 wegen 1.inc RX6
13
_bcd1:  inc    RX6          
14
        subi   wo_lo, low(_100)  ;subi 100, in 16 bit
15
  sbci   wo_hi, high(_100)  
16
  brcc   _bcd1    ;so die Hunderter stimmen
17
              ;Rest ist minus, darum müssen die Zehner
18
        ldi     RX5, 10 + '0'  ;von 10 runtergezählt werden, bis Rest
19
_bcd2:  dec     RX5    ;wieder pos. wird, was die Einer sind
20
        subi    wo_lo, -10  ;also addiere 10 auf, wo_hi ist schon NULL 
21
        brcs    _bcd2
22
        sbci    wo_lo, -'0'  ;Einer nach ASCII wandeln
23
  mov  RX4,wo_lo  ;und nach RX4 bringen
24
        ret

Bei Nutzung von fertigen Routinen wäre die Vorbereitung länger als der 
Code oberhalb.
LG Rudi

von Tom Thomsen (Gast)


Lesenswert?

Rudi D. schrieb:
> 9 Bit binär in ASCII
>
> Nun, ich brauchte sie bis über 255 hinaus bis max. 999

Da werden 9 Bit nicht reichen.

von Joachim B. (jar)


Lesenswert?

Tom Thomsen schrieb:
> Da werden 9 Bit nicht reichen

war 9 Bit nicht mal was 512 Farben?

von Carl D. (jcw2)


Lesenswert?

Fehlen noch 487.

von Rudi D. (rulixa)


Lesenswert?

Tom Thomsen schrieb:
> Rudi D. schrieb:
>> 9 Bit binär in ASCII
>>
>> Nun, ich brauchte sie bis über 255 hinaus bis max. 999
>
> Da werden 9 Bit nicht reichen.

2^9,96 =+- 996 reicht euch das jetzt?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.