Forum: Mikrocontroller und Digitale Elektronik zu AVR-Tutorial was bedeutet high(10000)


von Olli R. (downunderthunder42)


Lesenswert?

Hallo,

ich bin gerad dabei, das AVR-Tutorial zu durchlaufen.

Jetzt habe ich eine wahrscheinlich kurz zu beantwortende 
Verständnisfrage.
Ich bin im Kapitel "LCD" -- Ausgabe eines 16Bit Zahlenwerts.

Ich habe mit folgender Programmzeile ein Problem:

;
lcd_number16:
           push  temp1
           push  temp2
           push  temp3

; ** Zehntausender **
           ldi   temp1, '0'-1
lcd_number1:
           inc   temp1
           subi  temp2, low(10000)
           sbci  temp3, high(10000)      <--- was macht dieses 
high(10000)??????????????? sbci --> substract with Carry Constant from 
Register
           brcc  lcd_number1
           subi  temp2, low(-10000)
           sbci  temp3, high(-10000)
           rcall lcd_data

; ** Tausender **
Viele Grüße

Olli

von Falk B. (falk)


Lesenswert?

@  Olli R. (downunderthunder42)

>           sbci  temp3, high(10000)      <--- was macht dieses
>high(10000)???????????????

high() ist ein Macro vom Assembler, es liefert als Ergebnis das High 
Byte einer Konstanten.
Sprich, wenn man die Dezimalzahl 10000 als Hexadezimal schreibt ergibt 
das 0x2710, die Funktion high liefert dann 0x27.
0x ist die Kennzeichnung für hexadezimale Zahlen,  im AVR-Assembler kann 
man auch $ schreiben.

10000  dezimal
0x2710 hexadezimal
$2710 hexadezimal

MFG
Falk

von Olli R. (downunderthunder42)


Lesenswert?

Danke für die schnelle Antwort.

Jetzt ist's mir klar.

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.