Näide 1
Näide 1
LCD seadistamine
Näites vajaminevaid viiteid pole näitesse kirjutatud
need peaksid olema eelnevalt õpitud ja nende kohta saab infot õpiobjektist “Mikrokontrolleri ATmega88 ajalise viite realiseerimine
tarkvaras”.
;---LCD algne seadistamine 8 biti režiimi-------
rcall w20ms ;Kuna
LCD on palju aeglasema toimega kui mikroprotsessor,
rcall w20ms ;siis
on vaja esmalt oodata vähemalt 30ms,et LCD jõuaks reageerida
cbi portc, 4 ;R/W
= "0" toimub info kirjutamine LCD'sse
cbi portb, 2 ;RS
= "0" vastuvõetud info kirjutatakse juhtregistrisse
ldi r16, 0b00111100 ;registrisse
r16 laetakse 0b00111100 ehk lülitatakse sisse ekraan ;ja pannakse LCD tööle
kahe rea režiimis
out portd, r16 ;registri
r16 sisu saadetakse porti D
rcall LCDenable ;kutsutakse
välja alamprogramm, mis tekitab impulsi E sisendisse
rcall w1ms ;kutsutakse
välja alamprogramm, mis tekitab viite 1ms, selleks, ;et LCD jõuaks reageerida
ja uued andmed ei jõuaks LCDni ;ennem, kui LCD on võimeline neid vastu võtma
ldi r16, 0b00001111 ;registrisse
r16 laetakse 0b00001111 ehk ekraan lülitatakse sisse, ;kursor lülitatakse
sisse ja kursor pannakse plinkima
out portd, r16 ;registri
r16 sisu saadetakse porti D
rcall LCDenable ;kutsutakse
välja alamprogramm, mis tekitab impulsi E sisendisse
rcall w1ms ;kutsutakse
välja alamprogramm, mis tekitab viite ;1ms, selleks, et LCD jõuaks reageerida
ja uued andmed ei jõuaks ;LCDni ennem, kui LCD on võimeline neid vastu võtma
ldi r16, 0b00000001 ;registrisse
r16 laetakse 0b00000001 ehk ekraan puhastatakse
out portd, r16 ;registri
r16 sisu saadetakse porti D
rcall LCDenable ;kutsutakse
välja alamprogramm, mis tekitab impulsi E sisendisse
rcall w1ms ;kutsutakse
välja alamprogramm, mis tekitab viite 1ms, selleks, ;et LCD jõuaks reageerida
ja uued andmed ei jõuaks LCDni ;ennem, kui LCD on võimeline neid vastu võtma
ldi r16, 0b00000110 ;registrisse
r16 laetakse 0b00000110 ehk lülitatakse sisse ;inkrement režiim ja lülitatakse
välja nihutamise funktsioon
out portd, r16 ;registri
r16 sisu saadetakse porti D
rcall LCDenable ;kutsutakse
välja alamprogramm, mis tekitab impulsi E sisendisse
rcall w1ms ;kutsutakse
välja alamprogramm, mis tekitab viite 1ms, selleks, ;et LCD jõuaks reageerida
ja uued andmed ei jõuaks LCDni ;ennem, kui LCD on võimeline neid vastu võtma
rcall w1ms ;viidet
kutsutakse kakskorda järjest, kuna antud seadistuse ;tegemine nõuab LCD'lt
pikemat aega
;------Lõputu tsükkel--------------------------
Loop: ;see
on lõputu tsükkel, mis on tehtud selleks, et ;kui programmi täitmine lõppeb,
siis jääb programm siia tsüklisse
rjmp Loop
;--------Enable signaali andmine LCD'le--------
LCDenable: ;märgend
programmis, mille järgi saab pöörduda selle koha poole ;programmis
sbi portc, 5 ;pordi
C viies bitt pannakse üheks
rcall w1ms ;kutsutakse
välja viide 1ms, et LCD jõuaks oleku muutusele reageerida
cbi portc, 5 ;pordi
C viies bitt pannakse tagasi nulliks
ret ;pöördutakse
programmis tagasi kohta kust kutsuti rcall ;käsuga välja LCDenable
;-------Viited---------------------------------
w1ms: ;märgend
programmis mille järgi saab pöörduda viite 1ms poole
w20ms: ;märgend
programmis mille järgi saab pöörduda viite 20ms poole
;viiteid
pole siin kirjas neid saab vaadata õpiobjektist, mis ;selgitab viite tegemist |