1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 3.2.0 #8008 (Jul 6 2012) (MINGW32) 4 ; This file was generated Fri Oct 02 13:00:25 2015 5 ;-------------------------------------------------------- 6 .module test_led 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _main 13 .globl _delay 14 .globl _shl 15 .globl _readdip 16 .globl _leds 17 .globl _SPR0 18 .globl _SPR1 19 .globl _CPHA 20 .globl _CPOL 21 .globl _SPIM 22 .globl _SPE 23 .globl _WCOL 24 .globl _ISPI 25 .globl _I2CI 26 .globl _I2CTX 27 .globl _I2CRS 28 .globl _I2CM 29 .globl _MDI 30 .globl _MCO 31 .globl _MDE 32 .globl _MDO 33 .globl _CS0 34 .globl _CS1 35 .globl _CS2 36 .globl _CS3 37 .globl _SCONV 38 .globl _CCONV 39 .globl _DMA 40 .globl _ADCI 41 .globl _P 42 .globl _F1 43 .globl _OV 44 .globl _RS0 45 .globl _RS1 46 .globl _F0 47 .globl _AC 48 .globl _CY 49 .globl _CAP2 50 .globl _CNT2 51 .globl _TR2 52 .globl _XEN 53 .globl _TCLK 54 .globl _RCLK 55 .globl _EXF2 56 .globl _TF2 57 .globl _WDE 58 .globl _WDS 59 .globl _WDR2 60 .globl _WDR1 61 .globl _PRE0 62 .globl _PRE1 63 .globl _PRE2 64 .globl _PX0 65 .globl _PT0 66 .globl _PX1 67 .globl _PT1 68 .globl _PS 69 .globl _PT2 70 .globl _PADC 71 .globl _PSI 72 .globl _RXD 73 .globl _TXD 74 .globl _INT0 75 .globl _INT1 76 .globl _T0 77 .globl _T1 78 .globl _WR 79 .globl _RD 80 .globl _EX0 81 .globl _ET0 82 .globl _EX1 83 .globl _ET1 84 .globl _ES 85 .globl _ET2 86 .globl _EADC 87 .globl _EA 88 .globl _RI 89 .globl _TI 90 .globl _RB8 91 .globl _TB8 92 .globl _REN 93 .globl _SM2 94 .globl _SM1 95 .globl _SM0 96 .globl _T2 97 .globl _T2EX 98 .globl _IT0 99 .globl _IE0 100 .globl _IT1 101 .globl _IE1 102 .globl _TR0 103 .globl _TF0 104 .globl _TR1 105 .globl _TF1 106 .globl _DACCON 107 .globl _DAC1H 108 .globl _DAC1L 109 .globl _DAC0H 110 .globl _DAC0L 111 .globl _SPICON 112 .globl _SPIDAT 113 .globl _ADCCON3 114 .globl _ADCGAINH 115 .globl _ADCGAINL 116 .globl _ADCOFSH 117 .globl _ADCOFSL 118 .globl _B 119 .globl _ADCCON1 120 .globl _I2CCON 121 .globl _ACC 122 .globl _PSMCON 123 .globl _ADCDATAH 124 .globl _ADCDATAL 125 .globl _ADCCON2 126 .globl _DMAP 127 .globl _DMAH 128 .globl _DMAL 129 .globl _PSW 130 .globl _TH2 131 .globl _TL2 132 .globl _RCAP2H 133 .globl _RCAP2L 134 .globl _T2CON 135 .globl _EADRL 136 .globl _WDCON 137 .globl _EDATA4 138 .globl _EDATA3 139 .globl _EDATA2 140 .globl _EDATA1 141 .globl _ETIM3 142 .globl _ETIM2 143 .globl _ETIM1 144 .globl _ECON 145 .globl _IP 146 .globl _P3 147 .globl _IE2 148 .globl _IE 149 .globl _P2 150 .globl _I2CADD 151 .globl _I2CDAT 152 .globl _SBUF 153 .globl _SCON 154 .globl _P1 155 .globl _TH1 156 .globl _TH0 157 .globl _TL1 158 .globl _TL0 159 .globl _TMOD 160 .globl _TCON 161 .globl _PCON 162 .globl _DPP 163 .globl _DPH 164 .globl _DPL 165 .globl _SP 166 .globl _P0 167 ;-------------------------------------------------------- 168 ; special function registers 169 ;-------------------------------------------------------- 170 .area RSEG (ABS,DATA) 0000 171 .org 0x0000 0080 172 _P0 = 0x0080 0081 173 _SP = 0x0081 0082 174 _DPL = 0x0082 0083 175 _DPH = 0x0083 0084 176 _DPP = 0x0084 0087 177 _PCON = 0x0087 0088 178 _TCON = 0x0088 0089 179 _TMOD = 0x0089 008A 180 _TL0 = 0x008a 008B 181 _TL1 = 0x008b 008C 182 _TH0 = 0x008c 008D 183 _TH1 = 0x008d 0090 184 _P1 = 0x0090 0098 185 _SCON = 0x0098 0099 186 _SBUF = 0x0099 009A 187 _I2CDAT = 0x009a 009B 188 _I2CADD = 0x009b 00A0 189 _P2 = 0x00a0 00A8 190 _IE = 0x00a8 00A9 191 _IE2 = 0x00a9 00B0 192 _P3 = 0x00b0 00B8 193 _IP = 0x00b8 00B9 194 _ECON = 0x00b9 00BA 195 _ETIM1 = 0x00ba 00BB 196 _ETIM2 = 0x00bb 00C4 197 _ETIM3 = 0x00c4 00BC 198 _EDATA1 = 0x00bc 00BD 199 _EDATA2 = 0x00bd 00BE 200 _EDATA3 = 0x00be 00BF 201 _EDATA4 = 0x00bf 00C0 202 _WDCON = 0x00c0 00C6 203 _EADRL = 0x00c6 00C8 204 _T2CON = 0x00c8 00CA 205 _RCAP2L = 0x00ca 00CB 206 _RCAP2H = 0x00cb 00CC 207 _TL2 = 0x00cc 00CD 208 _TH2 = 0x00cd 00D0 209 _PSW = 0x00d0 00D2 210 _DMAL = 0x00d2 00D3 211 _DMAH = 0x00d3 00D4 212 _DMAP = 0x00d4 00D8 213 _ADCCON2 = 0x00d8 00D9 214 _ADCDATAL = 0x00d9 00DA 215 _ADCDATAH = 0x00da 00DF 216 _PSMCON = 0x00df 00E0 217 _ACC = 0x00e0 00E8 218 _I2CCON = 0x00e8 00EF 219 _ADCCON1 = 0x00ef 00F0 220 _B = 0x00f0 00F1 221 _ADCOFSL = 0x00f1 00F2 222 _ADCOFSH = 0x00f2 00F3 223 _ADCGAINL = 0x00f3 00F4 224 _ADCGAINH = 0x00f4 00F5 225 _ADCCON3 = 0x00f5 00F7 226 _SPIDAT = 0x00f7 00F8 227 _SPICON = 0x00f8 00F9 228 _DAC0L = 0x00f9 00FA 229 _DAC0H = 0x00fa 00FB 230 _DAC1L = 0x00fb 00FC 231 _DAC1H = 0x00fc 00FD 232 _DACCON = 0x00fd 233 ;-------------------------------------------------------- 234 ; special function bits 235 ;-------------------------------------------------------- 236 .area RSEG (ABS,DATA) 0000 237 .org 0x0000 008F 238 _TF1 = 0x008f 008E 239 _TR1 = 0x008e 008D 240 _TF0 = 0x008d 008C 241 _TR0 = 0x008c 008B 242 _IE1 = 0x008b 008A 243 _IT1 = 0x008a 0089 244 _IE0 = 0x0089 0088 245 _IT0 = 0x0088 0091 246 _T2EX = 0x0091 0090 247 _T2 = 0x0090 009F 248 _SM0 = 0x009f 009E 249 _SM1 = 0x009e 009D 250 _SM2 = 0x009d 009C 251 _REN = 0x009c 009B 252 _TB8 = 0x009b 009A 253 _RB8 = 0x009a 0099 254 _TI = 0x0099 0098 255 _RI = 0x0098 00AF 256 _EA = 0x00af 00AE 257 _EADC = 0x00ae 00AD 258 _ET2 = 0x00ad 00AC 259 _ES = 0x00ac 00AB 260 _ET1 = 0x00ab 00AA 261 _EX1 = 0x00aa 00A9 262 _ET0 = 0x00a9 00A8 263 _EX0 = 0x00a8 00B7 264 _RD = 0x00b7 00B6 265 _WR = 0x00b6 00B5 266 _T1 = 0x00b5 00B4 267 _T0 = 0x00b4 00B3 268 _INT1 = 0x00b3 00B2 269 _INT0 = 0x00b2 00B1 270 _TXD = 0x00b1 00B0 271 _RXD = 0x00b0 00BF 272 _PSI = 0x00bf 00BE 273 _PADC = 0x00be 00BD 274 _PT2 = 0x00bd 00BC 275 _PS = 0x00bc 00BB 276 _PT1 = 0x00bb 00BA 277 _PX1 = 0x00ba 00B9 278 _PT0 = 0x00b9 00B8 279 _PX0 = 0x00b8 00C7 280 _PRE2 = 0x00c7 00C6 281 _PRE1 = 0x00c6 00C5 282 _PRE0 = 0x00c5 00C3 283 _WDR1 = 0x00c3 00C2 284 _WDR2 = 0x00c2 00C1 285 _WDS = 0x00c1 00C0 286 _WDE = 0x00c0 00CF 287 _TF2 = 0x00cf 00CE 288 _EXF2 = 0x00ce 00CD 289 _RCLK = 0x00cd 00CC 290 _TCLK = 0x00cc 00CB 291 _XEN = 0x00cb 00CA 292 _TR2 = 0x00ca 00C9 293 _CNT2 = 0x00c9 00C8 294 _CAP2 = 0x00c8 00D7 295 _CY = 0x00d7 00D6 296 _AC = 0x00d6 00D5 297 _F0 = 0x00d5 00D4 298 _RS1 = 0x00d4 00D3 299 _RS0 = 0x00d3 00D2 300 _OV = 0x00d2 00D1 301 _F1 = 0x00d1 00D0 302 _P = 0x00d0 00DF 303 _ADCI = 0x00df 00DE 304 _DMA = 0x00de 00DD 305 _CCONV = 0x00dd 00DC 306 _SCONV = 0x00dc 00DB 307 _CS3 = 0x00db 00DA 308 _CS2 = 0x00da 00D9 309 _CS1 = 0x00d9 00D8 310 _CS0 = 0x00d8 00EF 311 _MDO = 0x00ef 00EE 312 _MDE = 0x00ee 00ED 313 _MCO = 0x00ed 00EC 314 _MDI = 0x00ec 00EB 315 _I2CM = 0x00eb 00EA 316 _I2CRS = 0x00ea 00E9 317 _I2CTX = 0x00e9 00E8 318 _I2CI = 0x00e8 00FF 319 _ISPI = 0x00ff 00FE 320 _WCOL = 0x00fe 00FD 321 _SPE = 0x00fd 00FC 322 _SPIM = 0x00fc 00FB 323 _CPOL = 0x00fb 00FA 324 _CPHA = 0x00fa 00F9 325 _SPR1 = 0x00f9 00F8 326 _SPR0 = 0x00f8 327 ;-------------------------------------------------------- 328 ; overlayable register banks 329 ;-------------------------------------------------------- 330 .area REG_BANK_0 (REL,OVR,DATA) 0000 331 .ds 8 332 ;-------------------------------------------------------- 333 ; internal ram data 334 ;-------------------------------------------------------- 335 .area DSEG (DATA) 336 ;-------------------------------------------------------- 337 ; overlayable items in internal ram 338 ;-------------------------------------------------------- 339 ;-------------------------------------------------------- 340 ; Stack segment in internal ram 341 ;-------------------------------------------------------- 342 .area SSEG (DATA) 0000 343 __start__stack: 0000 344 .ds 1 345 346 ;-------------------------------------------------------- 347 ; indirectly addressable internal ram data 348 ;-------------------------------------------------------- 349 .area ISEG (DATA) 350 ;-------------------------------------------------------- 351 ; absolute internal ram data 352 ;-------------------------------------------------------- 353 .area IABS (ABS,DATA) 354 .area IABS (ABS,DATA) 355 ;-------------------------------------------------------- 356 ; bit data 357 ;-------------------------------------------------------- 358 .area BSEG (BIT) 359 ;-------------------------------------------------------- 360 ; paged external ram data 361 ;-------------------------------------------------------- 362 .area PSEG (PAG,XDATA) 363 ;-------------------------------------------------------- 364 ; external ram data 365 ;-------------------------------------------------------- 366 .area XSEG (XDATA) 367 ;-------------------------------------------------------- 368 ; absolute external ram data 369 ;-------------------------------------------------------- 370 .area XABS (ABS,XDATA) 371 ;-------------------------------------------------------- 372 ; external initialized ram data 373 ;-------------------------------------------------------- 374 .area XISEG (XDATA) 375 .area HOME (CODE) 376 .area GSINIT0 (CODE) 377 .area GSINIT1 (CODE) 378 .area GSINIT2 (CODE) 379 .area GSINIT3 (CODE) 380 .area GSINIT4 (CODE) 381 .area GSINIT5 (CODE) 382 .area GSINIT (CODE) 383 .area GSFINAL (CODE) 384 .area CSEG (CODE) 385 ;-------------------------------------------------------- 386 ; interrupt vector 387 ;-------------------------------------------------------- 388 .area HOME (CODE) 0000 389 __interrupt_vect: 0000 02s00r00 390 ljmp __sdcc_gsinit_startup 391 ;-------------------------------------------------------- 392 ; global & static initialisations 393 ;-------------------------------------------------------- 394 .area HOME (CODE) 395 .area GSINIT (CODE) 396 .area GSFINAL (CODE) 397 .area GSINIT (CODE) 398 .globl __sdcc_gsinit_startup 399 .globl __sdcc_program_startup 400 .globl __start__stack 401 .globl __mcs51_genXINIT 402 .globl __mcs51_genXRAMCLEAR 403 .globl __mcs51_genRAMCLEAR 404 .area GSFINAL (CODE) 0000 02s00r03 405 ljmp __sdcc_program_startup 406 ;-------------------------------------------------------- 407 ; Home 408 ;-------------------------------------------------------- 409 .area HOME (CODE) 410 .area HOME (CODE) 0003 411 __sdcc_program_startup: 0003 12s00rC0 412 lcall _main 413 ; return from main will lock up 0006 80 FE 414 sjmp . 415 ;-------------------------------------------------------- 416 ; code 417 ;-------------------------------------------------------- 418 .area CSEG (CODE) 419 ;------------------------------------------------------------ 420 ;Allocation info for local variables in function 'shl' 421 ;------------------------------------------------------------ 422 ;count Allocated to stack - _bp -3 423 ;num Allocated to registers r7 424 ;------------------------------------------------------------ 425 ; SRC/test_led.c:27: unsigned char shl ( unsigned char num, unsigned char count ) 426 ; ----------------------------------------- 427 ; function shl 428 ; ----------------------------------------- 0000 429 _shl: 0007 430 ar7 = 0x07 0006 431 ar6 = 0x06 0005 432 ar5 = 0x05 0004 433 ar4 = 0x04 0003 434 ar3 = 0x03 0002 435 ar2 = 0x02 0001 436 ar1 = 0x01 0000 437 ar0 = 0x00 0000 C0*00 438 push _bp 0002 85 81*00 439 mov _bp,sp 0005 AF 82 440 mov r7,dpl 441 ; SRC/test_led.c:29: return ( num << count ) | ( num >> 8 - count ); 0007 E5*00 442 mov a,_bp 0009 24 FD 443 add a,#0xfd 000B F8 444 mov r0,a 000C 86 F0 445 mov b,@r0 000E 05 F0 446 inc b 0010 EF 447 mov a,r7 0011 80 02 448 sjmp 00105$ 0013 449 00103$: 0013 25 E0 450 add a,acc 0015 451 00105$: 0015 D5 F0 FB 452 djnz b,00103$ 0018 FE 453 mov r6,a 0019 E5*00 454 mov a,_bp 001B 24 FD 455 add a,#0xfd 001D F8 456 mov r0,a 001E 86 04 457 mov ar4,@r0 0020 7D 00 458 mov r5,#0x00 0022 74 08 459 mov a,#0x08 0024 C3 460 clr c 0025 9C 461 subb a,r4 0026 FC 462 mov r4,a 0027 E4 463 clr a 0028 9D 464 subb a,r5 0029 FD 465 mov r5,a 002A 8C F0 466 mov b,r4 002C 05 F0 467 inc b 002E EF 468 mov a,r7 002F 80 02 469 sjmp 00107$ 0031 470 00106$: 0031 C3 471 clr c 0032 13 472 rrc a 0033 473 00107$: 0033 D5 F0 FB 474 djnz b,00106$ 0036 4E 475 orl a,r6 0037 F5 82 476 mov dpl,a 0039 D0*00 477 pop _bp 003B 22 478 ret 479 ;------------------------------------------------------------ 480 ;Allocation info for local variables in function 'delay' 481 ;------------------------------------------------------------ 482 ;ms Allocated to registers r4 r5 r6 r7 483 ;i Allocated to stack - _bp +1 484 ;j Allocated to stack - _bp +5 485 ;------------------------------------------------------------ 486 ; SRC/test_led.c:44: void delay ( unsigned long ms ) 487 ; ----------------------------------------- 488 ; function delay 489 ; ----------------------------------------- 003C 490 _delay: 003C C0*00 491 push _bp 003E 85 81*00 492 mov _bp,sp 0041 AC 82 493 mov r4,dpl 0043 AD 83 494 mov r5,dph 0045 AE F0 495 mov r6,b 0047 FF 496 mov r7,a 0048 E5 81 497 mov a,sp 004A 24 08 498 add a,#0x08 004C F5 81 499 mov sp,a 500 ; SRC/test_led.c:48: for( j = 0; j < ms; j++ ) 004E E5*00 501 mov a,_bp 0050 24 05 502 add a,#0x05 0052 F8 503 mov r0,a 0053 E4 504 clr a 0054 F6 505 mov @r0,a 0055 08 506 inc r0 0056 F6 507 mov @r0,a 0057 08 508 inc r0 0058 F6 509 mov @r0,a 0059 08 510 inc r0 005A F6 511 mov @r0,a 005B 512 00105$: 005B E5*00 513 mov a,_bp 005D 24 05 514 add a,#0x05 005F F8 515 mov r0,a 0060 C3 516 clr c 0061 E6 517 mov a,@r0 0062 9C 518 subb a,r4 0063 08 519 inc r0 0064 E6 520 mov a,@r0 0065 9D 521 subb a,r5 0066 08 522 inc r0 0067 E6 523 mov a,@r0 0068 9E 524 subb a,r6 0069 08 525 inc r0 006A E6 526 mov a,@r0 006B 9F 527 subb a,r7 006C 50 4C 528 jnc 00109$ 529 ; SRC/test_led.c:50: for( i = 0; i < 50; i++ ); 006E A8*00 530 mov r0,_bp 0070 08 531 inc r0 0071 E4 532 clr a 0072 F6 533 mov @r0,a 0073 08 534 inc r0 0074 F6 535 mov @r0,a 0075 08 536 inc r0 0076 F6 537 mov @r0,a 0077 08 538 inc r0 0078 F6 539 mov @r0,a 0079 540 00101$: 0079 A8*00 541 mov r0,_bp 007B 08 542 inc r0 007C C3 543 clr c 007D E6 544 mov a,@r0 007E 94 32 545 subb a,#0x32 0080 08 546 inc r0 0081 E6 547 mov a,@r0 0082 94 00 548 subb a,#0x00 0084 08 549 inc r0 0085 E6 550 mov a,@r0 0086 94 00 551 subb a,#0x00 0088 08 552 inc r0 0089 E6 553 mov a,@r0 008A 94 00 554 subb a,#0x00 008C 50 15 555 jnc 00107$ 008E A8*00 556 mov r0,_bp 0090 08 557 inc r0 0091 74 01 558 mov a,#0x01 0093 26 559 add a,@r0 0094 F6 560 mov @r0,a 0095 E4 561 clr a 0096 08 562 inc r0 0097 36 563 addc a,@r0 0098 F6 564 mov @r0,a 0099 E4 565 clr a 009A 08 566 inc r0 009B 36 567 addc a,@r0 009C F6 568 mov @r0,a 009D E4 569 clr a 009E 08 570 inc r0 009F 36 571 addc a,@r0 00A0 F6 572 mov @r0,a 00A1 80 D6 573 sjmp 00101$ 00A3 574 00107$: 575 ; SRC/test_led.c:48: for( j = 0; j < ms; j++ ) 00A3 E5*00 576 mov a,_bp 00A5 24 05 577 add a,#0x05 00A7 F8 578 mov r0,a 00A8 74 01 579 mov a,#0x01 00AA 26 580 add a,@r0 00AB F6 581 mov @r0,a 00AC E4 582 clr a 00AD 08 583 inc r0 00AE 36 584 addc a,@r0 00AF F6 585 mov @r0,a 00B0 E4 586 clr a 00B1 08 587 inc r0 00B2 36 588 addc a,@r0 00B3 F6 589 mov @r0,a 00B4 E4 590 clr a 00B5 08 591 inc r0 00B6 36 592 addc a,@r0 00B7 F6 593 mov @r0,a 00B8 80 A1 594 sjmp 00105$ 00BA 595 00109$: 00BA 85*00 81 596 mov sp,_bp 00BD D0*00 597 pop _bp 00BF 22 598 ret 599 ;------------------------------------------------------------ 600 ;Allocation info for local variables in function 'main' 601 ;------------------------------------------------------------ 602 ;led Allocated to registers r7 603 ;dipPosition Allocated to registers r6 604 ;------------------------------------------------------------ 605 ; SRC/test_led.c:55: void main( void ) 606 ; ----------------------------------------- 607 ; function main 608 ; ----------------------------------------- 00C0 609 _main: 610 ; SRC/test_led.c:57: unsigned char led = 0x03; 00C0 7F 03 611 mov r7,#0x03 612 ; SRC/test_led.c:58: while( 1 ) 00C2 613 00105$: 614 ; SRC/test_led.c:60: unsigned char dipPosition = readdip(); 00C2 C0 07 615 push ar7 00C4 12s00r00 616 lcall _readdip 00C7 AE 82 617 mov r6,dpl 00C9 D0 07 618 pop ar7 619 ; SRC/test_led.c:61: if ( dipPosition == DIP_ON ) 00CB BE AA 27 620 cjne r6,#0xAA,00102$ 621 ; SRC/test_led.c:64: leds( led ); 00CE 8F 82 622 mov dpl,r7 00D0 C0 07 623 push ar7 00D2 12s00r00 624 lcall _leds 00D5 D0 07 625 pop ar7 626 ; SRC/test_led.c:65: led = shl( led, 1 ); 00D7 74 01 627 mov a,#0x01 00D9 C0 E0 628 push acc 00DB 8F 82 629 mov dpl,r7 00DD 12s00r00 630 lcall _shl 00E0 AD 82 631 mov r5,dpl 00E2 15 81 632 dec sp 00E4 8D 07 633 mov ar7,r5 634 ; SRC/test_led.c:66: delay( 200 ); 00E6 90 00 C8 635 mov dptr,#(0xC8&0x00ff) 00E9 E4 636 clr a 00EA F5 F0 637 mov b,a 00EC C0 07 638 push ar7 00EE 12s00r3C 639 lcall _delay 00F1 D0 07 640 pop ar7 00F3 80 CD 641 sjmp 00105$ 00F5 642 00102$: 643 ; SRC/test_led.c:70: leds( ~dipPosition ); 00F5 EE 644 mov a,r6 00F6 F4 645 cpl a 00F7 F5 82 646 mov dpl,a 00F9 C0 07 647 push ar7 00FB 12s00r00 648 lcall _leds 649 ; SRC/test_led.c:71: delay( 200 ); 00FE 90 00 C8 650 mov dptr,#(0xC8&0x00ff) 0101 E4 651 clr a 0102 F5 F0 652 mov b,a 0104 12s00r3C 653 lcall _delay 0107 D0 07 654 pop ar7 0109 80 B7 655 sjmp 00105$ 656 .area CSEG (CODE) 657 .area CONST (CODE) 658 .area XINIT (CODE) 659 .area CABS (ABS,CODE)