mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Umwandlung


Autor: Meglios Kraisis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Habe ein Problem wuerde gerne eine 8bit Zahl mit dem Atmega8 in
Assembler in eine dec Zahl umwandeln und dann in Zehnerstellen
zerstueckeln. ZB 11111111=256 und daraus dann eine 2 eine 5 und eine 6
machen.
Wuerde die Ziffern dann gerne irgendwo zum  weiterverarbeiten speichern
wollen.
Bedanke mich vorraus fuer Eure Hilfe!

Autor: michi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
bitte schön!

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

also das ein AVR einen DIV-Befehl hat ist mir neu. Ist mir das was
entgangen oder ist das MCS51?

Matthias

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ich auch noch nicht gesehen...

möglichkeit1:
;input: ADC result left aligned with AREF set to 5V r16(low byte),
r17(high byte)
;output: Voltage between 0 and 5V at memory location 0x60 to 0x62 =
digits '0' ... '9'
; 21 Words
; CPU cycles: 24



ADCResult2ASCII:
  ldi r25, '0'
  ldi r23, 5
  mul r17, r23
  mov r17, r0
  add r1, r25    ; convert number to ASCII
  sts 0x60, r1
  mul r16, r23
  mov r16, r0
  add r17, r1
  ldi r23, 10

  mul r17, r23
  mov r17, r0
  add r1, r25
  sts 0x61, r1

  mul r17, r23
  add r1, r25
  sts 0x62, r1

  ret

***** möglichkeit 2:
;*********************************************************************** 
*
;*                  *
;*      binary to bcd conversion      *
;*                  *
;*********************************************************************** 
*
;input: a1, a0 = 16 bit value 0 ... 65535
;output: a4, a3, a2, a1, a0 = digits '0' ... '9'
;cycle: 27 .. 183
;bytes:  42
;
binbcd:
  ldi  a4, -1 + '0'    ;Preload for ASCII output
_bib1:  inc  a4
  subi  a0, low(10000)    ;substract 10000
  sbci  a1, high(10000)
  brcc  _bib1      ;until value negative

  ldi  a3, 10 + '0'
_bib2:  dec  a3
  subi  a0, low(-1000)    ;add 1000
  sbci  a1, high(-1000)
  brcs  _bib2      ;until value positive

  ldi  a2, -1 + '0'
_bib3:  inc  a2
  subi  a0, low(100)    ;substract 100
  sbci  a1, high(100)
  brcc  _bib3      ;until value negative

  ldi  a1, 10 + '0'
_bib4:  dec  a1
  subi  a0, -10      ;add 10
  brcs  _bib4      ;until value positive

  subi  a0, -'0'    ;convert remaining ones to ASCII
  ret

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.