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