Problem początkującego
Podłączyłem wyświetlacz pod Atmega8.
Potrafię wyświetlić na nim cyfrę 2 gdy bezpośrednio załaduję wartość binarną.
Mam problem ze zrobieniem tablicy zawierającej wzorce znaków do wyświetlania, a przechowywanej w segmencie kodu programu.
Zdefiniowałem na próbę trzy znaki - 1 oznacza świecenie diody.
Próbuję je odczytać ale niestety odczytuje złe dane. Na listingu zaznaczyłem który rozkaz działa.
PYTANIE DODATKOWE
Pony Prog pokazuje, że skompilowany przez AVR Studio kod zawiera tablicę znaków, ale każdy znak zapisany jest jako dwa bajty: BC 00 BD 00 BE 00
Dlaczego skoro definiuję je jako .DB ???
Podłączyłem wyświetlacz pod Atmega8.
Potrafię wyświetlić na nim cyfrę 2 gdy bezpośrednio załaduję wartość binarną.
Mam problem ze zrobieniem tablicy zawierającej wzorce znaków do wyświetlania, a przechowywanej w segmencie kodu programu.
Zdefiniowałem na próbę trzy znaki - 1 oznacza świecenie diody.
Próbuję je odczytać ale niestety odczytuje złe dane. Na listingu zaznaczyłem który rozkaz działa.
.include "m8def.inc" ;ATMega8
.cseg
.org $0000 ; początek programu po starcie zasilania lub resecie
rjmp Reset ; Reset vector
;tablica znaków wyświetlacza
znak2: .DB 0xBC ;0b10111100
znak3: .DB 0xBD ;0b10111101
znak4: .DB 0xBE ;0b10111110
;START po włączeniu zasilania lub resecie
Reset:
;ustaw porty C i D jako wyjścia
ser R16
out DDRC, R16
out DDRD, R16
;wczytaj znak do wyświetlenia
ldi zl, LOW(znak2)
ldi zh, HIGH(znak2)
ld r16, z ;nie działa
;lpm r16, z ;nie działa
;ldi r16,0b10111100 ;<---- to działa poprawnie i wyświetla cyfrę 2
;wyślij cyfrę do wyświetlacza
out PORTC, r16
;włącz segment wyświetlacza (jedna z cyfr)
ldi r17, 0b00010000
out PORTD, r17
loop:
rjmp loop
PYTANIE DODATKOWE
Pony Prog pokazuje, że skompilowany przez AVR Studio kod zawiera tablicę znaków, ale każdy znak zapisany jest jako dwa bajty: BC 00 BD 00 BE 00
Dlaczego skoro definiuję je jako .DB ???