📄 lcdtest.lst
字号:
\ ??delayMs_2:
\ 00000008 0120B0E1 MOVS R2,R1
\ 0000000C 011052E2 SUBS R1,R2,#+1
\ 00000010 000052E3 CMP R2,#+0
\ 00000014 FBFFFF1A BNE ??delayMs_2
167 }
\ ??delayMs_0:
\ 00000018 0010B0E1 MOVS R1,R0
\ 0000001C 010051E2 SUBS R0,R1,#+1
\ 00000020 000051E3 CMP R1,#+0
\ 00000024 F6FFFF1A BNE ??delayMs_1
168 }
\ 00000028 1EFF2FE1 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
169 void delayus(unsigned int counter)
170 {
\ delayus:
\ 00000000 040000EA B ??delayus_0
171 unsigned int i;
172
173 while(counter--)
174 {
175 i = 3; //1ms延时基数.
\ ??delayus_1:
\ 00000004 0310A0E3 MOV R1,#+3
176 while(i--);
\ ??delayus_2:
\ 00000008 0120B0E1 MOVS R2,R1
\ 0000000C 011052E2 SUBS R1,R2,#+1
\ 00000010 000052E3 CMP R2,#+0
\ 00000014 FBFFFF1A BNE ??delayus_2
177 }
\ ??delayus_0:
\ 00000018 0010B0E1 MOVS R1,R0
\ 0000001C 010051E2 SUBS R0,R1,#+1
\ 00000020 000051E3 CMP R1,#+0
\ 00000024 F6FFFF1A BNE ??delayus_1
178 }
\ 00000028 1EFF2FE1 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
179 void SEND2LCM(char data_reg,unsigned int dat)
180 { char i;
\ SEND2LCM:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 0140B0E1 MOVS R4,R1
181
182 __PIO_CODRB=LCD_CS; //LCD_CS=0
\ 00000008 CB10E0E3 MVN R1,#+203
\ 0000000C FF1CC1E3 BIC R1,R1,#0xFF00
\ 00000010 8027A0E3 MOV R2,#+33554432
\ 00000014 002081E5 STR R2,[R1, #+0]
183
184 if(data_reg)
\ 00000018 000050E3 CMP R0,#+0
\ 0000001C 0400000A BEQ ??SEND2LCM_0
185 { __PIO_SODRB=LCD_RS;} //LCD_RS=1
\ 00000020 CF00E0E3 MVN R0,#+207
\ 00000024 FF0CC0E3 BIC R0,R0,#0xFF00
\ 00000028 4017A0E3 MOV R1,#+16777216
\ 0000002C 001080E5 STR R1,[R0, #+0]
\ 00000030 030000EA B ??SEND2LCM_1
186 else
187 { __PIO_CODRB=LCD_RS;} //LCD_RS=0
\ ??SEND2LCM_0:
\ 00000034 CB00E0E3 MVN R0,#+203
\ 00000038 FF0CC0E3 BIC R0,R0,#0xFF00
\ 0000003C 4017A0E3 MOV R1,#+16777216
\ 00000040 001080E5 STR R1,[R0, #+0]
188
189 delayus(1);
\ ??SEND2LCM_1:
\ 00000044 0100A0E3 MOV R0,#+1
\ 00000048 ........ BL delayus
190
191
192 for(i=0;i<8;i++)
\ 0000004C 0000A0E3 MOV R0,#+0
\ 00000050 090000EA B ??SEND2LCM_2
193 { __PIO_CODRB=LCD_CLK; //LCD_CLK=0;
194
195 if((dat & 0x80)!=0)
196 __PIO_SODRB=LCD_DAT; //LCD_DAT=1
197 else
198 __PIO_CODRB=LCD_DAT; //LCD_DAT=0
\ ??SEND2LCM_3:
\ 00000054 CB10E0E3 MVN R1,#+203
\ 00000058 FF1CC1E3 BIC R1,R1,#0xFF00
\ 0000005C 4029A0E3 MOV R2,#+1048576
\ 00000060 002081E5 STR R2,[R1, #+0]
199
200
201 __PIO_SODRB=LCD_CLK; //LCD_CLK=1
\ ??SEND2LCM_4:
\ 00000064 CF10E0E3 MVN R1,#+207
\ 00000068 FF1CC1E3 BIC R1,R1,#0xFF00
\ 0000006C 8028A0E3 MOV R2,#+8388608
\ 00000070 002081E5 STR R2,[R1, #+0]
202
203 dat=dat<<1;
\ 00000074 8440B0E1 LSLS R4,R4,#+1
\ 00000078 010090E2 ADDS R0,R0,#+1
\ ??SEND2LCM_2:
\ 0000007C FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000080 080050E3 CMP R0,#+8
\ 00000084 0A00002A BCS ??SEND2LCM_5
\ 00000088 CB10E0E3 MVN R1,#+203
\ 0000008C FF1CC1E3 BIC R1,R1,#0xFF00
\ 00000090 8028A0E3 MOV R2,#+8388608
\ 00000094 002081E5 STR R2,[R1, #+0]
\ 00000098 800014E3 TST R4,#0x80
\ 0000009C ECFFFF0A BEQ ??SEND2LCM_3
\ 000000A0 CF10E0E3 MVN R1,#+207
\ 000000A4 FF1CC1E3 BIC R1,R1,#0xFF00
\ 000000A8 4029A0E3 MOV R2,#+1048576
\ 000000AC 002081E5 STR R2,[R1, #+0]
\ 000000B0 EBFFFFEA B ??SEND2LCM_4
204 }
205
206
207 __PIO_SODRB=LCD_CS; //LCD_CS=1
\ ??SEND2LCM_5:
\ 000000B4 CF00E0E3 MVN R0,#+207
\ 000000B8 FF0CC0E3 BIC R0,R0,#0xFF00
\ 000000BC 8017A0E3 MOV R1,#+33554432
\ 000000C0 001080E5 STR R1,[R0, #+0]
208 delayus(1);
\ 000000C4 0100A0E3 MOV R0,#+1
\ 000000C8 ........ BL delayus
209 }
\ 000000CC 1040BDE8 POP {R4,LR}
\ 000000D0 1EFF2FE1 BX LR ;; return
210
\ In segment CODE, align 4, keep-with-next
211 void LCDclear(unsigned int dat1,unsigned int dat2)
212 {unsigned int i,j;
\ LCDclear:
\ 00000000 F0402DE9 PUSH {R4-R7,LR}
\ 00000004 0040B0E1 MOVS R4,R0
\ 00000008 0150B0E1 MOVS R5,R1
213
214 for(i=0xb0;i<0xb8;i++)
\ 0000000C B060A0E3 MOV R6,#+176
\ 00000010 090000EA B ??LCDclear_0
215 {
216 SEND2LCM(0,i);
217 SEND2LCM(0,0x10);
218 SEND2LCM(0,0x00);
219 for(j=0x00;j<0x41;j++)
220 {SEND2LCM(1,dat1);
\ ??LCDclear_1:
\ 00000014 0410B0E1 MOVS R1,R4
\ 00000018 0100A0E3 MOV R0,#+1
\ 0000001C ........ BL SEND2LCM
221 SEND2LCM(1,dat2);
\ 00000020 0510B0E1 MOVS R1,R5
\ 00000024 0100A0E3 MOV R0,#+1
\ 00000028 ........ BL SEND2LCM
222 }
\ 0000002C 017097E2 ADDS R7,R7,#+1
\ ??LCDclear_2:
\ 00000030 410057E3 CMP R7,#+65
\ 00000034 F6FFFF3A BCC ??LCDclear_1
\ 00000038 016096E2 ADDS R6,R6,#+1
\ ??LCDclear_0:
\ 0000003C B80056E3 CMP R6,#+184
\ 00000040 0A00002A BCS ??LCDclear_3
\ 00000044 0610B0E1 MOVS R1,R6
\ 00000048 0000A0E3 MOV R0,#+0
\ 0000004C ........ BL SEND2LCM
\ 00000050 1010A0E3 MOV R1,#+16
\ 00000054 0000A0E3 MOV R0,#+0
\ 00000058 ........ BL SEND2LCM
\ 0000005C 0010A0E3 MOV R1,#+0
\ 00000060 0000A0E3 MOV R0,#+0
\ 00000064 ........ BL SEND2LCM
\ 00000068 0070A0E3 MOV R7,#+0
\ 0000006C EFFFFFEA B ??LCDclear_2
223 }
224
225 }
\ ??LCDclear_3:
\ 00000070 F040BDE8 POP {R4-R7,LR}
\ 00000074 1EFF2FE1 BX LR ;; return
226
\ In segment CODE, align 4, keep-with-next
227 void dipBMP(unsigned char *p)
228 {unsigned char i,j;
\ dipBMP:
\ 00000000 70402DE9 PUSH {R4-R6,LR}
\ 00000004 0040B0E1 MOVS R4,R0
229
230 for(i=0xb0;i<0xb8;i++)
\ 00000008 B050A0E3 MOV R5,#+176
\ 0000000C 080000EA B ??dipBMP_0
231 {
232 SEND2LCM(0,i);
233 SEND2LCM(0,0x10);
234 SEND2LCM(0,0x00);
235 for(j=0x02;j<0x82;j++)
236 {SEND2LCM(1,*p++);
\ ??dipBMP_1:
\ 00000010 0010D4E5 LDRB R1,[R4, #+0]
\ 00000014 0100A0E3 MOV R0,#+1
\ 00000018 ........ BL SEND2LCM
\ 0000001C 014094E2 ADDS R4,R4,#+1
237 }
\ 00000020 016096E2 ADDS R6,R6,#+1
\ ??dipBMP_2:
\ 00000024 FF6016E2 ANDS R6,R6,#0xFF ;; Zero extend
\ 00000028 820056E3 CMP R6,#+130
\ 0000002C F7FFFF3A BCC ??dipBMP_1
\ 00000030 015095E2 ADDS R5,R5,#+1
\ ??dipBMP_0:
\ 00000034 FF5015E2 ANDS R5,R5,#0xFF ;; Zero extend
\ 00000038 B80055E3 CMP R5,#+184
\ 0000003C 0B00002A BCS ??dipBMP_3
\ 00000040 0510B0E1 MOVS R1,R5
\ 00000044 FF1011E2 ANDS R1,R1,#0xFF ;; Zero extend
\ 00000048 0000A0E3 MOV R0,#+0
\ 0000004C ........ BL SEND2LCM
\ 00000050 1010A0E3 MOV R1,#+16
\ 00000054 0000A0E3 MOV R0,#+0
\ 00000058 ........ BL SEND2LCM
\ 0000005C 0010A0E3 MOV R1,#+0
\ 00000060 0000A0E3 MOV R0,#+0
\ 00000064 ........ BL SEND2LCM
\ 00000068 0260A0E3 MOV R6,#+2
\ 0000006C ECFFFFEA B ??dipBMP_2
238 }
239
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -