lcdinit:
			push tmp1
			push lcddata
			ldi tmp1, 0
         ldi r30,low(InitData*2)
	   	ldi r31, high(InitData*2)
init:	
         lpm lcddata, Z+
			ldi tmp1, '$'
			cpse lcddata, tmp1
			rcall  WrCMD
			cpi lcddata, 0b00010000
			breq d1500
			rcall delay40mks
naz:
         ldi tmp1, '$'
			cpse tmp1, lcddata
			rjmp init
   		pop lcddata
   		pop tmp1
			ret


d1500:
 			rcall delay1500mks
 			rcall delay40mks
			rjmp naz



InitData:
.db 0b11000000, 0b00100000
.db 0b11000000, 0b00000000
.db 0b11000000, 0b00000000
.db 0b00010000, 0b00000000, '$'

WrCMD:
			push lcddata
			swap lcddata
			sbi portB, e
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			out portc, lcddata
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			cbi PortB, e
			pop lcddata
			ret

write:
			push lcddata
			swap lcddata
			sbi portB, e
			sbi portB, rs
		   	nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			out portc, lcddata
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			cbi PortB, e
			cbi portB, rs
			pop lcddata
			ret
