rendered paste body#include "1200def.inc"
#define LCD_RS PORTD5
#define LCD_E PORTD6
#define LCD_CTRL PORTD
#define LCD_DATA PORTB
.macro SendCmd
cbi LCD_CTRL, LCD_RS
nop
in r29, LCD_DATA
andi r29, 0xF0
mov r31, @0
mov r30, r31
andi r31, 0x0F
andi r30, 0xF0
swap r30
or r30, r29
out LCD_DATA, r30
rcall ToggleE
or r31, r29
out LCD_DATA, r31
rcall ToggleE
.endm
.macro Delay15ms
ldi r17, 20
ldi r16, low(250)
dec r16
brne PC-1
dec r17
brne PC-4
.endm
.org 0
cbi LCD_CTRL, LCD_RS
ldi r16, 0
out PORTB, r16
out PORTD, r16
ldi r16, 0x0F
out DDRB, r16
ldi r16, 0x60
out DDRD, r16
ldi r16, 0x03
out LCD_DATA, r16
delay15ms
rcall ToggleE
delay15ms
rcall ToggleE
delay15ms
rcall ToggleE
delay15ms
ldi r16, 0x02
out LCD_DATA, r16
rcall ToggleE
delay15ms
ldi r16, 0x28
SendCmd r16
delay15ms
ldi r16, 0x08
SendCmd r16
delay15ms
ldi r16, 0x01
SendCmd r16
delay15ms
ldi r16, 0x06
SendCmd r16
delay15ms
done:
rjmp done
nop
ToggleE:
nop
nop
nop
sbi LCD_CTRL, LCD_E
nop
nop
nop
cbi LCD_CTRL, LCD_E
nop
nop
nop
ret
.eseg
.org 0
.db "---|---N---|---W---|---S---|---E---|---N---|---W---|---S---|---E"
.exit
---|---N---|---W---|---S---|---E---|---N---|---W---|---S---|---E---|
-NW-|--N--|--NE
NW-|--N--|--NE-
W-|--N--|--NE-|
-|--N--|--NE-|-
|--N--|--NE-|--
--N--|--NE-|--E
-N--|--NE-|--E-
N--|--NE-|--E--
--|--NE-|--E--|
-|--NE-|--E--|-
|--NE-|--E--|--
--NE-|--E--|--S
-NE-|--E--|--SE
NE-|--E--|--SE-
E-|--E--|--SE-|
-|--E--|--SE-|-
|--E--|--SE-|--
--E--|--SE-|--S
-E--|--SE-|--S-
E--|--SE-|--S--
--|--SE-|--S--|
-|--SE-|--S--|-
|--SE-|--S--|--
--SE-|--S--|--S
-SE-|--S--|--SW
SE-|--S--|--SW-
E-|--S--|--SW-|
-|--S--|--SW-|-
|--S--|--SW-|--
--S--|--SW-|--W
-S--|--SW-|--W-
S--|--SW-|--W--
--|--SW-|--W--|
-|--SW-|--W--|-
|--SW-|--W--|--
--SW-|--W--|--N
-SW-|--W--|--NW
SW-|--W--|--NW-
W-|--W--|--NW-|
-|--W--|--NW-|-
|--W--|--NW-|--
--W--|--NW-|--N
-W--|--NW-|--N-
W--|--NW-|--N--
--|--NW-|--N--|
-|--NW-|--N--|-
|--NW-|--N--|--
--NW-|--N--|--N