Witam
Bawie się akurat wyświetlaczem LCD 2x16 i doszedłem do etapu gdzie chce wysyłać łańcuch znaków za pomocą procedury.
deklaracja łańcucha:
oczywiście wyświetlacz inicjalizuje się poprawnie, interfejs jest 4-bitowy opóźnienia mam zrealizowane też ok-sprawdzone.
procedura którą wysyłam łańcuch:
w tej konfiguracji program nie działa. Dodam że jeżeli zamieszczę deklaracje w sekcji .cseg:
wszystko działa ok znaki są wysyłane, jeżeli zamienię do konfiguracji jak wyżej wyświetlacz pokazuje mi jakieś krzaki i w ogóle "cuda wianki"
Nie mam pojęcia dlaczego nie widzi deklaracji z zakresu <0x060 przejrzałem już książkę ale niczego na ten temat się tam nie doczytałem a chciałbym wiedzieć ponieważ szkoda mi zaśmiecać segmentu .cseg jakimiś "śmieciami" jak .dseg jest pusty.
Bawie się akurat wyświetlaczem LCD 2x16 i doszedłem do etapu gdzie chce wysyłać łańcuch znaków za pomocą procedury.
deklaracja łańcucha:
.INCLUDE "M16DEF.INC"
.dseg
.org 0x0060
txt: .db "string", 0xFF
.cseg
.org 0x000
oczywiście wyświetlacz inicjalizuje się poprawnie, interfejs jest 4-bitowy opóźnienia mam zrealizowane też ok-sprawdzone.
procedura którą wysyłam łańcuch:
sstring:
push AKU
push R17
ldi ZH, high(txt)
ldi ZL, low(txt)
.equ koniec = 0xff
omt:
lpm AKU,Z+
cpi AKU,koniec
breq koniec_pprog
rcall dana
rjmp omt
koniec_pprog:
pop R17
pop AKU
ret
w tej konfiguracji program nie działa. Dodam że jeżeli zamieszczę deklaracje w sekcji .cseg:
.INCLUDE "M16DEF.INC"
;.dseg
;.org 0x0060
;txt: .db "string", 0xFF
.cseg
.org 0x000
txt: .db "string", 0xFF
wszystko działa ok znaki są wysyłane, jeżeli zamienię do konfiguracji jak wyżej wyświetlacz pokazuje mi jakieś krzaki i w ogóle "cuda wianki"
Nie mam pojęcia dlaczego nie widzi deklaracji z zakresu <0x060 przejrzałem już książkę ale niczego na ten temat się tam nie doczytałem a chciałbym wiedzieć ponieważ szkoda mi zaśmiecać segmentu .cseg jakimiś "śmieciami" jak .dseg jest pusty.