dispwrite:PUSH {R4,LR} /* send byte to display */
LDR R3,=LPC_GPIO0_BASE
MOVS R4,#1
LSRS R2,R0,#5
ANDS R2,R2,R4
LSLS R1,R2,#6
LSRS R2,R0,#6
ANDS R2,R2,R4
LSLS R2,R2,#7
ORRS R1,R2,R1
MOVS R2,#0b11000000
LSLS R2,R2,#2
STR R1,[R3,R2]
LDR R3,=LPC_GPIO1_BASE
MOV R2,R0
ANDS R2,R2,R4
LSLS R2,R2,#9
MOVS R1,#1
LSLS R1,R1,#11
STR R2,[R3,R1]
LDR R3,=LPC_GPIO2_BASE
LSRS R2,R0,#2
ANDS R2,R2,R4
LSLS R1,R2,#4
LSRS R2,R0,#3
ANDS R2,R2,R4
LSLS R2,R2,#5
ORRS R1,R1,R2
LSRS R2,R0,#7
ANDS R2,R2,R4
LSLS R2,R2,#9
ORRS R1,R1,R2
MOVS R2,#0b10001100
LSLS R2,R2,#4
STR R1,[R3,R2]
LDR R3,=LPC_GPIO3_BASE
LSRS R2,R0,#1
ANDS R2,R2,R4
LSLS R1,R2,#4
LSRS R2,R0,#4
ANDS R2,R2,R4
LSLS R2,R2,#5
ORRS R1,R1,R2
MOVS R2,#0b110000
LSLS R2,R2,#2
STR R1,[R3,R2]
LDR R3,=LPC_GPIO0_BASE
MOVS R2,#0b1000
STR R2,[R3,#0b100000] /* pulse E */
MOVS R0,#1
BL wait
MOVS R2,#0
STR R2,[R3,#0b100000]
POP {R4,PC}
/* ------------------------------------------------------------------------------------ */
|