Also zu 1: Da dir dieser Sensor einen Wert liefert, dessen Auflösung genauer ist als 8-Bit, Passt dieser nicht in ein Register, sondern er benötigt 2 dafür. Du findest also in "temperature_lsb" die niederwertigen 8 Bit (0-7) und in "temperature_msb" die der höheren Wertigkeit (8-...)
2. Es wäre eine Möglichkeit, den ganzen Spaß im Eeprom abzuspeichern und das Ganze dann mit dem PC auszulesen, aber ich denke da hast du genausoschnell ein LCD angeschlossen.
Wenn du das Ganze in Echtzeit erfahren willst und dich binär nicht stört, dann nimm dir einfach 2 freie Ports an deinem AVR(als Beispiel B und C), definiere sie als Ausgang, schließe dort 16 LEDs an (Vorwiderstand nicht vergessen) und gebe dort temperature_lsb und _msb aus.
du musst dazu den wert mit "lds" aus dem Speicher in ein Register einlesen und ihn dann mit "out" an den Port schicken. Hab das mal kurz zusammengetippt, muss aber nicht unbedingt funktionieren
rcall reset_pulse
rcall skip_rom
rcall convert_t
rcall reset_pulse
rcall skip_rom
rcall read_scratchpad
rcall reset_pulse ;jetzt müssten die werte in den
;entsprechenden speicherstellen stehen
lds temp0, temperature_lsb ;LÄDT DAS LSB IN TEMP0
out PORTC, temp0 ;UND GIBT ES AUF PORT C AUS
lds temp0, temperature_msb
out PORTB, temp0 ;und das gleich nochmal mit dem Msb
rjmp main
Den Rest (alles was nach main steht) einfach so lassen und nicht vergessen ganz oben bei include die richtige Datei einzubinden.
Müsste in deinem Fall glaub ich "m8515def.inc" heißen.
Jetzt bekommst du an PortB und PortC deinen Wert angezeigt. Er errechnet ich aus: Wert an PortB*256 + Wert an PortC.
Lesezeichen