307 lines
4.2 KiB
NASM
307 lines
4.2 KiB
NASM
init_hardware:
|
|
;--setup port directions--
|
|
;bias
|
|
ldi r16,EXP2(bias_ctrl)
|
|
sts bias_port,r16
|
|
ldi r16,0x18
|
|
sts bias_port-1,r16
|
|
;lcd
|
|
|
|
ldi r16,255 ;data as output
|
|
out lcd_data-1,r16
|
|
ldi r16,0
|
|
out lcd_data,r16
|
|
|
|
|
|
sbi lcd_pins-1,A0
|
|
sbi lcd_pins-1,WR
|
|
sbi lcd_pins-1,RD
|
|
sbi lcd_pins-1,LCS
|
|
|
|
sbi DDRD,7
|
|
; sbi lcd_pins-1,LCD_RST
|
|
|
|
sbi PORTD,7
|
|
|
|
cbi lcd_pins,LCD_RST
|
|
sbi lcd_pins,A0
|
|
sbi lcd_pins,WR
|
|
sbi lcd_pins,RD
|
|
cbi lcd_pins,LCS
|
|
|
|
|
|
|
|
;external memory
|
|
ldi r16,128+64
|
|
out MCUCR,r16
|
|
|
|
ldi r16,1
|
|
sts XMCRA,r16 ;wait states
|
|
|
|
;external memory hack
|
|
ldi r16, 0xFF ;make top address output if XMMset
|
|
out DDRC, r16
|
|
ldi r16, 0x00 ;Make sure its zero!
|
|
out PORTC, r16
|
|
|
|
;setup Rs232
|
|
ldi r16,0x00
|
|
out UCSR0B,r16
|
|
out UCSR0A,r16
|
|
|
|
ldi r16,0x98 ;enable tx,rx and rxint 0x98 (0x18 no int)
|
|
out UCSR0B,r16
|
|
ldi r16,16 ;56000bps
|
|
; ldi r16,103 ;9600bps
|
|
out UBRR0L,r16
|
|
|
|
|
|
;---INITALISE VARIABLE--
|
|
clr buff_tail ;points to next char to read
|
|
clr buff_head ;points to last place stored in buffer,so (head=tail)-> empty, (tail-head = 1)->full
|
|
|
|
clr cus_x
|
|
clr cus_y
|
|
|
|
clr r16
|
|
sts vram_address,r16
|
|
sts vram_address+1,r16
|
|
|
|
|
|
;------------------------
|
|
|
|
|
|
|
|
|
|
rcall delay_1ms
|
|
rcall lcd_reset
|
|
rcall delay_1ms
|
|
rcall bias_reset
|
|
rcall delay_1ms
|
|
cbi lcd_pins,LCS
|
|
rcall delay_1ms
|
|
sbi lcd_pins,LCS
|
|
|
|
ldi r16,31
|
|
bias_loop:
|
|
rcall bias_inc
|
|
dec r16
|
|
brne bias_loop
|
|
|
|
rcall lcd_init
|
|
rcall clear_text_ram
|
|
|
|
ret
|
|
|
|
|
|
|
|
clear_text_ram:
|
|
push r16
|
|
push r17
|
|
push r18
|
|
push r19
|
|
push ZL
|
|
push ZH
|
|
|
|
ldi ZL,low(vram_text)
|
|
ldi ZH,high(vram_text)
|
|
|
|
ldi r17,1 ;command
|
|
ldi r16,0x42
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
|
|
|
|
ldi r19,lines_screen
|
|
clear_text_ram_l1:
|
|
ldi r18,chars_line
|
|
clear_text_ram_l2:
|
|
ldi r16,0x20
|
|
rcall lcd_send_data ;clear
|
|
st Z+,r17 ;clear internal vram also
|
|
|
|
dec r18
|
|
brne clear_text_ram_l2
|
|
dec r19
|
|
|
|
brne clear_text_ram_l1
|
|
|
|
;cursor 0,0
|
|
ldi r17,1 ;command
|
|
ldi r16,0x46
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
pop ZH
|
|
pop ZL
|
|
pop r19
|
|
pop r18
|
|
pop r17
|
|
pop r16
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd_init:
|
|
;SYSTEM SET
|
|
ldi r17,1 ;command
|
|
ldi r16,0x40
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x31 ;use CGRAM
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x87
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x07
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x27
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x2F
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0xC7
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x50 ;make a line 80 chars long (displays 40)
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
;CHARACTER RAM ADDR
|
|
ldi r17,1 ;command
|
|
ldi r16,0x5C
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0xf0
|
|
rcall lcd_send_data
|
|
|
|
|
|
;SCROLL
|
|
ldi r17,1 ;command
|
|
ldi r16,0x44
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0xc7
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x05
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0xc7
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
;DISPLAY OFFSET
|
|
ldi r17,1 ;command
|
|
ldi r16,0x5a
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
;CUSOR POSITION 0,0
|
|
ldi r17,1 ;command
|
|
ldi r16,0x46
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
;OVERLAY, TEXT + GRAPHICS
|
|
ldi r17,1 ;command
|
|
ldi r16,0x5b
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x00
|
|
rcall lcd_send_data
|
|
|
|
;CURSOR TYPE (BLOCK 8X8)
|
|
ldi r17,1 ;command
|
|
ldi r16,0x5D
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x07
|
|
rcall lcd_send_data
|
|
|
|
ldi r16,0x87
|
|
rcall lcd_send_data
|
|
|
|
;CURSOR DIR
|
|
ldi r17,1 ;command
|
|
ldi r16,0x4C
|
|
rcall lcd_send_data
|
|
|
|
|
|
|
|
;DISPLAY ON
|
|
ldi r17,1 ;command
|
|
ldi r16,0x59
|
|
rcall lcd_send_data
|
|
|
|
clr r17
|
|
|
|
ldi r16,0x06
|
|
rcall lcd_send_data
|
|
;-----
|
|
|
|
|
|
RET
|