📄 lcd.lst
字号:
1 .code 16 2 .file "lcd.c" 10 .Ltext0: 11 .global l_pPio 12 .data 13 .align 2 16 l_pPio: 17 0000 00F4FFFF .word -3072 18 .text 19 .align 2 20 .global Delay_mS 21 .code 16 22 .thumb_func 24 Delay_mS: 25 .LFB290: 26 .file 1 "LCD/lcd.c" 1:LCD/lcd.c **** //lcd.c
2:LCD/lcd.c **** #include <string.h>
3:LCD/lcd.c **** #include "include/includes.h"
4:LCD/lcd.c ****
5:LCD/lcd.c **** // POINTER
6:LCD/lcd.c **** AT91PS_PIO l_pPio = AT91C_BASE_PIOA;
7:LCD/lcd.c ****
8:LCD/lcd.c ****
9:LCD/lcd.c **** unsigned long data;
10:LCD/lcd.c **** void Delay_mS (unsigned long a) { while (--a!=0); }
27 .loc 1 10 0 28 0000 80B5 push {r7, lr} 29 .LCFI0: 30 0002 6F46 mov r7, sp 31 .LCFI1: 32 0004 81B0 sub sp, sp, #4 33 .LCFI2: 34 0006 3B1F sub r3, r7, #4 35 0008 1860 str r0, [r3] 36 .L2: 37 .loc 1 10 0 38 000a 3A1F sub r2, r7, #4 39 000c 3B1F sub r3, r7, #4 40 000e 1B68 ldr r3, [r3] 41 0010 013B sub r3, r3, #1 42 0012 1360 str r3, [r2] 43 0014 3B1F sub r3, r7, #4 44 0016 1B68 ldr r3, [r3] 45 0018 002B cmp r3, #0 46 001a F6D1 bne .L2 47 001c BD46 mov sp, r7 48 @ sp needed for prologue 49 001e 80BC pop {r7} 50 0020 01BC pop {r0} 51 0022 0047 bx r0 52 .LFE290: 54 .global codr 55 .bss 56 .align 2 59 codr: 60 0000 00000000 .space 4 61 .global sodr 62 .align 2 65 sodr: 66 0004 00000000 .space 4 67 .global oer 68 .align 2 71 oer: 72 0008 00000000 .space 4 73 .global per 74 .align 2 77 per: 78 000c 00000000 .space 4 79 .text 80 .align 2 81 .global SetPinsOnly 82 .code 16 83 .thumb_func 85 SetPinsOnly: 86 .LFB291: 11:LCD/lcd.c ****
12:LCD/lcd.c **** unsigned long codr = 0x0;
13:LCD/lcd.c **** unsigned long sodr = 0x0;
14:LCD/lcd.c **** unsigned long oer = 0x0;
15:LCD/lcd.c **** unsigned long per = 0x0;
16:LCD/lcd.c ****
17:LCD/lcd.c **** void SetPinsOnly(unsigned long pin) {
87 .loc 1 17 0 88 0024 80B5 push {r7, lr} 89 .LCFI3: 90 0026 6F46 mov r7, sp 91 .LCFI4: 92 0028 81B0 sub sp, sp, #4 93 .LCFI5: 94 002a 3B1F sub r3, r7, #4 95 002c 1860 str r0, [r3] 18:LCD/lcd.c **** l_pPio->PIO_SODR = l_pPio->PIO_ODSR | pin;
96 .loc 1 18 0 97 002e 064B ldr r3, .L7 98 0030 1968 ldr r1, [r3] 99 0032 054B ldr r3, .L7 100 0034 1B68 ldr r3, [r3] 101 0036 9A6B ldr r2, [r3, #56] 102 0038 3B1F sub r3, r7, #4 103 003a 1B68 ldr r3, [r3] 104 003c 1343 orr r3, r3, r2 105 003e 0B63 str r3, [r1, #48] 19:LCD/lcd.c **** }
106 .loc 1 19 0 107 0040 BD46 mov sp, r7 108 @ sp needed for prologue 109 0042 80BC pop {r7} 110 0044 01BC pop {r0} 111 0046 0047 bx r0 112 .L8: 113 .align 2 114 .L7: 115 0048 00000000 .word l_pPio 116 .LFE291: 118 .align 2 119 .global ClearPinsOnly 120 .code 16 121 .thumb_func 123 ClearPinsOnly: 124 .LFB292: 20:LCD/lcd.c ****
21:LCD/lcd.c **** void ClearPinsOnly(unsigned long pin) {
125 .loc 1 21 0 126 004c 80B5 push {r7, lr} 127 .LCFI6: 128 004e 6F46 mov r7, sp 129 .LCFI7: 130 0050 81B0 sub sp, sp, #4 131 .LCFI8: 132 0052 3B1F sub r3, r7, #4 133 0054 1860 str r0, [r3] 22:LCD/lcd.c **** l_pPio->PIO_CODR = (~l_pPio->PIO_ODSR) | pin;
134 .loc 1 22 0 135 0056 074B ldr r3, .L11 136 0058 1968 ldr r1, [r3] 137 005a 064B ldr r3, .L11 138 005c 1B68 ldr r3, [r3] 139 005e 9B6B ldr r3, [r3, #56] 140 0060 DA43 mvn r2, r3 141 0062 3B1F sub r3, r7, #4 142 0064 1B68 ldr r3, [r3] 143 0066 1343 orr r3, r3, r2 144 0068 4B63 str r3, [r1, #52] 23:LCD/lcd.c **** }
145 .loc 1 23 0 146 006a BD46 mov sp, r7 147 @ sp needed for prologue 148 006c 80BC pop {r7} 149 006e 01BC pop {r0} 150 0070 0047 bx r0 151 .L12: 152 0072 0000 .align 2 153 .L11: 154 0074 00000000 .word l_pPio 155 .LFE292: 157 .align 2 158 .global E_Pulse 159 .code 16 160 .thumb_func 162 E_Pulse: 163 .LFB293: 24:LCD/lcd.c ****
25:LCD/lcd.c ****
26:LCD/lcd.c **** void E_Pulse()
27:LCD/lcd.c **** {
164 .loc 1 27 0 165 0078 80B5 push {r7, lr} 166 .LCFI9: 167 007a 6F46 mov r7, sp 168 .LCFI10: 28:LCD/lcd.c **** l_pPio->PIO_SODR = E; //set E to high
169 .loc 1 28 0 170 007c 084B ldr r3, .L15 171 007e 1A68 ldr r2, [r3] 172 0080 8023 mov r3, #128 173 0082 9B03 lsl r3, r3, #14 174 0084 1363 str r3, [r2, #48] 29:LCD/lcd.c **** Delay_mS(10); //delay //it was 100
175 .loc 1 29 0 176 0086 0A20 mov r0, #10 177 0088 FFF7FEFF bl Delay_mS 30:LCD/lcd.c **** l_pPio->PIO_CODR = E; //set E to low
178 .loc 1 30 0 179 008c 044B ldr r3, .L15 180 008e 1A68 ldr r2, [r3] 181 0090 8023 mov r3, #128 182 0092 9B03 lsl r3, r3, #14 183 0094 5363 str r3, [r2, #52] 31:LCD/lcd.c **** }
184 .loc 1 31 0 185 0096 BD46 mov sp, r7 186 @ sp needed for prologue 187 0098 80BC pop {r7} 188 009a 01BC pop {r0} 189 009c 0047 bx r0 190 .L16: 191 009e 0000 .align 2 192 .L15: 193 00a0 00000000 .word l_pPio 194 .LFE293: 196 .align 2 197 .global LCDInit 198 .code 16 199 .thumb_func 201 LCDInit: 202 .LFB294: 32:LCD/lcd.c ****
33:LCD/lcd.c **** void LCDInit()
34:LCD/lcd.c **** {
203 .loc 1 34 0 204 00a4 80B5 push {r7, lr} 205 .LCFI11: 206 00a6 6F46 mov r7, sp 207 .LCFI12: 35:LCD/lcd.c **** // First set D4, D5, D6, D7, RS, RW, E to output ports + BIT23 (light)
36:LCD/lcd.c **** l_pPio->PIO_OER = (BIT16|BIT17|BIT18|BIT19|BIT20|E|BIT22|LCD_LIGHT);
208 .loc 1 36 0 209 00a8 294B ldr r3, .L19 210 00aa 1A68 ldr r2, [r3] 211 00ac FF23 mov r3, #255 212 00ae 1B04 lsl r3, r3, #16 213 00b0 1361 str r3, [r2, #16] 37:LCD/lcd.c ****
38:LCD/lcd.c **** // Enable D4, D5, D6, D7, RS, RW, E ports + BIT23 (light)
39:LCD/lcd.c **** l_pPio->PIO_PER = (BIT16|BIT17|BIT18|BIT19|BIT20|E|BIT22|LCD_LIGHT);
214 .loc 1 39 0 215 00b2 274B ldr r3, .L19 216 00b4 1A68 ldr r2, [r3] 217 00b6 FF23 mov r3, #255 218 00b8 1B04 lsl r3, r3, #16 219 00ba 1360 str r3, [r2] 40:LCD/lcd.c ****
41:LCD/lcd.c ****
42:LCD/lcd.c **** l_pPio->PIO_CODR = BIT20|E|BIT22; //clear RS, E, RW
220 .loc 1 42 0 221 00bc 244B ldr r3, .L19 222 00be 1A68 ldr r2, [r3] 223 00c0 E023 mov r3, #224 224 00c2 DB03 lsl r3, r3, #15 225 00c4 5363 str r3, [r2, #52] 43:LCD/lcd.c **** Delay_mS(1100000); //delay ~110ms
226 .loc 1 43 0 227 00c6 234B ldr r3, .L19+4 228 00c8 181C mov r0, r3 229 00ca FFF7FEFF bl Delay_mS 44:LCD/lcd.c ****
45:LCD/lcd.c **** l_pPio->PIO_SODR = BIT16|BIT17; //set D4 and D5 port to 1
230 .loc 1 45 0 231 00ce 204B ldr r3, .L19 232 00d0 1A68 ldr r2, [r3] 233 00d2 C023 mov r3, #192 234 00d4 9B02 lsl r3, r3, #10 235 00d6 1363 str r3, [r2, #48] 46:LCD/lcd.c **** E_Pulse(); //high->low to E port (pulse)
236 .loc 1 46 0 237 00d8 FFF7FEFF bl E_Pulse 47:LCD/lcd.c ****
48:LCD/lcd.c **** //Delay_mS(100000); //delay ~10ms
49:LCD/lcd.c **** Delay_mS(50000); //delay ~5ms
238 .loc 1 49 0 239 00dc 1E4B ldr r3, .L19+8 240 00de 181C mov r0, r3 241 00e0 FFF7FEFF bl Delay_mS 50:LCD/lcd.c ****
51:LCD/lcd.c **** l_pPio->PIO_SODR = BIT16|BIT17; //set D4 and D5 port to 1
242 .loc 1 51 0 243 00e4 1A4B ldr r3, .L19 244 00e6 1A68 ldr r2, [r3] 245 00e8 C023 mov r3, #192 246 00ea 9B02 lsl r3, r3, #10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -