Procedura do LCD HD44780 - CPU 6502



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "John / CTN" <johnctn_at_nospam_kki.net.pl>
Subject: Procedura do LCD HD44780 - CPU 6502
Date: Sat, 30 Sep 2000 20:52:23 +0200


Dzien dobry !!!
Nazywam sie Janusz
I mam mały problem sprzetowy jak i programowy z wyswietlaczem 4*20
Otoz postanowilem iz bede do tego uzywał procesora 8 bitowego 6502
(posiadam bardzo dobra znajomosc asemblera dla tego procesora )

Transmisja z komputera do wyswietlacza jest 8 bitowa
Bit 0 - dane do Bit 4
Bit 1 - dane do Bit 5
Bit 2 - dane do Bit 6
Bit 3 - dane do Bit 7

Bit 4 - sygnał R/W
Bit 5 - sygnał RS
Bit 6 - sygnał Enable
Bit 7 - nie uzywany

Tak wiec transmisja miedzy komputerem a wyswietlaczem musi byc 4 bitowa
Jezeli dodam, ze komorka $dd03 ustawia kierunek przesylania danych dla 8
linii

#$00 8 linii wejsciowych
#$FF 8 linii wyjsciowych

natomiast komorka $dd01 sluzy jako komorka danych do (odczytu/ zapisu) w
zaleznosci od wartosci w $dd03

wiec inicjacja 4 bitowa wyglada tak :

SEI ;wylacz przerwania
LDA#$FF ;zaladuj #$FF do Akumulatora
STA$DD03 ;zaladuj do komorki $dd03 zawartosc
Akumulatora
LDA#$02 ; zaladuj #$02 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
LDA#$02 ; zaladuj #$02 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
LDA#$00 ; zaladuj #$00 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
JSR TIME ; skocz do podprogramu Time
LDA#$00 ;zaladuj #$00 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
LDA#$08 ; zaladuj #$08 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
JSR TIME ; skocz do podprogramu Time
LDA#$00 ; zaladuj #$00 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
LDA#$01 ; zaladuj #$01 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
JSR TIME ; skocz do podprogramu Time
LDA#$00 ; zaladuj #$00 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
LDA#$04 ; zaladuj #$04 do Akumulatora
JSR WRITE ; skocz do podprogramu Write
JSR TIME ; skocz do podprogramu Time
END JMP END ; skok pod etykiete END ( zapetlenie )

; Procedura Time

TIME LDX#$FF ;zaladuj #$FF do rejestru X
WAIT DEX ;zmniejsz o 1 zawartosc rejestru X
BNE WAIT ;sprawdz czy rejestr X = 0 jezeli
;tak to wykonaj nastepna
;instrukcję a jeżeli nie
;to skocz pod etykiete
Wait
RTS ;wyskocz z podprogramu

; Procedura Write

WRITE STA$DD01 ; zaladuj do komorki $dd01 zawartosc
;Akumulatora
ORA#$40 ; zapal 6 bit do wartości
; akumulatora (sygnał
enable=1 )
STA$DD01 ; zaladuj do komorki $dd01 zawartosc
; Akumulatora
NOP ; nic nie rob (rozkaz ten
; zajmuje 2 takty
zegara )
NOP ; nic nie rob (rozkaz ten
; zajmuje 2 takty
zegara )
NOP ; nic nie rób (rozkaz ten
; zajmuje 2 takty
zegara )
AND#$BF ; zgas 6 bit do wartosci akumulatora
; (sygnał enable=0 )
STA$DD01 ;zaladuj do komorki $dd01 zawartosc
;Akumulatora
NOP ; nic nie rob (rozkaz ten
; zajmuje 2 takty
zegara )
NOP ; nic nie rób (rozkaz ten
; zajmuje 2 takty
zegara )
NOP ; nic nie rob (rozkaz ten
; zajmuje 2 takty
zegara )
RTS ; wyskocz z podprogramu

I tak oto taka procedura nie dziala a raczej nie robi zadnego wrazenia na
wyswietlaczu dlaczego ??????????

Bardzo prosze mi pomoc w tej sprawie

Mój adres E-mail: JohnCTN_at_nospam_kki.net.pl






Poprzedni Następny
Wiadomość
Spis treści
From: "RafałMa" <rafbroda_at_nospam_friko6.onet.pl>
Subject: Re: Procedura do LCD HD44780 - CPU 6502
Date: Sat, 30 Sep 2000 22:53:39 +0200


Nie analizowałem programu ale miałem podobny problem. Po pierwsze czy masz
peerek do kotrastu ?
Bez tego mi nie chciał ruszyć (na Vee ustaw ok. 1,5 V)
Może dalej będzie dobrze??
Rafał.