#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