📄 lcd_demo.lst
字号:
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
157: Io_Clr(E2); //E2_0;
0000002C 201E MOV R0,#0x1E
0000002E F7FF BL Io_Clr?T ; T=0x0001 (1)
00000030 FFE7 BL Io_Clr?T ; T=0x0001 (2)
159: }
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'OUTSD?T'
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 20
*** CODE SEGMENT '?PR?OUTSI?T?Lcd_Demo':
162: void OUTSI(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
164: Io_Clr(A0); //A0_0; //写指令
00000004 2015 MOV R0,#0x15
00000006 F7FF BL Io_Clr?T ; T=0x0001 (1)
00000008 FFFB BL Io_Clr?T ; T=0x0001 (2)
165: delay(1);
0000000A 2001 MOV R0,#0x1
0000000C F7FF BL delay?T ; T=0x0001 (1)
0000000E FFF8 BL delay?T ; T=0x0001 (2)
166: Io_Set(E2); //E2_1;
00000010 201E MOV R0,#0x1E
00000012 F7FF BL Io_Set?T ; T=0x0001 (1)
00000014 FFF5 BL Io_Set?T ; T=0x0001 (2)
167: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
168: OUT_DATA(i); //DATA=i;
0000001C 1C18 MOV R0,R3 ; i
0000001E 0600 LSL R0,R0,#0x18 ; i
00000020 0E00 LSR R0,R0,#0x18
00000022 F7FF BL OUT_DATA?T ; T=0x0001 (1)
00000024 FFED BL OUT_DATA?T ; T=0x0001 (2)
169: delay(1);
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
170: Io_Clr(E2); //E2_0;
0000002C 201E MOV R0,#0x1E
0000002E F7FF BL Io_Clr?T ; T=0x0001 (1)
00000030 FFE7 BL Io_Clr?T ; T=0x0001 (2)
172: }
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'OUTSI?T'
*** CODE SEGMENT '?PR?lcdini?T?Lcd_Demo':
178: void lcdini(void)
00000000 B500 PUSH {LR}
180: Io_Clr(RW); //RW_0;
00000002 2016 MOV R0,#0x16
00000004 F7FF BL Io_Clr?T ; T=0x0001 (1)
00000006 FFFC BL Io_Clr?T ; T=0x0001 (2)
181: OUTMI(0XE2);
00000008 20E2 MOV R0,#0xE2
0000000A F7FF BL OUTMI?T ; T=0x0001 (1)
0000000C FFF9 BL OUTMI?T ; T=0x0001 (2)
182: delay(1);
0000000E 2001 MOV R0,#0x1
00000010 F7FF BL delay?T ; T=0x0001 (1)
00000012 FFF6 BL delay?T ; T=0x0001 (2)
183: OUTSI(0XE2);//复位
00000014 20E2 MOV R0,#0xE2
00000016 F7FF BL OUTSI?T ; T=0x0001 (1)
00000018 FFF3 BL OUTSI?T ; T=0x0001 (2)
184: delay(1);
0000001A 2001 MOV R0,#0x1
0000001C F7FF BL delay?T ; T=0x0001 (1)
0000001E FFF0 BL delay?T ; T=0x0001 (2)
185: OUTMI(0XAE);
00000020 20AE MOV R0,#0xAE
00000022 F7FF BL OUTMI?T ; T=0x0001 (1)
00000024 FFED BL OUTMI?T ; T=0x0001 (2)
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 21
186: delay(1);
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
187: OUTSI(0XAE);//POWER SAVE
0000002C 20AE MOV R0,#0xAE
0000002E F7FF BL OUTSI?T ; T=0x0001 (1)
00000030 FFE7 BL OUTSI?T ; T=0x0001 (2)
188: delay(1);
00000032 2001 MOV R0,#0x1
00000034 F7FF BL delay?T ; T=0x0001 (1)
00000036 FFE4 BL delay?T ; T=0x0001 (2)
189: OUTMI(0XA4);
00000038 20A4 MOV R0,#0xA4
0000003A F7FF BL OUTMI?T ; T=0x0001 (1)
0000003C FFE1 BL OUTMI?T ; T=0x0001 (2)
190: delay(1);
0000003E 2001 MOV R0,#0x1
00000040 F7FF BL delay?T ; T=0x0001 (1)
00000042 FFDE BL delay?T ; T=0x0001 (2)
191: OUTSI(0XA4);//动态驱动
00000044 20A4 MOV R0,#0xA4
00000046 F7FF BL OUTSI?T ; T=0x0001 (1)
00000048 FFDB BL OUTSI?T ; T=0x0001 (2)
192: delay(1);
0000004A 2001 MOV R0,#0x1
0000004C F7FF BL delay?T ; T=0x0001 (1)
0000004E FFD8 BL delay?T ; T=0x0001 (2)
193: OUTMI(0XA9);
00000050 20A9 MOV R0,#0xA9
00000052 F7FF BL OUTMI?T ; T=0x0001 (1)
00000054 FFD5 BL OUTMI?T ; T=0x0001 (2)
194: delay(1);
00000056 2001 MOV R0,#0x1
00000058 F7FF BL delay?T ; T=0x0001 (1)
0000005A FFD2 BL delay?T ; T=0x0001 (2)
195: OUTSI(0XA9);//1/32占空比
0000005C 20A9 MOV R0,#0xA9
0000005E F7FF BL OUTSI?T ; T=0x0001 (1)
00000060 FFCF BL OUTSI?T ; T=0x0001 (2)
196: delay(1);
00000062 2001 MOV R0,#0x1
00000064 F7FF BL delay?T ; T=0x0001 (1)
00000066 FFCC BL delay?T ; T=0x0001 (2)
197: OUTMI(0XA0);
00000068 20A0 MOV R0,#0xA0
0000006A F7FF BL OUTMI?T ; T=0x0001 (1)
0000006C FFC9 BL OUTMI?T ; T=0x0001 (2)
198: delay(1);
0000006E 2001 MOV R0,#0x1
00000070 F7FF BL delay?T ; T=0x0001 (1)
00000072 FFC6 BL delay?T ; T=0x0001 (2)
199: OUTSI(0XA0);//时钟线输出
00000074 20A0 MOV R0,#0xA0
00000076 F7FF BL OUTSI?T ; T=0x0001 (1)
00000078 FFC3 BL OUTSI?T ; T=0x0001 (2)
200: delay(1);
0000007A 2001 MOV R0,#0x1
0000007C F7FF BL delay?T ; T=0x0001 (1)
0000007E FFC0 BL delay?T ; T=0x0001 (2)
201: OUTMI(0XEE);
00000080 20EE MOV R0,#0xEE
00000082 F7FF BL OUTMI?T ; T=0x0001 (1)
00000084 FFBD BL OUTMI?T ; T=0x0001 (2)
202: delay(1);
00000086 2001 MOV R0,#0x1
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 22
00000088 F7FF BL delay?T ; T=0x0001 (1)
0000008A FFBA BL delay?T ; T=0x0001 (2)
203: OUTSI(0XEE);//写模式
0000008C 20EE MOV R0,#0xEE
0000008E F7FF BL OUTSI?T ; T=0x0001 (1)
00000090 FFB7 BL OUTSI?T ; T=0x0001 (2)
204: delay(1);
00000092 2001 MOV R0,#0x1
00000094 F7FF BL delay?T ; T=0x0001 (1)
00000096 FFB4 BL delay?T ; T=0x0001 (2)
205: OUTMI(0X00);
00000098 2000 MOV R0,#0x0
0000009A F7FF BL OUTMI?T ; T=0x0001 (1)
0000009C FFB1 BL OUTMI?T ; T=0x0001 (2)
206: OUTMI(0XC0);
0000009E 20C0 MOV R0,#0xC0
000000A0 F7FF BL OUTMI?T ; T=0x0001 (1)
000000A2 FFAE BL OUTMI?T ; T=0x0001 (2)
207: OUTSI(0X00);
000000A4 2000 MOV R0,#0x0
000000A6 F7FF BL OUTSI?T ; T=0x0001 (1)
000000A8 FFAB BL OUTSI?T ; T=0x0001 (2)
208: OUTSI(0XC0);
000000AA 20C0 MOV R0,#0xC0
000000AC F7FF BL OUTSI?T ; T=0x0001 (1)
000000AE FFA8 BL OUTSI?T ; T=0x0001 (2)
210: OUTMI(0XAF);
000000B0 20AF MOV R0,#0xAF
000000B2 F7FF BL OUTMI?T ; T=0x0001 (1)
000000B4 FFA5 BL OUTMI?T ; T=0x0001 (2)
211: OUTSI(0XAF);
000000B6 20AF MOV R0,#0xAF
000000B8 F7FF BL OUTSI?T ; T=0x0001 (1)
000000BA FFA2 BL OUTSI?T ; T=0x0001 (2)
213: }
000000BC BC08 POP {R3}
000000BE 4718 BX R3
000000C0 ENDP ; 'lcdini?T'
*** CODE SEGMENT '?PR?SetPage?T?Lcd_Demo':
218: void SetPage(uchar page0,uchar page1)
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'page1' assigned to Register 'R1' ----
00000002 1C04 MOV R4,R0 ; page0
00000004 ---- Variable 'page0' assigned to Register 'R4' ----
220: OUTMI(0xB8|page1);OUTSI(0xB8|page0);
00000004 1C08 MOV R0,R1 ; page1
00000006 0600 LSL R0,R0,#0x18 ; page1
00000008 0E00 LSR R0,R0,#0x18
0000000A 21B8 MOV R1,#0xB8
0000000C 4308 ORR R0,R1
0000000E F7FF BL OUTMI?T ; T=0x0001 (1)
00000010 FFF7 BL OUTMI?T ; T=0x0001 (2)
00000012 1C20 MOV R0,R4 ; page0
00000014 0600 LSL R0,R0,#0x18 ; page0
00000016 0E00 LSR R0,R0,#0x18
00000018 21B8 MOV R1,#0xB8
0000001A 4308 ORR R0,R1
0000001C F7FF BL OUTSI?T ; T=0x0001 (1)
0000001E FFF0 BL OUTSI?T ; T=0x0001 (2)
221: }
00000020 BC10 POP {R4}
00000022 BC08 POP {R3}
00000024 4718 BX R3
00000026 ENDP ; 'SetPage?T'
*** CODE SEGMENT '?PR?SetAddress?T?Lcd_Demo':
228: void SetAddress(uchar address0,uchar address1)
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 23
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'address1' assigned to Register 'R1' ----
00000002 1C04 MOV R4,R0 ; address0
00000004 ---- Variable 'address0' assigned to Register 'R4' ----
230: OUTMI(address1);OUTSI(address0);
00000004 1C08 MOV R0,R1 ; address1
00000006 0600 LSL R0,R0,#0x18 ; address1
00000008 0E00 LSR R0,R0,#0x18
0000000A F7FF BL OUTMI?T ; T=0x0001 (1)
0000000C FFF9 BL OUTMI?T ; T=0x0001 (2)
0000000E 1C20 MOV R0,R4 ; address0
00000010 0600 LSL R0,R0,#0x18 ; address0
00000012 0E00 LSR R0,R0,#0x18
00000014 F7FF BL OUTSI?T ; T=0x0001 (1)
00000016 FFF4 BL OUTSI?T ; T=0x0001 (2)
231: }
00000018 BC10 POP {R4}
0000001A BC08 POP {R3}
0000001C 4718 BX R3
0000001E ENDP ; 'SetAddress?T'
*** CODE SEGMENT '?PR?PutCharR?T?Lcd_Demo':
240: void PutCharR(uchar ch)
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; ch
00000004 ---- Variable 'ch' assigned to Register 'R1' ----
242: OUTSD(ch);
00000004 1C08 MOV R0,R1 ; ch
00000006 0600 LSL R0,R0,#0x18 ; ch
00000008 0E00 LSR R0,R0,#0x18
0000000A F7FF BL OUTSD?T ; T=0x0001 (1)
0000000C FFF9 BL OUTSD?T ; T=0x0001 (2)
243: }
0000000E BC08 POP {R3}
00000010 4718 BX R3
00000012 ENDP ; 'PutCharR?T'
*** CODE SEGMENT '?PR?PutCharL?T?Lcd_Demo':
252: void PutCharL(uchar ch)
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; ch
00000004 ---- Variable 'ch' assigned to Register 'R1' ----
254: OUTMD(ch);
00000004 1C08 MOV R0,R1 ; ch
00000006 0600 LSL R0,R0,#0x18 ; ch
00000008 0E00 LSR R0,R0,#0x18
0000000A F7FF BL OUTMD?T ; T=0x0001 (1)
0000000C FFF9 BL OUTMD?T ; T=0x0001 (2)
255: }
0000000E BC08 POP {R3}
00000010 4718 BX R3
00000012 ENDP ; 'PutCharL?T'
*** CODE SEGMENT '?PR?DrawBmp?T?Lcd_Demo':
266: void DrawBmp(unsigned layer,uchar width,unsigned char const *bmp)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C17 MOV R7,R2 ; bmp
00000004 ---- Variable 'bmp' assigned to Register 'R7' ----
00000004 1C0E MOV R6,R1 ; width
00000006 ---- Variable 'width' assigned to Register 'R6' ----
00000006 1C05 MOV R5,R0 ; layer
00000008 ---- Variable 'layer' assigned to Register 'R5' ----
00000008 B083 SUB R13,#0xC
267: {
0000000A ; SCOPE-START
268: uchar x,address,i=0; //address表示显存的物理地址
0000000A 2100 MOV R1,#0x0
0000000C 1C0C MOV R4,R1 ; i
0000000E ---- Variable 'i' assigned to Register 'R4' ----
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 24
270: uchar window=0; //window表示左右两页
0000000E A802 ADD R0,R13,#0x8
00000010 7001 STRB R1,[R0,#0x0] ; window
274: for (x=width;x>1;x--)
00000012 1C31 MOV R1,R6 ; width
00000014 A800 ADD R0,R13,#0x0
00000016 7001 STRB R1,[R0,#0x0] ; x
00000018 E0A1 B L_27 ; T=0x0000015E
0000001A L_28:
276: if (i>60) {window=1;address=i%61;}
0000001A 1C20 MOV R0,R4 ; i
0000001C 0600 LSL R0,R0,#0x18 ; i
0000001E 0E00 LSR R0,R0,#0x18
00000020 283C CMP R0,#0x3C
00000022 DD0E BLE L_30 ; T=0x00000042
00000024 2101 MOV R1,#0x1
00000026 A802 ADD R0,R13,#0x8
00000028 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -