.include "m8def.inc"
.equ E = PB4
.equ CS1 = PB0
.equ CS2 = PB1
.equ RS = PB3
.equ RST = PB2
.equ D_M = PORTC ;mlodsza czesc PC
.equ D_S = PORTD ;starsza czesc PD
ldi R16,high(RAMEND) ;konieczna inicjalizacja stosu
out SPH,R16 ;wierzcholek na koncu RAMu
ldi R16,low(RAMEND) ;stos "zwisajacy", jak w x86
out SPL,R16
ldi R16,0x1F ;inicjalizacja portow
out DDRB,R16
ldi R16,0x0F
out DDRC,R16
ldi R16,0xF0
out DDRD,R16
rcall LCDinit
rcall LCDclear
Program:
cbi PORTB,CS2
cbi PORTB,RS
ldi R16,0x01
rcall Send
sbi PORTB,RS
ldi R16,0x80
rcall Send
rcall Send
ldi R16,0xC0
rcall Send
rcall Send
rcall Send
ldi R16,0x60
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0xE0
rcall Send
rcall Send
ldi R16,0xC0
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0x80
rcall Send
rcall Send
rcall Send
rcall ZerAdr
ldi R17,0x01
rcall ChangePage
ldi R17,0x3F
rcall ChangeAdr
cbi PORTB,CS1
ldi R16,0x02
rcall Send
rcall ZerAdr
cbi PORTB,CS2
ldi R16,0x03
rcall Send
ldi R16,0x01
rcall Send
rcall Send
ldi R17,0x0D
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x01
rcall Send
rcall Send
rcall Send
ldi R16,0x03
rcall Send
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x0F
rcall Send
rcall Send
ldi R16,0x1E
rcall Send
ldi R16,0x3E
rcall Send
ldi R16,0x7C
rcall Send
ldi R16,0xF8
rcall Send
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0x80
rcall Send
ldi R17,0x02
rcall ChangePage
ldi R17,0x19
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x03
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
ldi R16,0xFE
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xE0
rcall Send
ldi R17,0x03
rcall ChangePage
ldi R17,0x08
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x80
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xF0
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0x70
rcall Send
ldi R16,0x20
rcall Send
ldi R17,0x1B
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x03
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
ldi R17,0x04
rcall ChangePage
ldi R17,0x02
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x20
rcall Send
ldi R16,0x70
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xFC
rcall Send
ldi R16,0xFE
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0x7F
rcall Send
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0xFD
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0x80
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xFC
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
ldi R16,0x7F
rcall Send
ldi R16,0x1F
rcall Send
ldi R16,0x03
rcall Send
ldi R17,0x05
rcall ChangePage
ldi R17,0x34
rcall ChangeAdr
cbi PORTB,CS1
ldi R16,0x80
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xFC
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xC0
rcall Send
rcall Send
ldi R16,0x80
rcall Send
ldi R17,0x00
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x80
rcall Send
ldi R17,0x05
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x01
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x01
rcall Send
ldi R17,0x10
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x01
rcall Send
ldi R16,0x83
rcall Send
ldi R16,0xC7
rcall Send
ldi R16,0xCF
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0xFB
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xC0
rcall Send
ldi r16,0x80
rcall Send
ldi R17,0x06
rcall ChangePage
ldi R17,0x2C
rcall ChangeAdr
cbi PORTB,CS1
ldi R16,0x80
rcall Send
ldi R16,0xC0
rcall Send
ldi R16,0xE0
rcall Send
ldi R16,0xF0
rcall Send
ldi R16,0xF8
rcall Send
ldi R16,0xFC
rcall Send
ldi R16,0xFE
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
ldi R16,0x7F
rcall Send
ldi R16,0x3F
rcall Send
ldi R16,0x1F
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0x07
rcall Send
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0x1F
rcall Send
rcall Send
ldi R16,0x3F
rcall Send
rcall Send
ldi R17,0x00
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x3F
rcall Send
rcall Send
rcall Send
ldi R16,0x7F
rcall Send
rcall Send
ldi R16,0x7E
rcall Send
rcall Send
rcall Send
ldi R16,0xFE
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0x7E
rcall Send
rcall Send
rcall Send
ldi R16,0x3F
rcall Send
rcall Send
rcall Send
ldi R16,0x1F
rcall Send
rcall Send
ldi R16,0x0F
rcall Send
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x01
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0x1F
rcall Send
ldi R16,0x3F
rcall Send
ldi R16,0x7F
rcall Send
ldi R16,0xFF
rcall Send
rcall Send
rcall Send
rcall Send
rcall Send
ldi R16,0xFE
rcall Send
ldi R16,0xFC
rcall Send
ldi R16,0x78
rcall Send
ldi R16,0x30
rcall Send
ldi R17,0x07
rcall ChangePage
ldi R17,0x2D
rcall ChangeAdr
cbi PORTB,CS1
ldi R16,0x01
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x0F
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x01
rcall Send
ldi R17,0x20
rcall ChangeAdr
cbi PORTB,CS2
ldi R16,0x01
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x07
rcall Send
ldi R16,0x03
rcall Send
ldi R16,0x01
rcall Send
End:
rjmp End
LCDinit:
cbi PORTB,RST
nop
sbi PORTB,RST
cbi PORTB,CS1
cbi PORTB,CS2
cbi PORTB,RS
cbi PORTB,E
ldi R16,0x3F
rcall Send
sbi PORTB,CS1
sbi PORTB,CS2
sbi PORTB,RST
ret
Send:
mov R17,R16
andi R17,0x0F
out D_M,R17
mov R17,R16
andi R17,0xF0
out D_S,R17
sbi PORTB,E
nop
nop
nop
cbi PORTB,E
ret
LCDclear:
cbi PORTB,CS1
cbi PORTB,CS2
cbi PORTB,RS
ldi R16,0xB8
rcall Send
ldi R16,0x40
rcall Send
sbi PORTB,RS
ldi R21,0x00
Pion:
ldi R20,0x40
Poziom:
ldi R16,0x00
rcall Send
dec R20
brne Poziom
cbi PORTB,RS
ldi R16,0x41
rcall Send
ldi R16,0xB8
or R16,R21
rcall Send
sbi PORTB,RS
inc R21
cpi R21,0x09
brne Pion
cbi PORTB,RS
ldi R16,0xB8
rcall Send
ldi R16,0x40
rcall Send
sbi PORTB,RS
sbi PORTB,CS1
sbi PORTB,CS2
ret
ZerAdr:
cbi PORTB,CS1
cbi PORTB,CS2
cbi PORTB,RS
ldi R16,0x40
rcall Send
sbi PORTB,RS
sbi PORTB,CS1
sbi PORTB,CS2
ret
ChangeAdr:
cbi PORTB,CS1
cbi PORTB,CS2
cbi PORTB,RS
ldi R16,0x40
or R16,R17
rcall Send
sbi PORTB,CS1
sbi PORTB,CS2
sbi PORTB,RS
ret
ChangePage:
cbi PORTB,CS1
cbi PORTB,CS2
cbi PORTB,RS
ldi R16,0xB8
or R16,R17
rcall Send
sbi PORTB,CS1
sbi PORTB,CS2
sbi PORTB,RS
ret