Jag vill läsa värden ur en tabell i assebler för AVR (ATMEGA168), men jag får det inte att fungera.
Så här har jag tänkt:
Skapa en tabell med värden.
Ladda in tabellens adress i register X.
Läs av det värde som ligger på adressen som X pekar på, och spara det i t ex R16 (register16).
Så här ser min kod ut:
Kod: Markera allt
.include "m168def.inc"
.org 0x0000
rjmp main
;*********************************************************
main:
ldi R16, 0xFF
out DDRD, R16
ldi R16, 0x00
out PORTD,R16
clr XH
ldi XL, low(SIFFROR) ; ladda X med adressen till SIFFROR
ld R16, X ; läs första siffran från tabellen
out PORTD, R16 ; visa på display
loop:
nop
rjmp loop
;*********************************************************
; "7-segmentskod" för de olika siffrorna
SIFFROR: .DB 0x6F,0x06,0xAB,0x8F,0xC6,0xCD,0xED,0x07,0xEF,0xCF,0xE7,0xEC,0x69,0xAE,0xE9,0xE1