1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
|
1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 2.9.0 #5416 (Feb 3 2010) (UNIX)
4 ; This file was generated Sun Dec 16 06:02:13 2012
5 ;--------------------------------------------------------
6 .module ledmatrix
7 .optsdcc -mmcs51 --model-small
8
9 ;--------------------------------------------------------
10 ; Public variables in this module
11 ;--------------------------------------------------------
12 .globl _main
13 .globl _CY
14 .globl _AC
15 .globl _F0
16 .globl _RS1
17 .globl _RS0
18 .globl _OV
19 .globl _FL
20 .globl _P
21 .globl _PS
22 .globl _PT1
23 .globl _PX1
24 .globl _PT0
25 .globl _PX0
26 .globl _RD
27 .globl _WR
28 .globl _T1
29 .globl _T0
30 .globl _INT1
31 .globl _INT0
32 .globl _TXD
33 .globl _RXD
34 .globl _P3_7
35 .globl _P3_6
36 .globl _P3_5
37 .globl _P3_4
38 .globl _P3_3
39 .globl _P3_2
40 .globl _P3_1
41 .globl _P3_0
42 .globl _EA
43 .globl _ES
44 .globl _ET1
45 .globl _EX1
46 .globl _ET0
47 .globl _EX0
48 .globl _P2_7
49 .globl _P2_6
50 .globl _P2_5
51 .globl _P2_4
52 .globl _P2_3
53 .globl _P2_2
54 .globl _P2_1
55 .globl _P2_0
56 .globl _SM0
57 .globl _SM1
58 .globl _SM2
59 .globl _REN
60 .globl _TB8
61 .globl _RB8
62 .globl _TI
63 .globl _RI
64 .globl _P1_7
65 .globl _P1_6
66 .globl _P1_5
67 .globl _P1_4
68 .globl _P1_3
69 .globl _P1_2
70 .globl _P1_1
71 .globl _P1_0
72 .globl _TF1
73 .globl _TR1
74 .globl _TF0
75 .globl _TR0
76 .globl _IE1
77 .globl _IT1
78 .globl _IE0
79 .globl _IT0
80 .globl _P0_7
81 .globl _P0_6
82 .globl _P0_5
83 .globl _P0_4
84 .globl _P0_3
85 .globl _P0_2
86 .globl _P0_1
87 .globl _P0_0
88 .globl _B
89 .globl _A
90 .globl _ACC
91 .globl _PSW
92 .globl _IP
93 .globl _P3
94 .globl _IE
95 .globl _P2
96 .globl _SBUF
97 .globl _SCON
98 .globl _P1
99 .globl _TH1
100 .globl _TH0
101 .globl _TL1
102 .globl _TL0
103 .globl _TMOD
104 .globl _TCON
105 .globl _PCON
106 .globl _DPH
107 .globl _DPL
108 .globl _SP
109 .globl _P0
110 ;--------------------------------------------------------
111 ; special function registers
112 ;--------------------------------------------------------
113 .area RSEG (DATA)
0080 114 G$P0$0$0 == 0x0080
0080 115 _P0 = 0x0080
0081 116 G$SP$0$0 == 0x0081
0081 117 _SP = 0x0081
0082 118 G$DPL$0$0 == 0x0082
0082 119 _DPL = 0x0082
0083 120 G$DPH$0$0 == 0x0083
0083 121 _DPH = 0x0083
0087 122 G$PCON$0$0 == 0x0087
0087 123 _PCON = 0x0087
0088 124 G$TCON$0$0 == 0x0088
0088 125 _TCON = 0x0088
0089 126 G$TMOD$0$0 == 0x0089
0089 127 _TMOD = 0x0089
008A 128 G$TL0$0$0 == 0x008a
008A 129 _TL0 = 0x008a
008B 130 G$TL1$0$0 == 0x008b
008B 131 _TL1 = 0x008b
008C 132 G$TH0$0$0 == 0x008c
008C 133 _TH0 = 0x008c
008D 134 G$TH1$0$0 == 0x008d
008D 135 _TH1 = 0x008d
0090 136 G$P1$0$0 == 0x0090
0090 137 _P1 = 0x0090
0098 138 G$SCON$0$0 == 0x0098
0098 139 _SCON = 0x0098
0099 140 G$SBUF$0$0 == 0x0099
0099 141 _SBUF = 0x0099
00A0 142 G$P2$0$0 == 0x00a0
00A0 143 _P2 = 0x00a0
00A8 144 G$IE$0$0 == 0x00a8
00A8 145 _IE = 0x00a8
00B0 146 G$P3$0$0 == 0x00b0
00B0 147 _P3 = 0x00b0
00B8 148 G$IP$0$0 == 0x00b8
00B8 149 _IP = 0x00b8
00D0 150 G$PSW$0$0 == 0x00d0
00D0 151 _PSW = 0x00d0
00E0 152 G$ACC$0$0 == 0x00e0
00E0 153 _ACC = 0x00e0
00E0 154 G$A$0$0 == 0x00e0
00E0 155 _A = 0x00e0
00F0 156 G$B$0$0 == 0x00f0
00F0 157 _B = 0x00f0
158 ;--------------------------------------------------------
159 ; special function bits
160 ;--------------------------------------------------------
161 .area RSEG (DATA)
0080 162 G$P0_0$0$0 == 0x0080
0080 163 _P0_0 = 0x0080
0081 164 G$P0_1$0$0 == 0x0081
0081 165 _P0_1 = 0x0081
0082 166 G$P0_2$0$0 == 0x0082
0082 167 _P0_2 = 0x0082
0083 168 G$P0_3$0$0 == 0x0083
0083 169 _P0_3 = 0x0083
0084 170 G$P0_4$0$0 == 0x0084
0084 171 _P0_4 = 0x0084
0085 172 G$P0_5$0$0 == 0x0085
0085 173 _P0_5 = 0x0085
0086 174 G$P0_6$0$0 == 0x0086
0086 175 _P0_6 = 0x0086
0087 176 G$P0_7$0$0 == 0x0087
0087 177 _P0_7 = 0x0087
0088 178 G$IT0$0$0 == 0x0088
0088 179 _IT0 = 0x0088
0089 180 G$IE0$0$0 == 0x0089
0089 181 _IE0 = 0x0089
008A 182 G$IT1$0$0 == 0x008a
008A 183 _IT1 = 0x008a
008B 184 G$IE1$0$0 == 0x008b
008B 185 _IE1 = 0x008b
008C 186 G$TR0$0$0 == 0x008c
008C 187 _TR0 = 0x008c
008D 188 G$TF0$0$0 == 0x008d
008D 189 _TF0 = 0x008d
008E 190 G$TR1$0$0 == 0x008e
008E 191 _TR1 = 0x008e
008F 192 G$TF1$0$0 == 0x008f
008F 193 _TF1 = 0x008f
0090 194 G$P1_0$0$0 == 0x0090
0090 195 _P1_0 = 0x0090
0091 196 G$P1_1$0$0 == 0x0091
0091 197 _P1_1 = 0x0091
0092 198 G$P1_2$0$0 == 0x0092
0092 199 _P1_2 = 0x0092
0093 200 G$P1_3$0$0 == 0x0093
0093 201 _P1_3 = 0x0093
0094 202 G$P1_4$0$0 == 0x0094
0094 203 _P1_4 = 0x0094
0095 204 G$P1_5$0$0 == 0x0095
0095 205 _P1_5 = 0x0095
0096 206 G$P1_6$0$0 == 0x0096
0096 207 _P1_6 = 0x0096
0097 208 G$P1_7$0$0 == 0x0097
0097 209 _P1_7 = 0x0097
0098 210 G$RI$0$0 == 0x0098
0098 211 _RI = 0x0098
0099 212 G$TI$0$0 == 0x0099
0099 213 _TI = 0x0099
009A 214 G$RB8$0$0 == 0x009a
009A 215 _RB8 = 0x009a
009B 216 G$TB8$0$0 == 0x009b
009B 217 _TB8 = 0x009b
009C 218 G$REN$0$0 == 0x009c
009C 219 _REN = 0x009c
009D 220 G$SM2$0$0 == 0x009d
009D 221 _SM2 = 0x009d
009E 222 G$SM1$0$0 == 0x009e
009E 223 _SM1 = 0x009e
009F 224 G$SM0$0$0 == 0x009f
009F 225 _SM0 = 0x009f
00A0 226 G$P2_0$0$0 == 0x00a0
00A0 227 _P2_0 = 0x00a0
00A1 228 G$P2_1$0$0 == 0x00a1
00A1 229 _P2_1 = 0x00a1
00A2 230 G$P2_2$0$0 == 0x00a2
00A2 231 _P2_2 = 0x00a2
00A3 232 G$P2_3$0$0 == 0x00a3
00A3 233 _P2_3 = 0x00a3
00A4 234 G$P2_4$0$0 == 0x00a4
00A4 235 _P2_4 = 0x00a4
00A5 236 G$P2_5$0$0 == 0x00a5
00A5 237 _P2_5 = 0x00a5
00A6 238 G$P2_6$0$0 == 0x00a6
00A6 239 _P2_6 = 0x00a6
00A7 240 G$P2_7$0$0 == 0x00a7
00A7 241 _P2_7 = 0x00a7
00A8 242 G$EX0$0$0 == 0x00a8
00A8 243 _EX0 = 0x00a8
00A9 244 G$ET0$0$0 == 0x00a9
00A9 245 _ET0 = 0x00a9
00AA 246 G$EX1$0$0 == 0x00aa
00AA 247 _EX1 = 0x00aa
00AB 248 G$ET1$0$0 == 0x00ab
00AB 249 _ET1 = 0x00ab
00AC 250 G$ES$0$0 == 0x00ac
00AC 251 _ES = 0x00ac
00AF 252 G$EA$0$0 == 0x00af
00AF 253 _EA = 0x00af
00B0 254 G$P3_0$0$0 == 0x00b0
00B0 255 _P3_0 = 0x00b0
00B1 256 G$P3_1$0$0 == 0x00b1
00B1 257 _P3_1 = 0x00b1
00B2 258 G$P3_2$0$0 == 0x00b2
00B2 259 _P3_2 = 0x00b2
00B3 260 G$P3_3$0$0 == 0x00b3
00B3 261 _P3_3 = 0x00b3
00B4 262 G$P3_4$0$0 == 0x00b4
00B4 263 _P3_4 = 0x00b4
00B5 264 G$P3_5$0$0 == 0x00b5
00B5 265 _P3_5 = 0x00b5
00B6 266 G$P3_6$0$0 == 0x00b6
00B6 267 _P3_6 = 0x00b6
00B7 268 G$P3_7$0$0 == 0x00b7
00B7 269 _P3_7 = 0x00b7
00B0 270 G$RXD$0$0 == 0x00b0
00B0 271 _RXD = 0x00b0
00B1 272 G$TXD$0$0 == 0x00b1
00B1 273 _TXD = 0x00b1
00B2 274 G$INT0$0$0 == 0x00b2
00B2 275 _INT0 = 0x00b2
00B3 276 G$INT1$0$0 == 0x00b3
00B3 277 _INT1 = 0x00b3
00B4 278 G$T0$0$0 == 0x00b4
00B4 279 _T0 = 0x00b4
00B5 280 G$T1$0$0 == 0x00b5
00B5 281 _T1 = 0x00b5
00B6 282 G$WR$0$0 == 0x00b6
00B6 283 _WR = 0x00b6
00B7 284 G$RD$0$0 == 0x00b7
00B7 285 _RD = 0x00b7
00B8 286 G$PX0$0$0 == 0x00b8
00B8 287 _PX0 = 0x00b8
00B9 288 G$PT0$0$0 == 0x00b9
00B9 289 _PT0 = 0x00b9
00BA 290 G$PX1$0$0 == 0x00ba
00BA 291 _PX1 = 0x00ba
00BB 292 G$PT1$0$0 == 0x00bb
00BB 293 _PT1 = 0x00bb
00BC 294 G$PS$0$0 == 0x00bc
00BC 295 _PS = 0x00bc
00D0 296 G$P$0$0 == 0x00d0
00D0 297 _P = 0x00d0
00D1 298 G$FL$0$0 == 0x00d1
00D1 299 _FL = 0x00d1
00D2 300 G$OV$0$0 == 0x00d2
00D2 301 _OV = 0x00d2
00D3 302 G$RS0$0$0 == 0x00d3
00D3 303 _RS0 = 0x00d3
00D4 304 G$RS1$0$0 == 0x00d4
00D4 305 _RS1 = 0x00d4
00D5 306 G$F0$0$0 == 0x00d5
00D5 307 _F0 = 0x00d5
00D6 308 G$AC$0$0 == 0x00d6
00D6 309 _AC = 0x00d6
00D7 310 G$CY$0$0 == 0x00d7
00D7 311 _CY = 0x00d7
312 ;--------------------------------------------------------
313 ; overlayable register banks
314 ;--------------------------------------------------------
315 .area REG_BANK_0 (REL,OVR,DATA)
0000 316 .ds 8
317 ;--------------------------------------------------------
318 ; internal ram data
319 ;--------------------------------------------------------
320 .area DSEG (DATA)
321 ;--------------------------------------------------------
322 ; overlayable items in internal ram
323 ;--------------------------------------------------------
324 .area OSEG (OVR,DATA)
325 ;--------------------------------------------------------
326 ; Stack segment in internal ram
327 ;--------------------------------------------------------
328 .area SSEG (DATA)
0000 329 __start__stack:
0000 330 .ds 1
331
332 ;--------------------------------------------------------
333 ; indirectly addressable internal ram data
334 ;--------------------------------------------------------
335 .area ISEG (DATA)
336 ;--------------------------------------------------------
337 ; absolute internal ram data
338 ;--------------------------------------------------------
339 .area IABS (ABS,DATA)
340 .area IABS (ABS,DATA)
341 ;--------------------------------------------------------
342 ; bit data
343 ;--------------------------------------------------------
344 .area BSEG (BIT)
345 ;--------------------------------------------------------
346 ; paged external ram data
347 ;--------------------------------------------------------
348 .area PSEG (PAG,XDATA)
349 ;--------------------------------------------------------
350 ; external ram data
351 ;--------------------------------------------------------
352 .area XSEG (XDATA)
353 ;--------------------------------------------------------
354 ; absolute external ram data
355 ;--------------------------------------------------------
356 .area XABS (ABS,XDATA)
357 ;--------------------------------------------------------
358 ; external initialized ram data
359 ;--------------------------------------------------------
360 .area XISEG (XDATA)
361 .area HOME (CODE)
362 .area GSINIT0 (CODE)
363 .area GSINIT1 (CODE)
364 .area GSINIT2 (CODE)
365 .area GSINIT3 (CODE)
366 .area GSINIT4 (CODE)
367 .area GSINIT5 (CODE)
368 .area GSINIT (CODE)
369 .area GSFINAL (CODE)
370 .area CSEG (CODE)
371 ;--------------------------------------------------------
372 ; interrupt vector
373 ;--------------------------------------------------------
374 .area HOME (CODE)
0000 375 __interrupt_vect:
0000 02s00r00 376 ljmp __sdcc_gsinit_startup
377 ;--------------------------------------------------------
378 ; global & static initialisations
379 ;--------------------------------------------------------
380 .area HOME (CODE)
381 .area GSINIT (CODE)
382 .area GSFINAL (CODE)
383 .area GSINIT (CODE)
384 .globl __sdcc_gsinit_startup
385 .globl __sdcc_program_startup
386 .globl __start__stack
387 .globl __mcs51_genXINIT
388 .globl __mcs51_genXRAMCLEAR
389 .globl __mcs51_genRAMCLEAR
390 .area GSFINAL (CODE)
0000 02s00r03 391 ljmp __sdcc_program_startup
392 ;--------------------------------------------------------
393 ; Home
394 ;--------------------------------------------------------
395 .area HOME (CODE)
396 .area HOME (CODE)
0003 397 __sdcc_program_startup:
0003 12s00r00 398 lcall _main
399 ; return from main will lock up
0006 80 FE 400 sjmp .
401 ;--------------------------------------------------------
402 ; code
403 ;--------------------------------------------------------
404 .area CSEG (CODE)
405 ;------------------------------------------------------------
406 ;Allocation info for local variables in function 'main'
407 ;------------------------------------------------------------
408 ;i Allocated to registers r2 r3
409 ;------------------------------------------------------------
0000 410 G$main$0$0 ==.
0000 411 C$ledmatrix.c$27$0$0 ==.
412 ; ledmatrix.c:27: int main()
413 ; -----------------------------------------
414 ; function main
415 ; -----------------------------------------
0000 416 _main:
0002 417 ar2 = 0x02
0003 418 ar3 = 0x03
0004 419 ar4 = 0x04
0005 420 ar5 = 0x05
0006 421 ar6 = 0x06
0007 422 ar7 = 0x07
0000 423 ar0 = 0x00
0001 424 ar1 = 0x01
0000 425 C$ledmatrix.c$30$1$1 ==.
426 ; ledmatrix.c:30: while(1) {
0000 427 00102$:
0000 428 C$ledmatrix.c$31$2$2 ==.
429 ; ledmatrix.c:31: for(i=0; i<8; i++) {
0000 7A 00 430 mov r2,#0x00
0002 7B 00 431 mov r3,#0x00
0004 432 00104$:
0004 C3 433 clr c
0005 EA 434 mov a,r2
0006 94 08 435 subb a,#0x08
0008 EB 436 mov a,r3
0009 64 80 437 xrl a,#0x80
000B 94 80 438 subb a,#0x80
000D 50 F1 439 jnc 00102$
000F 440 C$ledmatrix.c$32$3$3 ==.
441 ; ledmatrix.c:32: P1 = 0xff;
000F 75 90 FF 442 mov _P1,#0xFF
0012 443 C$ledmatrix.c$33$3$3 ==.
444 ; ledmatrix.c:33: P0 = image[i];
0012 EA 445 mov a,r2
0013 24r00 446 add a,#_image
0015 F5 82 447 mov dpl,a
0017 EB 448 mov a,r3
0018 34s00 449 addc a,#(_image >> 8)
001A F5 83 450 mov dph,a
001C E4 451 clr a
001D 93 452 movc a,@a+dptr
001E F5 80 453 mov _P0,a
0020 454 C$ledmatrix.c$34$3$3 ==.
455 ; ledmatrix.c:34: P1 = (1 << i) ^ 255;
0020 8A F0 456 mov b,r2
0022 05 F0 457 inc b
0024 7C 01 458 mov r4,#0x01
0026 7D 00 459 mov r5,#0x00
0028 80 06 460 sjmp 00115$
002A 461 00114$:
002A EC 462 mov a,r4
002B 2C 463 add a,r4
002C FC 464 mov r4,a
002D ED 465 mov a,r5
002E 33 466 rlc a
002F FD 467 mov r5,a
0030 468 00115$:
0030 D5 F0 F7 469 djnz b,00114$
0033 74 FF 470 mov a,#0xFF
0035 6C 471 xrl a,r4
0036 F5 90 472 mov _P1,a
0038 473 C$ledmatrix.c$31$2$2 ==.
474 ; ledmatrix.c:31: for(i=0; i<8; i++) {
0038 0A 475 inc r2
0039 BA 00 C8 476 cjne r2,#0x00,00104$
003C 0B 477 inc r3
003D 478 C$ledmatrix.c$37$1$1 ==.
003D 479 XG$main$0$0 ==.
003D 80 C5 480 sjmp 00104$
481 .area CSEG (CODE)
482 .area CONST (CODE)
0000 483 Fledmatrix$image$0$0 == .
0000 484 _image:
0000 B1 485 .db #0xB1
0001 9D 486 .db #0x9D
0002 BD 487 .db #0xBD
0003 B1 488 .db #0xB1
0004 B7 489 .db #0xB7
0005 B7 490 .db #0xB7
0006 11 491 .db #0x11
0007 FF 492 .db #0xFF
493 .area XINIT (CODE)
494 .area CABS (ABS,CODE)
|