annotate code_part1/OSTC_code_asm_part1/oled_samsung.asm @ 107:a2b9eca1f396

customview for the surfacemode
author heinrichsweikamp
date Mon, 20 Dec 2010 18:30:16 +0100
parents 3e351e25f5d1
children 6a94f96e9cea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1 ; OSTC - diving computer code
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2 ; Copyright (C) 2009 HeinrichsWeikamp GbR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18 ; hardware routines for S6E6D6 Samsung OLED Driver IC
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written: 090801
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; last updated: 090830
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 ; ToDo: Optimise PLED_box calls
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25 WIN_FONT macro win_font_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 movlw win_font_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 movff WREG,win_font
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
29
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
30 WIN_TOP macro win_top_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 movlw win_top_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 movff WREG,win_top
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
34
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
35 WIN_LEFT macro win_left_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
36 movlw win_left_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37 movff WREG,win_leftx2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
38 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
39
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
40 WIN_INVERT macro win_invert_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
41 movlw win_invert_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
42 movff WREG,win_invert
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
44
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 WIN_COLOR macro win_color_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
46 movlw win_color_input
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 call PLED_set_color
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
48 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
51 word_processor: ; word_processor:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52 clrf POSTINC2 ; Required!
83
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
53
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
54 ifdef AAFONTS
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
55 call aa_wordprocessor
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
56 movlb b'00000001' ; Back to Rambank1
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
57 else
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 movff win_color2,win_color2_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
59 movff win_color1,win_color1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
60 call main_wordprocessor ; C-Code
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
61 movlb b'00000001' ; Back to Rambank1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62 movff win_color2_temp,win_color2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63 movff win_color1_temp,win_color1
83
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
64 endif
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
65
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
66 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
67
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
68 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
69 ; PLED_SetColumnPixel:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71 PLED_SetColumnPixel:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
72 movwf LastSetColumn ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 movff LastSetColumn,win_leftx2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
74 movlw 0x21 ; Start Address Vertical (.0 - .319)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
75 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
76 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
77 rlcf LastSetColumn,W ; x2 -> WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
78 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
79 btfsc STATUS,C ; Result >255?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
80 movlw d'1' ; Yes: Upper=1!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
81 rcall PLED_DatWrite ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
82 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
83 rlcf LastSetColumn,W ; x2 -> WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
84 rcall PLED_DatWrite ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
86
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
87 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
88 ; PLED_SetRow:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
90 PLED_SetRow:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
91 movwf LastSetRow ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
92 movff LastSetRow,win_top
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
93 movlw 0x20 ; Horizontal Address START:END
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
95 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
96 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
97 movf LastSetRow,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
98 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
99 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
100
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
101 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102 ; PLED Write Two Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
104 PLED_PxlWrite:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105 movlw 0x22 ; Start Writing Data to GRAM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
106 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
107 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
108 movff win_color1,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
109 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110 bsf oled_rw ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111 movff win_color2,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
115 ; Reset Column+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 movlw 0x21 ; Start Address Vertical (.0 - .319)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
118 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
119 rlcf LastSetColumn,W ; x2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
120 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
121 btfsc STATUS,C ; Result >256?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122 movlw d'1' ; Yes!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 rcall PLED_DatWrite ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
124 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 rlcf LastSetColumn,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126 incf LastSetColumn,W ; x2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 rcall PLED_DatWrite ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
128
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 ; Reset Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130 movlw 0x20 ; Horizontal Address START:END
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
133 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
134 movf LastSetRow,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
136
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
137 ; Write 2nd Pixel on same row but one column to the right
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
138 movlw 0x22 ; Start Writing Data to GRAM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
141 movff win_color1,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
143 bsf oled_rw ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
144 movff win_color2,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
145 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
146 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
147 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
148
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
149 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
150 ; PLED Write One Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
151 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
152 PLED_PxlWrite_Single:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
153 movlw 0x22 ; Start Writing Data to GRAM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
154 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156 movff win_color1, PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
157 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158 bsf oled_rw ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
159 movff win_color2, PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
161 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
162 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
165 ; PLED Display Off
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
167 PLED_DisplayOff:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
168 clrf PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
169 bcf oled_hv
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
170 bcf oled_vdd
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
171 bcf oled_cs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
172 bcf oled_e_nwr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174 bcf oled_nreset
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
175 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
176
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
178 ; PLED FRAME (win_color1 and win_color2)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180 PLED_frame:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181 movf box_temp+0,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
182 call PLED_set_color
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
183 ; draw right line from row top (box_temp+1) to row bottom (box_temp+2)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
184 movff box_temp+1,draw_box_temp1 ; Store start row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 PLED_frame2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 movf draw_box_temp1,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 movf box_temp+3,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
189 call PLED_SetColumnPixel ; Set left column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
190 rcall PLED_PxlWrite_Single ; Write Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
191 incf draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
192 movf draw_box_temp1,W ; Copy to W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
193 cpfseq box_temp+2 ; Done?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
194 bra PLED_frame2 ; Not yet...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
195
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
196 movf draw_box_temp1,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
197 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
198 movf box_temp+3,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
199 call PLED_SetColumnPixel ; Set left column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
200 rcall PLED_PxlWrite_Single ; Write Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
201
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
202 ; draw left line from row top (box_temp+1) to row bottom (box_temp+2)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
203 movff box_temp+1,draw_box_temp1 ; Store start row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
204 PLED_frame3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205 movf draw_box_temp1,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
207 movf box_temp+4,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
208 call PLED_SetColumnPixel ; Set left column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
209 rcall PLED_PxlWrite_Single ; Write Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
210 incf draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
211 movf draw_box_temp1,W ; Copy to W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
212 cpfseq box_temp+2 ; Done?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
213 bra PLED_frame3 ; Not yet...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
214
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
215 movf draw_box_temp1,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
216 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
217 movf box_temp+4,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
218 call PLED_SetColumnPixel ; Set left column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
219 rcall PLED_PxlWrite_Single ; Write Pixel
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
220
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
221 ; draw top line from box_temp+3 (0-159) to box_temp+4 (0-159)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
222 movff box_temp+3,draw_box_temp1 ; Store start column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
223 PLED_frame4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
224 movf draw_box_temp1,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
225 rcall PLED_SetColumnPixel ; Set Column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
226 movf box_temp+1,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228 rcall PLED_PxlWrite ; Write 2 Pixels
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
229 incf draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
230 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
231 cpfseq box_temp+4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
232 bra PLED_frame4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
233
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
234 ; draw bottom line from box_temp+3 (0-159) to box_temp+4 (0-159)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
235 movff box_temp+3,draw_box_temp1 ; Store start column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
236 PLED_frame5:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
237 movf draw_box_temp1,W ; d'0' ... d'159'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
238 rcall PLED_SetColumnPixel ; Set Column
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239 movf box_temp+2,W ; d'0' ... d'239'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 rcall PLED_SetRow ; Set Row
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
241 rcall PLED_PxlWrite ; Write 2 Pixels
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
242 incf draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
243 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
244 cpfseq box_temp+4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
245 bra PLED_frame5
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
246
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
247 call PLED_standard_color
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
248
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
249 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
250
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
251 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
252 ; PLED Box (win_color1 and win_color2)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
253 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
254 PLED_box:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
255 movf box_temp+0,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
256 call PLED_set_color
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
257 ; /Define Window
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
258 movlw 0x35 ; VerticalStartAddress HIGH:LOW
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
259 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
260 movff box_temp+3,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
261 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
262 rlcf draw_box_temp1,W ; x2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
263 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
264 btfsc STATUS,C ; Result >255?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
265 movlw d'1' ; Yes: Upper=1!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
266 rcall PLED_DatWrite ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
267 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
268 rlcf draw_box_temp1,W ; x2 -> WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
269 rcall PLED_DatWrite ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
270
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
271 movlw 0x36 ; VerticalEndAddress HIGH:LOW
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
272 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
273 movff box_temp+4,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
274 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
275 rlcf draw_box_temp1,W ; x2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
276 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
277 btfsc STATUS,C ; Result >255?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
278 movlw d'1' ; Yes: Upper=1!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
279 rcall PLED_DatWrite ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
280 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
281 rlcf draw_box_temp1,W ; x2 -> WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
282 rcall PLED_DatWrite ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
283
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
284 movlw 0x37 ; HorizontalAddress START:END
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
285 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
286 movff box_temp+1,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
287 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
288 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
289 movff box_temp+2,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
290 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
291 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
292
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
293 movlw 0x20 ; Start Address Horizontal (.0 - .239)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
294 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
295 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
296 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
297 movff box_temp+1,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
298 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
299 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
300
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
301 movlw 0x21 ; Start Address Vertical (.0 - .319)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
302 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
303 movff box_temp+3,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
304 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
305 rlcf draw_box_temp1,W ; x2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
306 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
307 btfsc STATUS,C ; Result >255?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
308 movlw d'1' ; Yes: Upper=1!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
309 rcall PLED_DatWrite ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
310 bcf STATUS,C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
311 rlcf draw_box_temp1,W ; x2 -> WREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
312 rcall PLED_DatWrite ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
313 ; /Define Window
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
314
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
315 ; Fill Window
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
316 movlw 0x22 ; Start Writing Data to GRAM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
317 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
318
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
319 movff box_temp+1,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
320 movff box_temp+2,draw_box_temp2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
321 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
322 subwf draw_box_temp2,F ; X length
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
323 incf draw_box_temp2,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
324
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
325 movff box_temp+3,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
326 movff box_temp+4,draw_box_temp3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
327 movf draw_box_temp1,W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
328 subwf draw_box_temp3,F ; Y length/2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
329
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
330 incf draw_box_temp3,F ; Last pixel...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
331
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
332 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
333
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
334 PLED_box2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
335 movff draw_box_temp3,draw_box_temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
336 PLED_box3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
337 movff win_color1,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
338 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
339 bsf oled_rw ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
340 movff win_color2,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
341 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
342 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
343
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
344 movff win_color1,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
345 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
346 bsf oled_rw ; Upper
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
347 movff win_color2,PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
348 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
349 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
350
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
351 decfsz draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
352 bra PLED_box3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
353 decfsz draw_box_temp2,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
354 bra PLED_box2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
355
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
356 movlw 0x00 ; NOP, to stop Address Update Counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
357 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
358
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
359 call PLED_standard_color
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
360 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
361
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
362 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
363 ; PLED_ClearScreen:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
364 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
365 PLED_ClearScreen:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
366 movlw 0x35 ; VerticalStartAddress HIGH:LOW
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
367 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
368 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
369 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
370 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
371 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
372
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
373 movlw 0x36 ; VerticalEndAddress HIGH:LOW
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
374 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
375 movlw 0x01
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
376 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
377 movlw 0x3F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
378 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
379
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
380 movlw 0x37 ; HorizontalAddress START:END
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
381 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
382 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
383 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
384 movlw 0xEF
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
385 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
386
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
387 movlw 0x20 ; Start Address Horizontal (.0 - .239)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
388 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
389 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
390 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
391 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
392 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
393
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
394 movlw 0x21 ; Start Address Vertical (.0 - .319)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
395 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
396 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
397 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
398 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
399 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
400
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
401 movlw 0x22 ; Start Writing Data to GRAM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
402 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
403
83
3e351e25f5d1 adding anti-aliased fonts frame and merging some patches from Jeando
heinrichsweikamp
parents: 81
diff changeset
404 ; See Page 101 of OLED Driver IC Datasheet how to handle rs/rw clocks
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
405 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
406
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
407 movlw d'10'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
408 movwf draw_box_temp3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
409 PLED_ClearScreen2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
410 movlw d'30'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
411 movwf draw_box_temp2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
412 PLED_ClearScreen3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
413 clrf draw_box_temp1 ; 30*10*256=76800 Pixels -> Clear complete 240*320
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
414 PLED_ClearScreen4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
415
81
31fa973a70fd Kludges to emulate inexisting devices when debugged with the MPLAB software SIMulator.
JeanDo
parents: 3
diff changeset
416 clrf PORTD ; Need to generate trace here too.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
417 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
418 bsf oled_rw ; Upper
81
31fa973a70fd Kludges to emulate inexisting devices when debugged with the MPLAB software SIMulator.
JeanDo
parents: 3
diff changeset
419
31fa973a70fd Kludges to emulate inexisting devices when debugged with the MPLAB software SIMulator.
JeanDo
parents: 3
diff changeset
420 clrf PORTD ; Need to generate trace here too.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
421 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
422 bsf oled_rw ; Lower
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
423
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
424 decfsz draw_box_temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
425 bra PLED_ClearScreen4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
426 decfsz draw_box_temp2,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
427 bra PLED_ClearScreen3
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
428 decfsz draw_box_temp3,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
429 bra PLED_ClearScreen2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
430
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
431 movlw 0x00 ; NOP, to stop Address Update Counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
432 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
433
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
434 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
435
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
436
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
437 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
438 ; PLED Write Cmd via W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
439 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
440 PLED_CmdWrite:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
441 bcf oled_rs ; Command!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
442 movwf PORTD ; Move Data to PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
443 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
444 bsf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
445 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
446
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
447 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
448 ; PLED Write Display Data via W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
449 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
450 PLED_DataWrite:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
451
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
452 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
453 ; PLED Data Cmd via W
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
454 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
455 PLED_DatWrite:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
456 bsf oled_rs ; Data!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
457 movwf PORTD ; Move Data to PORTD
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
458 bcf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
459 bsf oled_rw
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
460 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
461
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
462 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
463 ; PLED boot
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
464 ; -----------------------------
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
465 PLED_boot:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
466 bcf oled_hv
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
467 WAITMS d'32'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
468 bsf oled_vdd
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
469 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
470 bcf oled_cs
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
471 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
472 bsf oled_nreset
3
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
473 ; WAITMS d'10' ; Quick wake-up
3cf8af30b36e v1.51 beta
heinrichsweikamp
parents: 2
diff changeset
474 WAITMS d'250' ; Standard wake-up
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
475 bsf oled_e_nwr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
476 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
477 bcf oled_nreset
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
478 WAIT10US d'2'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
479 bsf oled_nreset
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
480 WAITMS d'10'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
481
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
482 movlw 0x24 ; 80-System 8-Bit Mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
483 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
484
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
485 movlw 0x02 ; RGB Interface Control (S6E63D6 Datasheet page 42)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
486 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
487 movlw 0x00 ; X X X X X X X RM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
488 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
489 movlw 0x00 ; DM X RIM1 RIM0 VSPL HSPL EPL DPL
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
490 rcall PLED_DatWrite ; System Interface: RIM is ignored, Internal Clock
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
491
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
492 movlw 0x03 ; Entry Mode (S6E63D6 Datasheet page 46)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
493 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
494 movlw 0x00 ; =b'00000000' CLS MDT1 MDT0 BGR X X X SS 65k Color
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
495 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
496 movlw b'00110000' ; =b'00110000' X X I/D1 I/D0 X X X AM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
497 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
498
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
499 movlw 0x18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
500 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
501 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
502 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
503 movlw 0x28
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
504 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
505
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
506 movlw 0xF8
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
507 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
508 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
509 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
510 movlw 0x0F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
511 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
512
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
513 movlw 0xF9
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
514 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
515 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
516 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
517 movlw 0x0F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
518 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
519
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
520 movlw 0x10
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
521 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
522 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
523 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
524 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
525 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
526
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
527 ; Now Gamma settings...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
528 rcall PLED_brightness_full
2
d11ef8dc4b2c Bugfix: PC simulator
heinrichsweikamp
parents: 0
diff changeset
529 ;rcall PLED_brightness_low
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
530 ; End Gamma Settings
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
531
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
532 rcall PLED_ClearScreen
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
533
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
534 bsf oled_hv
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
535 WAITMS d'32'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
536
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
537 movlw 0x05
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
538 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
539 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
540 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
541 movlw 0x01
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
542 rcall PLED_DatWrite ; Display ON
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
543 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
544
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
545
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
546 PLED_brightness_full:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
547 movlw 0x70
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
548 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
549 movlw 0x1F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
550 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
551 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
552 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
553 movlw 0x71
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
554 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
555 movlw 0x23
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
556 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
557 movlw 0x80
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
558 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
559 movlw 0x72
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
560 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
561 movlw 0x2A
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
562 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
563 movlw 0x80
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
564 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
565
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
566 movlw 0x73
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
567 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
568 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
569 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
570 movlw 0x11
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
571 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
572 movlw 0x74
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
573 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
574 movlw 0x1C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
575 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
576 movlw 0x11
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
577 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
578
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
579 movlw 0x75
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
580 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
581 movlw 0x1B
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
582 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
583 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
584 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
585 movlw 0x76
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
586 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
587 movlw 0x1A
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
588 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
589 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
590 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
591
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
592 movlw 0x77
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
593 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
594 movlw 0x1C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
595 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
596 movlw 0x18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
597 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
598 movlw 0x78
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
599 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
600 movlw 0x21
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
601 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
602 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
603 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
604
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
605 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
606
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
607 PLED_brightness_low:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
608 movlw 0x70
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
609 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
610 movlw 0x14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
611 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
612 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
613 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
614 movlw 0x71
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
615 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
616 movlw 0x17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
617 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
618 movlw 0x00
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
619 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
620 movlw 0x72
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
621 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
622 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
623 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
624 movlw 0x80
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
625 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
626
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
627 movlw 0x73
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
628 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
629 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
630 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
631 movlw 0x11
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
632 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
633 movlw 0x74
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
634 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
635 movlw 0x14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
636 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
637 movlw 0x0B
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
638 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
639
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
640 movlw 0x75
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
641 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
642 movlw 0x1B
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
643 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
644 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
645 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
646 movlw 0x76
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
647 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
648 movlw 0x13
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
649 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
650 movlw 0x0E
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
651 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
652
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
653 movlw 0x77
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
654 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
655 movlw 0x1C
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
656 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
657 movlw 0x18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
658 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
659 movlw 0x78
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
660 rcall PLED_CmdWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
661 movlw 0x15
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
662 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
663 movlw 0x0E
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
664 rcall PLED_DatWrite
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
665
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
666 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
667
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
668 PLED_set_color:;Converts 8Bit RGB b'RRRGGGBB' into 16Bit RGB b'RRRRRGGGGGGBBBBB'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
669 movwf oled1_temp ; Get 8Bit RGB b'RRRGGGBB'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
670 movff oled1_temp, oled2_temp ; Copy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
671
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
672 ; Mask Bit 7,6,5,4,3,2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
673 movlw b'00000011'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
674 andwf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
675
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
676 movlw b'00000000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
677 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
678 movlw b'01010000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
679 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
680 movlw b'10100000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
681 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
682 movlw b'11111000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
683 movwf oled3_temp ; Blue done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
684
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
685 movff oled1_temp, oled2_temp ; Copy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
686 ; Mask Bit 7,6,5,1,0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
687 movlw b'00011100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
688 andwf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
689 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
690 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
691
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
692 movlw b'00000000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
693 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
694 movlw b'00000100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
695 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
696 movlw b'00001000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
697 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
698 movlw b'00001100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
699 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
700 movlw b'00010000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
701 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
702 movlw b'00010100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
703 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
704 movlw b'00100000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
705 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
706 movlw b'00111111'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
707 movwf oled4_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
708
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
709 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
710 rrcf oled3_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
711
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
712 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
713 rrcf oled3_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
714
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
715 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
716 rrcf oled3_temp,F ; oled3_temp (b'GGGBBBBB') done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
717
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
718 movff oled1_temp, oled2_temp ; Copy
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
719 clrf oled1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
720
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
721 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
722 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
723
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
724 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
725 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
726
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
727 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
728 rrcf oled1_temp,F ; Green done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
729
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
730 ; Mask Bit 4,3,2,1,0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
731 movlw b'11100000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
732 andwf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
733
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
734 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
735 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
736 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
737 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
738 rrncf oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
739
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
740 movlw b'00000000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
741 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
742 movlw b'00000100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
743 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
744 movlw b'00001000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
745 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
746 movlw b'00001100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
747 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
748 movlw b'00010000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
749 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
750 movlw b'00010100'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
751 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
752 movlw b'00100000'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
753 dcfsnz oled2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
754 movlw b'00111111'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
755 movwf oled4_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
756
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
757 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
758 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
759
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
760 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
761 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
762
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
763 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
764 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
765
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
766 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
767 rrcf oled1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
768
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
769 rrcf oled4_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
770 rrcf oled1_temp,F ; Red done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
771
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
772 movff oled1_temp,win_color1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
773 movff oled3_temp,win_color2 ; Set Bank0 Color registers...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
774 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
775