.include "m8def.inc"
LDI r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi r16, $ff
out ddrd, r16
out ddrb, r16
;------ustawieniaLCD-----------------------
; 1DNF
rcall LCDsetupON
ldi r17,0b00110000 ;
out portd,r17 ;
rcall LCDsetupOFF ;
rcall czekaj ;
;------obsługa---LCD-----------------------
; 1BCD
rcall LCDsetupON
ldi r17,0b00001111 ; D: Display On/Off
out portd,r17 ; C: Cursor On/Off.
rcall LCDsetupOFF ; B: Cursor blink on/off.
rcall czekaj
rcall czyszczenie
;-----------------------------------------
ldi r16, 'V'
rcall wpiszZnak
ldi r16, ':'
rcall wpiszZnak
rcall wiersz2
ldi r16, 'A'
rcall wpiszZnak
ldi r16, ':'
rcall wpiszZnak
;ldi R16, 1>>PC0 -port
;rcall stanac
start:
rjmp start
;-----wpiszZnak------
wpiszZnak:
rcall LCDdataON
out portd,r16
rcall LCDdataOFF
ret
;-----przesuniecie-w-lewo-
wlewo:
rcall LCDsetupON
ldi r17,0b00011000
out portd,r17
rcall LCDsetupOFF
rcall czekaj
ret
;-----przesuniecie-w-prawo-
wprawo:
rcall LCDsetupON
ldi r17,0b00011100
out portd,r17
rcall LCDsetupOFF
rcall czekaj
ret
;-----wiersz2--------
wiersz2:
rcall LCDsetupON
ldi r17,0b11000000
out portd,r17
rcall LCDsetupOFF
rcall czekaj
ret
;-----czyszczenie----
czyszczenie:
rcall LCDsetupON
ldi r17,0b00000001
out portd,r17
rcall LCDsetupOFF
rcall czekaj
ret
;-----powrót-kursor--
powrot:
rcall LCDsetupON
ldi r17, 0b00000010
out portd,r17
rcall LCDsetupOFF
rcall czekaj
ret
;--------------------
;lcd rs rw e
; / 4 5 6 pin
;mega8 rs rw e
; / b0 b1 b2 pin
;--------------------
LCDsetupON: ;dla trybu transferu ustawień
ldi r17,0b00000100 ;RW -0
out portb,r17 ;RS -0
ret ;E -1
LCDsetupOFF:
ldi r17,0b00000000
out portb,r17
ret
;--------------------
;E 1 - transfer 0 -idle
;RW 0 - zapis 1- odczyt
;RS 0 - komendy; 1 - dane
;--------------------
LCDdataON: ;dla trybu transferu danych
ldi r17, 0b00000101 ;RW-0
out portb,r17 ;RS-1
ret ;E -1
LCDdataOFF:
ldi r17, 0b00000001
out portb,r17
ret
;------czekaj--------
czekaj:
/*ldi r20,$ff
czekaj2:
ldi r21,$ff
czekaj1:
dec r21
brne czekaj1
dec r20
brne czekaj2*/
ret
;---odczyt_AC-------
stanAC:
ldi R20, 0b11000000 ; PAX jako wejscie przetwornika napięcia i wybieramy
add R20, R16 ; r16 nr kanału
out ADMUX, R20 ; napięcie odniesienia Vref wewnętrzne 2,56V z kondensatorem na pinie AREF
ldi R21, 0b11100110 ; ustawiam prescaler ADC na 64 (8MHz/64=128 kHz) i startujemy
out ADCSRA, R21
Konwersja_n:
sbis ADCSRA, ADIF ; czekamy na zakończenie konwersji (ADIF=1)
rjmp Konwersja_n
sbi ADCSRA, ADIF ; zeruj znacznik zakończenia konwersji
; in R16, ADCL
in R17, ADCH
ret
;--------------------