📄 register_lcd_driver.lst
字号:
*** CODE SEGMENT '?PR?Select_Function_Set?T?Register_LCD_Driver':
31: unsigned char Select_Function_Set(unsigned char ucFunctionSet)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; ucFunctionSet
00000004 ---- Variable 'ucFunctionSet' assigned to Register 'R5' ----
32: {
00000004 ; SCOPE-START
33: unsigned long ulFunction = 0;
00000004 2400 MOV R4,#0x0
00000006 ---- Variable 'ulFunction' assigned to Register 'R4' ----
35: delay (10000);
00000006 4800 LDR R0,=0x2710
00000008 F7FF BL delay?T ; T=0x0001 (1)
0000000A FFFA BL delay?T ; T=0x0001 (2)
36: 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
38: ulFunction = ucFunctionSet;
00000014 1C28 MOV R0,R5 ; ucFunctionSet
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 6
00000016 0604 LSL R4,R0,#0x18 ; ucFunctionSet
00000018 0E24 LSR R4,R4,#0x18
39: ulFunction = (ulFunction << 16);
0000001A 0424 LSL R4,R4,#0x10 ; ulFunction
40: ulFunction |= 0xFF000000;
0000001C 4800 LDR R0,=0xFF000000
0000001E 4304 ORR R4,R0
42: 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]
43: 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]
44: delay (5);
0000002C 2005 MOV R0,#0x5
0000002E F7FF BL delay?T ; T=0x0001 (1)
00000030 FFE7 BL delay?T ; T=0x0001 (2)
46: GP0SET = 0x800000; // Set E high
00000032 4800 LDR R1,=0x800000
00000034 4800 LDR R0,=0xFFFFF424
00000036 6001 STR R1,[R0,#0x0]
47: 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)
48: GP1DAT = ulFunction; // Write to register
0000003E 1C21 MOV R1,R4 ; ulFunction
00000040 4800 LDR R0,=0xFFFFF430
00000042 6001 STR R1,[R0,#0x0]
49: 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)
50: GP0CLR = 0x800000; // Set E low
0000004A 4800 LDR R1,=0x800000
0000004C 4800 LDR R0,=0xFFFFF428
0000004E 6001 STR R1,[R0,#0x0]
51: delay (5);
00000050 2005 MOV R0,#0x5
00000052 F7FF BL delay?T ; T=0x0001 (1)
00000054 FFD5 BL delay?T ; T=0x0001 (2)
53: return 0x1;
00000056 2001 MOV R0,#0x1
00000058 ; SCOPE-END
54: }
00000058 BC30 POP {R4-R5}
0000005A BC08 POP {R3}
0000005C 4718 BX R3
0000005E ENDP ; 'Select_Function_Set?T'
*** CODE SEGMENT '?PR?Set_DDRAM_ADDR_LCD?T?Register_LCD_Driver':
56: unsigned char Set_DDRAM_ADDR_LCD(unsigned char addr)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; addr
00000004 ---- Variable 'addr' assigned to Register 'R5' ----
57: {
00000004 ; SCOPE-START
58: unsigned long ulAddr = 0;
00000004 2400 MOV R4,#0x0
00000006 ---- Variable 'ulAddr' assigned to Register 'R4' ----
60: delay (10000);
00000006 4800 LDR R0,=0x2710
00000008 F7FF BL delay?T ; T=0x0001 (1)
0000000A FFFA BL delay?T ; T=0x0001 (2)
61: addr |= 0x80; // Set MSB of register
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 7
0000000C 2080 MOV R0,#0x80
0000000E 4305 ORR R5,R0
62: ulAddr = addr;
00000010 1C28 MOV R0,R5 ; addr
00000012 0604 LSL R4,R0,#0x18 ; addr
00000014 0E24 LSR R4,R4,#0x18
63: ulAddr = (ulAddr << 16);
00000016 0424 LSL R4,R4,#0x10 ; ulAddr
64: ulAddr |= 0xFF000000;
00000018 4800 LDR R0,=0xFF000000
0000001A 4304 ORR R4,R0
66: GP1DAT |= ulAddr; // Write to register
0000001C 1C22 MOV R2,R4 ; ulAddr
0000001E 4800 LDR R0,=0xFFFFF430
00000020 6801 LDR R1,[R0,#0x0]
00000022 4311 ORR R1,R2 ; ulAddr
00000024 6001 STR R1,[R0,#0x0]
68: GP2DAT = 0x01000000; // Set RS pin of LCD low for Register access (P2.0 -> RS)
00000026 4800 LDR R1,=0x1000000
00000028 4800 LDR R0,=0xFFFFF440
0000002A 6001 STR R1,[R0,#0x0]
69: GP0DAT = 0x40000000; // Clear R/W pin. (P0.6 -> R/W)
0000002C 4800 LDR R1,=0x40000000
0000002E 4800 LDR R0,=0xFFFFF420
00000030 6001 STR R1,[R0,#0x0]
70: GP0DAT = 0xC0800000; // Set E pin. (P0.7 -> E)
00000032 4800 LDR R1,=0xC0800000
00000034 4800 LDR R0,=0xFFFFF420
00000036 6001 STR R1,[R0,#0x0]
73: delay(500);
00000038 487D LDR R0,=0x1F4
0000003A F7FF BL delay?T ; T=0x0001 (1)
0000003C FFE1 BL delay?T ; T=0x0001 (2)
74: GP0DAT = 0xC0000000; // Clear E pin. (P0.7 -> E)
0000003E 4800 LDR R1,=0xC0000000
00000040 4800 LDR R0,=0xFFFFF420
00000042 6001 STR R1,[R0,#0x0]
75: GP1DAT = 0x00300000; // Configure data bus as Input
00000044 4800 LDR R1,=0x300000
00000046 4800 LDR R0,=0xFFFFF430
00000048 6001 STR R1,[R0,#0x0]
77: return 0x1;
0000004A 2001 MOV R0,#0x1
0000004C ; SCOPE-END
78: }
0000004C BC30 POP {R4-R5}
0000004E BC08 POP {R3}
00000050 4718 BX R3
00000052 ENDP ; 'Set_DDRAM_ADDR_LCD?T'
*** CODE SEGMENT '?PR?Display_On_LCD?T?Register_LCD_Driver':
80: unsigned char Display_On_LCD(void)
00000000 B500 PUSH {LR}
82: GP1DAT = 0xFF0F0000; // Write 0x0F - Turn on Display, cursor on and blinking
00000002 4800 LDR R1,=0xFF0F0000
00000004 4800 LDR R0,=0xFFFFF430
00000006 6001 STR R1,[R0,#0x0]
84: GP2DAT = 0x01000000; // Set RS pin of LCD low for Register access (P2.0 -> RS)
00000008 4800 LDR R1,=0x1000000
0000000A 4800 LDR R0,=0xFFFFF440
0000000C 6001 STR R1,[R0,#0x0]
85: GP0DAT = 0x40000000; // Clear R/W pin. (P0.6 -> R/W)
0000000E 4800 LDR R1,=0x40000000
00000010 4800 LDR R0,=0xFFFFF420
00000012 6001 STR R1,[R0,#0x0]
86: GP0DAT = 0xC0800000; // Set E pin. (P0.7 -> E)
00000014 4800 LDR R1,=0xC0800000
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 8
00000016 4800 LDR R0,=0xFFFFF420
00000018 6001 STR R1,[R0,#0x0]
88: delay(500);
0000001A 487D LDR R0,=0x1F4
0000001C F7FF BL delay?T ; T=0x0001 (1)
0000001E FFF0 BL delay?T ; T=0x0001 (2)
89: GP0DAT = 0xC0000000; // CLear E pin. (P0.7 -> E)
00000020 4800 LDR R1,=0xC0000000
00000022 4800 LDR R0,=0xFFFFF420
00000024 6001 STR R1,[R0,#0x0]
90: GP1DAT = 0x00300000; // Configure data bus as Input
00000026 4800 LDR R1,=0x300000
00000028 4800 LDR R0,=0xFFFFF430
0000002A 6001 STR R1,[R0,#0x0]
91: return 0x1;
0000002C 2001 MOV R0,#0x1
92: }
0000002E BC08 POP {R3}
00000030 4718 BX R3
00000032 ENDP ; 'Display_On_LCD?T'
*** CODE SEGMENT '?PR?Display_Off_LCD?T?Register_LCD_Driver':
93: unsigned char Display_Off_LCD(unsigned char ucFunctionSet)
00000000 B500 PUSH {LR}
95: GP1DAT = 0xFF0B0000; // Write 0x0B - Turn off Display
00000002 4800 LDR R1,=0xFF0B0000
00000004 4800 LDR R0,=0xFFFFF430
00000006 6001 STR R1,[R0,#0x0]
97: GP2DAT = 0x01000000; // Set RS pin of LCD low for Register access (P2.0 -> RS)
00000008 4800 LDR R1,=0x1000000
0000000A 4800 LDR R0,=0xFFFFF440
0000000C 6001 STR R1,[R0,#0x0]
98: GP0DAT = 0x40000000; // Clear R/W pin. (P0.6 -> R/W)
0000000E 4800 LDR R1,=0x40000000
00000010 4800 LDR R0,=0xFFFFF420
00000012 6001 STR R1,[R0,#0x0]
99: GP0DAT = 0xC0800000; // Set E pin. (P0.7 -> E)
00000014 4800 LDR R1,=0xC0800000
00000016 4800 LDR R0,=0xFFFFF420
00000018 6001 STR R1,[R0,#0x0]
101: delay(500);
0000001A 487D LDR R0,=0x1F4
0000001C F7FF BL delay?T ; T=0x0001 (1)
0000001E FFF0 BL delay?T ; T=0x0001 (2)
102: GP0DAT = 0xC0000000; // Clear E pin. (P0.7 -> E)
00000020 4800 LDR R1,=0xC0000000
00000022 4800 LDR R0,=0xFFFFF420
00000024 6001 STR R1,[R0,#0x0]
103: GP1DAT = 0x00300000; // Configure data bus as Input
00000026 4800 LDR R1,=0x300000
00000028 4800 LDR R0,=0xFFFFF430
0000002A 6001 STR R1,[R0,#0x0]
104: return 0x1;
0000002C 2001 MOV R0,#0x1
105: }
0000002E BC08 POP {R3}
00000030 4718 BX R3
00000032 ENDP ; 'Display_Off_LCD?T'
*** CODE SEGMENT '?PR?Clear_Display_LCD?T?Register_LCD_Driver':
106: unsigned char Clear_Display_LCD(unsigned char ucFunctionSet)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; ucFunctionSet
00000004 ---- Variable 'ucFunctionSet' assigned to Register 'R5' ----
107: {
00000004 ; SCOPE-START
108: unsigned long ulFunction = 0;
00000004 2400 MOV R4,#0x0
ARM COMPILER V2.42, Register_LCD_Driver 06/03/07 11:32:18 PAGE 9
00000006 ---- Variable 'ulFunction' assigned to Register 'R4' ----
110: delay (10000);
00000006 4800 LDR R0,=0x2710
00000008 F7FF BL delay?T ; T=0x0001 (1)
0000000A FFFA BL delay?T ; T=0x0001 (2)
111: 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
112: ulFunction = ucFunctionSet;
00000014 1C28 MOV R0,R5 ; ucFunctionSet
00000016 0604 LSL R4,R0,#0x18 ; ucFunctionSet
00000018 0E24 LSR R4,R4,#0x18
113: ulFunction = (ulFunction << 16);
0000001A 0424 LSL R4,R4,#0x10 ; ulFunction
114: ulFunction |= 0xFF000000;
0000001C 4800 LDR R0,=0xFF000000
0000001E 4304 ORR R4,R0
116: 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]
117: 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]
118: delay (5);
0000002C 2005 MOV R0,#0x5
0000002E F7FF BL delay?T ; T=0x0001 (1)
00000030 FFE7 BL delay?T ; T=0x0001 (2)
120: GP0SET = 0x800000; // Set E high
00000032 4800 LDR R1,=0x800000
00000034 4800 LDR R0,=0xFFFFF424
00000036 6001 STR R1,[R0,#0x0]
121: 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)
122: GP1DAT = ulFunction; // Write to register
0000003E 1C21 MOV R1,R4 ; ulFunction
00000040 4800 LDR R0,=0xFFFFF430
00000042 6001 STR R1,[R0,#0x0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -