added ili9341_WriteCharacterAt.
This commit is contained in:
@@ -24,6 +24,9 @@
|
|||||||
|
|
||||||
.dseg
|
.dseg
|
||||||
|
|
||||||
|
ILI9341_foregroundColor: .byte 2
|
||||||
|
ILI9341_backgroundColor: .byte 2
|
||||||
|
ILI9341_buffer: .byte 128
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
@@ -71,6 +74,39 @@ ILI9341_Init:
|
|||||||
ldi r16, 0b11100000 ; green
|
ldi r16, 0b11100000 ; green
|
||||||
rcall ili9341Test4
|
rcall ili9341Test4
|
||||||
|
|
||||||
|
; set foreground color
|
||||||
|
ldi r16, 0b11100000 ; green
|
||||||
|
mov r2, r16
|
||||||
|
ldi r16, 0b00000111 ; green
|
||||||
|
mov r3, r16
|
||||||
|
|
||||||
|
; set background color
|
||||||
|
ldi r16, 0b11111111 ; white
|
||||||
|
mov r0, r16
|
||||||
|
mov r1, r16
|
||||||
|
|
||||||
|
; set Xpos
|
||||||
|
ldi r18, LOW(100)
|
||||||
|
ldi r19, LOW(100)
|
||||||
|
|
||||||
|
; setYpos
|
||||||
|
ldi r20, LOW(150)
|
||||||
|
ldi r21, HIGH(150)
|
||||||
|
|
||||||
|
; set font pos
|
||||||
|
ldi zl, LOW(font8x8*2)
|
||||||
|
ldi zh, HIGH(font8x8*2)
|
||||||
|
|
||||||
|
; set buffer pos
|
||||||
|
; ldi xl, LOW(ILI9341_buffer)
|
||||||
|
; ldi xh, HIGH(ILI9341_buffer)
|
||||||
|
ldi xl, LOW(0x260)
|
||||||
|
ldi xh, HIGH(0x260)
|
||||||
|
|
||||||
|
; set character
|
||||||
|
ldi r16, 65
|
||||||
|
|
||||||
|
rcall ili9341_WriteCharacterAt
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
@@ -325,6 +361,109 @@ ili9341SetAddressWindow:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine ili9341_WriteCharacterAt
|
||||||
|
|
||||||
|
; @param R16 character to write
|
||||||
|
; @param r19:r18 X pos
|
||||||
|
; @param r21:r20 Y pos
|
||||||
|
; @param R01:R00 background color
|
||||||
|
; @param R03:R02 foreground color
|
||||||
|
; @param X pointer to font
|
||||||
|
; @param Y pointer to RAM to store data to
|
||||||
|
; @clobbers
|
||||||
|
|
||||||
|
ili9341_WriteCharacterAt:
|
||||||
|
push xl
|
||||||
|
push xh
|
||||||
|
rcall ili9341WriteCharacterFromFont8x8 ; (r17, r24, r25, x, z)
|
||||||
|
pop xh
|
||||||
|
pop xl
|
||||||
|
ldi r17, 7
|
||||||
|
; calc X1
|
||||||
|
mov r22, r18
|
||||||
|
mov r23, r19
|
||||||
|
add r22, r17
|
||||||
|
adc r23, r17
|
||||||
|
sub r23, r17
|
||||||
|
; calc Y1
|
||||||
|
mov r24, r20
|
||||||
|
mov r25, r21
|
||||||
|
add r24, r17
|
||||||
|
adc r25, r17
|
||||||
|
sub r25, r17
|
||||||
|
|
||||||
|
rcall ili9341BeginSpi ; (r16, r17)
|
||||||
|
rcall ili9341SetAddressWindow ; (R16)
|
||||||
|
ldi r16, ILI9341_CMD_RAMWR ; start writing ro RAM
|
||||||
|
rcall ili9341SendCommand
|
||||||
|
ldi r17, 64 ; 8x8
|
||||||
|
ili9341_WriteCharacterAt_loop:
|
||||||
|
ld r18, X+
|
||||||
|
ld r19, X+
|
||||||
|
rcall ili9341Send16BitData
|
||||||
|
dec r17
|
||||||
|
brne ili9341_WriteCharacterAt_loop
|
||||||
|
rcall ili9341EndSpi
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine ili9341WriteCharacterFromFont8x8
|
||||||
|
|
||||||
|
; @param R16 character to write
|
||||||
|
; @param R01:R00 background color
|
||||||
|
; @param R03:R02 foreground color
|
||||||
|
; @param Z pointer to font
|
||||||
|
; @param X pointer to RAM to store data to
|
||||||
|
; @clobbers r17, r24, r25, x, z
|
||||||
|
|
||||||
|
ili9341WriteCharacterFromFont8x8:
|
||||||
|
mov r24, r16
|
||||||
|
lpm r17, Z+ ; first char num
|
||||||
|
sub r24, r17
|
||||||
|
brcc ili9341WriteCharacterFromFont8x8_firstValueOkay
|
||||||
|
clr r24 ; use first char
|
||||||
|
adiw zh:zl, 1
|
||||||
|
rjmp ili9341WriteCharacterFromFont8x8_transform ; skip next test
|
||||||
|
ili9341WriteCharacterFromFont8x8_firstValueOkay:
|
||||||
|
lpm r17, Z+
|
||||||
|
cp r24, r17
|
||||||
|
brcc ili9341WriteCharacterFromFont8x8_transform ; use first char
|
||||||
|
ili9341WriteCharacterFromFont8x8_gotPos:
|
||||||
|
clr r25
|
||||||
|
lsl r24 ; R16x8
|
||||||
|
rol r25
|
||||||
|
lsl r24
|
||||||
|
rol r25
|
||||||
|
lsl r24
|
||||||
|
rol r25
|
||||||
|
add zl, r24
|
||||||
|
adc zh, r25
|
||||||
|
ili9341WriteCharacterFromFont8x8_transform:
|
||||||
|
ldi r25, 8 ; 8 bytes
|
||||||
|
ili9341WriteCharacterFromFont8x8_loop1:
|
||||||
|
ldi r24, 8 ; 8 bits
|
||||||
|
lpm r17, Z+
|
||||||
|
ili9341WriteCharacterFromFont8x8_loop2:
|
||||||
|
lsr r17
|
||||||
|
brcs ili9341WriteCharacterFromFont8x8_writeForeground
|
||||||
|
st X+, r0
|
||||||
|
st X+, r1
|
||||||
|
rjmp ili9341WriteCharacterFromFont8x8_loop2end
|
||||||
|
ili9341WriteCharacterFromFont8x8_writeForeground:
|
||||||
|
st X+, r2
|
||||||
|
st X+, r3
|
||||||
|
ili9341WriteCharacterFromFont8x8_loop2end:
|
||||||
|
dec r24
|
||||||
|
brne ili9341WriteCharacterFromFont8x8_loop2
|
||||||
|
dec r25
|
||||||
|
brne ili9341WriteCharacterFromFont8x8_loop1
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ili9341SendCommand:
|
ili9341SendCommand:
|
||||||
@@ -353,9 +492,9 @@ ili9341Send16BitData:
|
|||||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
||||||
mov r16, r19
|
mov r16, r19
|
||||||
rcall SPIHW_MasterTransfer
|
rcall SPIHW_MasterTransfer ; (R16)
|
||||||
mov r16, r18
|
mov r16, r18
|
||||||
rcall SPIHW_MasterTransfer
|
rcall SPIHW_MasterTransfer ; (R16)
|
||||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -495,6 +634,15 @@ l_loopW_%:
|
|||||||
|
|
||||||
ili9341Test2:
|
ili9341Test2:
|
||||||
M_ILI9341_FILL_RECT 10, 20, 70, 100
|
M_ILI9341_FILL_RECT 10, 20, 70, 100
|
||||||
|
ldi r18, LOW(10) ; X
|
||||||
|
ldi r19, HIGH(10)
|
||||||
|
ldi r20, LOW(20) ; Y
|
||||||
|
ldi r21, HIGH(20)
|
||||||
|
ldi r22, LOW(70) ; W
|
||||||
|
ldi r23, HIGH(70)
|
||||||
|
ldi r24, LOW(100) ; H
|
||||||
|
ldi r25, HIGH(100)
|
||||||
|
rjmp ILI9341_FillRect
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user