AVR i LCD pomocy

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
grzesio75
-
Posty: 3
Rejestracja: 04 lis 2005, 9:03
Lokalizacja: Lublin
Kontakt:

AVR i LCD pomocy

Post autor: grzesio75 » 29 lis 2005, 13:55

Witam.
Proszę o pomoc.
Napisałem prosty program do obsługi LCD.
Sprawdzałem przy różnych ustawieniach i nie mam żadnego efektu na wyświetlaczu.

Grzegorz.

Kod: Zaznacz cały

.include "8515def.inc"
.equ dane = PORTD
.equ ster = PORTC
.equ E = 7
.equ RW = 6
.equ RS = 5

.def acc = r16
.def licznik = r17
.def czas = r19


.cseg
.org 0x00
rjmp Start
.org 0x07
rjmp Timer
.org 0x0B

;    8-BITÓW DANYCH 1 WIERSZ
Start:


ldi acc, 127 ;
out SPL, r16 ; ustawienie wskaˇnika stosu na 127

ldi acc, 3
out TCCR0, acc		; ustaw preskaler na 64 i wystartuj timer
ldi acc, 2
out TIMSK,acc		;włączenie przerwania przepełnienia licznika T0(TOIE0)
sei

ldi czas, 11

Lcdini:
ldi acc,0b11111111
out ster, acc
ldi acc,0
rcall sek
ldi acc, 0xff
out DDRC, acc
ldi acc,0x00
out PORTC, acc
ldi acc,0xff
out DDRD, acc
ldi acc, 0b00110000		;POCZĄTEK INICJACJI
out dane, acc
rcall Wykom
ldi acc,252
out TCNT0, acc
ldi czas, 2
rcall sek
ldi acc, 0b00110000
out dane, acc
rcall Wykom
ldi acc,252
out TCNT0, acc
ldi czas, 2
rcall sek
ldi acc, 0b00110000
out dane, acc
rcall Wykom
ldi acc,252
out TCNT0, acc
ldi czas, 2
rcall sek
cli
ldi acc, 0b00111000	;function set
out dane, acc
rcall Wykom
ldi acc, 0b00001000	;display off
out dane, acc
rcall Wykom
ldi acc, 0b00000001	;display clear
out dane, acc
rcall Wykom
ldi acc, 0b00000110	;entry mode set
out dane, acc
rcall Wykom
ldi acc, 0b00001111	;display on
out PORTD, acc
rcall Wykom			;KONIEC INICJACJI
Busy:
ldi acc,0xff
out dane,acc
sbi ster,RW
cbi ster,RS
sbi ster,E
sbic PIND, 7
rcall Busy
cbi ster,E
cbi ster, RW
ldi acc,0x41
out dane,acc
rcall Wydane
ldi acc,0b11111100
out ster, acc
Petla:
rjmp Petla

Wykom:
sbi ster, E
cbi ster,RS
cbi ster, E
ret

Wydane:
sbi ster, E
sbi ster,RS
cbi ster, E
cbi ster,RS
ret

sek:
out TCNT0, acc		; wartość początkowa licznika
ldi acc, 2
out TIMSK, acc 		;odblokuj przerwanie od T0
ldi acc, 3
out TCCR0, acc		; ustaw preskaler na 64 i wystartuj timer
Odlicz:
cp licznik, czas	; odmierza czas 1/244s
brne Odlicz
clr licznik			; zeruj licznik
ret

Timer:
inc licznik			; zwiększa o 1 licznik przepełnień timera T0
ldi acc, 2
out TIFR, acc
reti				;powrót z przerwania

Gienek
-
Posty: 32
Rejestracja: 01 sie 2003, 8:05
Lokalizacja: Tarn-Góry

Post autor: Gienek » 30 lis 2005, 16:26

Widzę że tutaj też zapuściłeś ten sam problem co na elektrodzie. Mogę jeszcze dodać że jak używasz definicji to odwołuj się przez tę definicję a nie w sposób dwojaki, bo to strasznie myli przy analizie programu. Czyżby tego nie zauważyłeś ?

ODPOWIEDZ