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)