📄 register_lcd_driver.lst
字号:
123: delay (5); // Allow Hold time of 500nS min
00000044 2005 MOV R0,#0x5
00000046 F7FF BL delay?T ; T=0x0001 (1)
00000048 FFDB BL delay?T ; T=0x0001 (2)
124: GP0CLR = 0x800000; // Set E low
0000004A 4800 LDR R1,=0x800000
0000004C 4800 LDR R0,=0xFFFFF428
0000004E 6001 STR R1,[R0,#0x0]
125: delay (2000); // Minimum clear time of 1.58mS
00000050 4800 LDR R0,=0x7D0
00000052 F7FF BL delay?T ; T=0x0001 (1)
00000054 FFD5 BL delay?T ; T=0x0001 (2)
127: return 0x1;
00000056 2001 MOV R0,#0x1
00000058 ; SCOPE-END
128: }
00000058 BC30 POP {R4-R5}
0000005A BC08 POP {R3}
0000005C 4718 BX R3
0000005E ENDP ; 'Clear_Display_LCD?T'
*** CODE SEGMENT '?PR?Set_Entry_Mode?T?Register_LCD_Driver':
129: unsigned char Set_Entry_Mode(unsigned char ucFunctionSet)
00000000 B530 PUSH {R4-R5,LR}
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 10
00000002 1C05 MOV R5,R0 ; ucFunctionSet
00000004 ---- Variable 'ucFunctionSet' assigned to Register 'R5' ----
130: {
00000004 ; SCOPE-START
131: unsigned long ulFunction = 0;
00000004 2400 MOV R4,#0x0
00000006 ---- Variable 'ulFunction' assigned to Register 'R4' ----
133: delay (10000);
00000006 4800 LDR R0,=0x2710
00000008 F7FF BL delay?T ; T=0x0001 (1)
0000000A FFFA BL delay?T ; T=0x0001 (2)
134: RdStatus = ReadStatus();
0000000C F7FF BL ReadStatus?T ; T=0x0001 (1)
0000000E FFF8 BL ReadStatus?T ; T=0x0001 (2)
00000010 4800 LDR R1,=RdStatus ; RdStatus
00000012 7008 STRB R0,[R1,#0x0] ; RdStatus
135: ulFunction = ucFunctionSet;
00000014 1C28 MOV R0,R5 ; ucFunctionSet
00000016 0604 LSL R4,R0,#0x18 ; ucFunctionSet
00000018 0E24 LSR R4,R4,#0x18
136: ulFunction = (ulFunction << 16);
0000001A 0424 LSL R4,R4,#0x10 ; ulFunction
137: ulFunction |= 0xFF000000;
0000001C 4800 LDR R0,=0xFF000000
0000001E 4304 ORR R4,R0
139: GP0DAT = 0xA0000000; // Clear RS pin(P0.5), clear E pin (P0.7) -> R/W)
00000020 4800 LDR R1,=0xA0000000
00000022 4800 LDR R0,=0xFFFFF420
00000024 6001 STR R1,[R0,#0x0]
140: GP2DAT = 0x01000000; // Clear R/W pin (P2.0 -> R/W)
00000026 4800 LDR R1,=0x1000000
00000028 4800 LDR R0,=0xFFFFF440
0000002A 6001 STR R1,[R0,#0x0]
141: delay (5);
0000002C 2005 MOV R0,#0x5
0000002E F7FF BL delay?T ; T=0x0001 (1)
00000030 FFE7 BL delay?T ; T=0x0001 (2)
143: GP0SET = 0x800000; // Set E high
00000032 4800 LDR R1,=0x800000
00000034 4800 LDR R0,=0xFFFFF424
00000036 6001 STR R1,[R0,#0x0]
144: delay (5); // allow min 800ns Setup time
00000038 2005 MOV R0,#0x5
0000003A F7FF BL delay?T ; T=0x0001 (1)
0000003C FFE1 BL delay?T ; T=0x0001 (2)
145: GP1DAT = ulFunction; // Write to register
0000003E 1C21 MOV R1,R4 ; ulFunction
00000040 4800 LDR R0,=0xFFFFF430
00000042 6001 STR R1,[R0,#0x0]
146: delay (5); // allow Hold time of 500nS min
00000044 2005 MOV R0,#0x5
00000046 F7FF BL delay?T ; T=0x0001 (1)
00000048 FFDB BL delay?T ; T=0x0001 (2)
147: GP0CLR = 0x800000; // Set E low
0000004A 4800 LDR R1,=0x800000
0000004C 4800 LDR R0,=0xFFFFF428
0000004E 6001 STR R1,[R0,#0x0]
148: delay (5);
00000050 2005 MOV R0,#0x5
00000052 F7FF BL delay?T ; T=0x0001 (1)
00000054 FFD5 BL delay?T ; T=0x0001 (2)
150: return 0x1;
00000056 2001 MOV R0,#0x1
00000058 ; SCOPE-END
151: }
00000058 BC30 POP {R4-R5}
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 11
0000005A BC08 POP {R3}
0000005C 4718 BX R3
0000005E ENDP ; 'Set_Entry_Mode?T'
*** CODE SEGMENT '?PR?Wr_Data_LCD?T?Register_LCD_Driver':
152: unsigned char Wr_Data_LCD(unsigned char ucFunctionSet)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; ucFunctionSet
00000004 ---- Variable 'ucFunctionSet' assigned to Register 'R5' ----
153: {
00000004 ; SCOPE-START
154: unsigned long ulFunction = 0;
00000004 2400 MOV R4,#0x0
00000006 ---- Variable 'ulFunction' assigned to Register 'R4' ----
156: delay (10000);
00000006 4800 LDR R0,=0x2710
00000008 F7FF BL delay?T ; T=0x0001 (1)
0000000A FFFA BL delay?T ; T=0x0001 (2)
157: RdStatus = ReadStatus();
0000000C F7FF BL ReadStatus?T ; T=0x0001 (1)
0000000E FFF8 BL ReadStatus?T ; T=0x0001 (2)
00000010 4800 LDR R1,=RdStatus ; RdStatus
00000012 7008 STRB R0,[R1,#0x0] ; RdStatus
158: ulFunction = ucFunctionSet;
00000014 1C28 MOV R0,R5 ; ucFunctionSet
00000016 0604 LSL R4,R0,#0x18 ; ucFunctionSet
00000018 0E24 LSR R4,R4,#0x18
159: ulFunction = (ulFunction << 16);
0000001A 0424 LSL R4,R4,#0x10 ; ulFunction
160: ulFunction |= 0xFF000000;
0000001C 4800 LDR R0,=0xFF000000
0000001E 4304 ORR R4,R0
162: GP0DAT = 0xA0200000; // Set RS pin(P0.5), clear E pin (P0.7) -> R/W)
00000020 4800 LDR R1,=0xA0200000
00000022 4800 LDR R0,=0xFFFFF420
00000024 6001 STR R1,[R0,#0x0]
163: GP2DAT = 0x01000000; // Clear R/W pin (P2.0 -> R/W)
00000026 4800 LDR R1,=0x1000000
00000028 4800 LDR R0,=0xFFFFF440
0000002A 6001 STR R1,[R0,#0x0]
164: delay (5);
0000002C 2005 MOV R0,#0x5
0000002E F7FF BL delay?T ; T=0x0001 (1)
00000030 FFE7 BL delay?T ; T=0x0001 (2)
166: GP0SET = 0x800000; // Set E high
00000032 4800 LDR R1,=0x800000
00000034 4800 LDR R0,=0xFFFFF424
00000036 6001 STR R1,[R0,#0x0]
167: delay (5); // allow min 800ns Setup time
00000038 2005 MOV R0,#0x5
0000003A F7FF BL delay?T ; T=0x0001 (1)
0000003C FFE1 BL delay?T ; T=0x0001 (2)
168: GP1DAT = ulFunction; // Write to register
0000003E 1C21 MOV R1,R4 ; ulFunction
00000040 4800 LDR R0,=0xFFFFF430
00000042 6001 STR R1,[R0,#0x0]
169: delay (5); // allow Hold time of 500nS min
00000044 2005 MOV R0,#0x5
00000046 F7FF BL delay?T ; T=0x0001 (1)
00000048 FFDB BL delay?T ; T=0x0001 (2)
170: GP0CLR = 0x800000; // Set E low
0000004A 4800 LDR R1,=0x800000
0000004C 4800 LDR R0,=0xFFFFF428
0000004E 6001 STR R1,[R0,#0x0]
172: delay (5);
00000050 2005 MOV R0,#0x5
00000052 F7FF BL delay?T ; T=0x0001 (1)
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 12
00000054 FFD5 BL delay?T ; T=0x0001 (2)
173: GP0CLR = 0x200000; // Set RS low
00000056 4800 LDR R1,=0x200000
00000058 4800 LDR R0,=0xFFFFF428
0000005A 6001 STR R1,[R0,#0x0]
175: return 0x1;
0000005C 2001 MOV R0,#0x1
0000005E ; SCOPE-END
176: }
0000005E BC30 POP {R4-R5}
00000060 BC08 POP {R3}
00000062 4718 BX R3
00000064 ENDP ; 'Wr_Data_LCD?T'
*** CODE SEGMENT '?PR?ReadStatus?T?Register_LCD_Driver':
177: unsigned char ReadStatus(void)
00000000 B510 PUSH {R4,LR}
178: {
00000002 ; SCOPE-START
180: unsigned char Status = 0;
00000002 2400 MOV R4,#0x0
00000004 ---- Variable 'Status' assigned to Register 'R4' ----
182: delay (10000);
00000004 4800 LDR R0,=0x2710
00000006 F7FF BL delay?T ; T=0x0001 (1)
00000008 FFFB BL delay?T ; T=0x0001 (2)
184: GP1DAT = 0x00000000; // Set Port 1 to input mode
0000000A 2100 MOV R1,#0x0
0000000C 4800 LDR R0,=0xFFFFF430
0000000E 6001 STR R1,[R0,#0x0]
185: GP0DAT = 0xA0000000; // Clear RS pin(P0.5), clear E pin (P0.7) -> R/W)
00000010 4800 LDR R1,=0xA0000000
00000012 4800 LDR R0,=0xFFFFF420
00000014 6001 STR R1,[R0,#0x0]
186: GP2DAT = 0x01010000; // Clear R/W pin (P2.0 -> R/W)
00000016 4800 LDR R1,=0x1010000
00000018 4800 LDR R0,=0xFFFFF440
0000001A 6001 STR R1,[R0,#0x0]
187: delay (5);
0000001C 2005 MOV R0,#0x5
0000001E F7FF BL delay?T ; T=0x0001 (1)
00000020 FFEF BL delay?T ; T=0x0001 (2)
189: GP0SET = 0x800000; // Set E high
00000022 4800 LDR R1,=0x800000
00000024 4800 LDR R0,=0xFFFFF424
00000026 6001 STR R1,[R0,#0x0]
190: delay (5); // allow min 800ns Setup time
00000028 2005 MOV R0,#0x5
0000002A F7FF BL delay?T ; T=0x0001 (1)
0000002C FFE9 BL delay?T ; T=0x0001 (2)
191: Status = (unsigned char)GP1DAT; // Write to register
0000002E 4800 LDR R0,=0xFFFFF430
00000030 6804 LDR R4,[R0,#0x0]
00000032 0624 LSL R4,R4,#0x18
00000034 0E24 LSR R4,R4,#0x18
192: delay (5); // allow Hold time of 500nS min
00000036 2005 MOV R0,#0x5
00000038 F7FF BL delay?T ; T=0x0001 (1)
0000003A FFE2 BL delay?T ; T=0x0001 (2)
193: GP0CLR = 0x800000; // Set E low
0000003C 4800 LDR R1,=0x800000
0000003E 4800 LDR R0,=0xFFFFF428
00000040 6001 STR R1,[R0,#0x0]
195: delay (5);
00000042 2005 MOV R0,#0x5
00000044 F7FF BL delay?T ; T=0x0001 (1)
00000046 FFDC BL delay?T ; T=0x0001 (2)
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 13
196: GP2CLR = 0x10000; // Clear R/W
00000048 4800 LDR R1,=0x10000
0000004A 4800 LDR R0,=0xFFFFF448
0000004C 6001 STR R1,[R0,#0x0]
198: return Status;
0000004E 1C20 MOV R0,R4 ; Status
00000050 0600 LSL R0,R0,#0x18 ; Status
00000052 0E00 LSR R0,R0,#0x18
00000054 ; SCOPE-END
199: }
00000054 BC10 POP {R4}
00000056 BC08 POP {R3}
00000058 4718 BX R3
0000005A ENDP ; 'ReadStatus?T'
*** CODE SEGMENT '?PR?delay?T?Register_LCD_Driver':
201: void delay (int length)
00000000 ---- Variable 'length' assigned to Register 'R0' ----
203: while (length >0)
00000000 E000 B L_10 ; T=0x00000004
00000002 L_12:
00000002 3801 SUB R0,#0x1
00000004 L_10:
00000004 1C01 MOV R1,R0 ; length
00000006 2900 CMP R1,#0x0 ; length
00000008 DCFB BGT L_12 ; T=0x00000002
205: }
0000000A 4770 BX R14
0000000C ENDP ; 'delay?T'
Module Information Static
----------------------------------
code size = ------
data size = 5
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -