1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 2.9.0 #5416 (Mar 22 2009) (MINGW32) 4 ; This file was generated Wed Sep 30 17:30:47 2015 5 ;-------------------------------------------------------- 6 .module timer 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _notes 13 .globl _note_handler 14 .globl _time_handler 15 .globl _SPR0 16 .globl _SPR1 17 .globl _CPHA 18 .globl _CPOL 19 .globl _SPIM 20 .globl _SPE 21 .globl _WCOL 22 .globl _ISPI 23 .globl _I2CI 24 .globl _I2CTX 25 .globl _I2CRS 26 .globl _I2CM 27 .globl _MDI 28 .globl _MCO 29 .globl _MDE 30 .globl _MDO 31 .globl _CS0 32 .globl _CS1 33 .globl _CS2 34 .globl _CS3 35 .globl _SCONV 36 .globl _CCONV 37 .globl _DMA 38 .globl _ADCI 39 .globl _P 40 .globl _F1 41 .globl _OV 42 .globl _RS0 43 .globl _RS1 44 .globl _F0 45 .globl _AC 46 .globl _CY 47 .globl _CAP2 48 .globl _CNT2 49 .globl _TR2 50 .globl _XEN 51 .globl _TCLK 52 .globl _RCLK 53 .globl _EXF2 54 .globl _TF2 55 .globl _WDE 56 .globl _WDS 57 .globl _WDR2 58 .globl _WDR1 59 .globl _PRE0 60 .globl _PRE1 61 .globl _PRE2 62 .globl _PX0 63 .globl _PT0 64 .globl _PX1 65 .globl _PT1 66 .globl _PS 67 .globl _PT2 68 .globl _PADC 69 .globl _PSI 70 .globl _RXD 71 .globl _TXD 72 .globl _INT0 73 .globl _INT1 74 .globl _T0 75 .globl _T1 76 .globl _WR 77 .globl _RD 78 .globl _EX0 79 .globl _ET0 80 .globl _EX1 81 .globl _ET1 82 .globl _ES 83 .globl _ET2 84 .globl _EADC 85 .globl _EA 86 .globl _RI 87 .globl _TI 88 .globl _RB8 89 .globl _TB8 90 .globl _REN 91 .globl _SM2 92 .globl _SM1 93 .globl _SM0 94 .globl _T2 95 .globl _T2EX 96 .globl _IT0 97 .globl _IE0 98 .globl _IT1 99 .globl _IE1 100 .globl _TR0 101 .globl _TF0 102 .globl _TR1 103 .globl _TF1 104 .globl _DACCON 105 .globl _DAC1H 106 .globl _DAC1L 107 .globl _DAC0H 108 .globl _DAC0L 109 .globl _SPICON 110 .globl _SPIDAT 111 .globl _ADCCON3 112 .globl _ADCGAINH 113 .globl _ADCGAINL 114 .globl _ADCOFSH 115 .globl _ADCOFSL 116 .globl _B 117 .globl _ADCCON1 118 .globl _I2CCON 119 .globl _ACC 120 .globl _PSMCON 121 .globl _ADCDATAH 122 .globl _ADCDATAL 123 .globl _ADCCON2 124 .globl _DMAP 125 .globl _DMAH 126 .globl _DMAL 127 .globl _PSW 128 .globl _TH2 129 .globl _TL2 130 .globl _RCAP2H 131 .globl _RCAP2L 132 .globl _T2CON 133 .globl _EADRL 134 .globl _WDCON 135 .globl _EDATA4 136 .globl _EDATA3 137 .globl _EDATA2 138 .globl _EDATA1 139 .globl _ETIM3 140 .globl _ETIM2 141 .globl _ETIM1 142 .globl _ECON 143 .globl _IP 144 .globl _P3 145 .globl _IE2 146 .globl _IE 147 .globl _P2 148 .globl _I2CADD 149 .globl _I2CDAT 150 .globl _SBUF 151 .globl _SCON 152 .globl _P1 153 .globl _TH1 154 .globl _TH0 155 .globl _TL1 156 .globl _TL0 157 .globl _TMOD 158 .globl _TCON 159 .globl _PCON 160 .globl _DPP 161 .globl _DPH 162 .globl _DPL 163 .globl _SP 164 .globl _P0 165 .globl _time_delay 166 .globl _note_delay 167 .globl _current_note 168 .globl _current_ena 169 .globl _last_note_swap 170 .globl _ms_count 171 .globl _set_vector 172 .globl _write_max 173 .globl _set_led 174 .globl _set_ena 175 .globl _InitTimer 176 .globl _GetMsCounter 177 .globl _DTimeMs 178 .globl _DelayMs 179 .globl _compute_note_delay 180 .globl _compute_timer_delay 181 ;-------------------------------------------------------- 182 ; special function registers 183 ;-------------------------------------------------------- 184 .area RSEG (DATA) 0080 185 _P0 = 0x0080 0081 186 _SP = 0x0081 0082 187 _DPL = 0x0082 0083 188 _DPH = 0x0083 0084 189 _DPP = 0x0084 0087 190 _PCON = 0x0087 0088 191 _TCON = 0x0088 0089 192 _TMOD = 0x0089 008A 193 _TL0 = 0x008a 008B 194 _TL1 = 0x008b 008C 195 _TH0 = 0x008c 008D 196 _TH1 = 0x008d 0090 197 _P1 = 0x0090 0098 198 _SCON = 0x0098 0099 199 _SBUF = 0x0099 009A 200 _I2CDAT = 0x009a 009B 201 _I2CADD = 0x009b 00A0 202 _P2 = 0x00a0 00A8 203 _IE = 0x00a8 00A9 204 _IE2 = 0x00a9 00B0 205 _P3 = 0x00b0 00B8 206 _IP = 0x00b8 00B9 207 _ECON = 0x00b9 00BA 208 _ETIM1 = 0x00ba 00BB 209 _ETIM2 = 0x00bb 00C4 210 _ETIM3 = 0x00c4 00BC 211 _EDATA1 = 0x00bc 00BD 212 _EDATA2 = 0x00bd 00BE 213 _EDATA3 = 0x00be 00BF 214 _EDATA4 = 0x00bf 00C0 215 _WDCON = 0x00c0 00C6 216 _EADRL = 0x00c6 00C8 217 _T2CON = 0x00c8 00CA 218 _RCAP2L = 0x00ca 00CB 219 _RCAP2H = 0x00cb 00CC 220 _TL2 = 0x00cc 00CD 221 _TH2 = 0x00cd 00D0 222 _PSW = 0x00d0 00D2 223 _DMAL = 0x00d2 00D3 224 _DMAH = 0x00d3 00D4 225 _DMAP = 0x00d4 00D8 226 _ADCCON2 = 0x00d8 00D9 227 _ADCDATAL = 0x00d9 00DA 228 _ADCDATAH = 0x00da 00DF 229 _PSMCON = 0x00df 00E0 230 _ACC = 0x00e0 00E8 231 _I2CCON = 0x00e8 00EF 232 _ADCCON1 = 0x00ef 00F0 233 _B = 0x00f0 00F1 234 _ADCOFSL = 0x00f1 00F2 235 _ADCOFSH = 0x00f2 00F3 236 _ADCGAINL = 0x00f3 00F4 237 _ADCGAINH = 0x00f4 00F5 238 _ADCCON3 = 0x00f5 00F7 239 _SPIDAT = 0x00f7 00F8 240 _SPICON = 0x00f8 00F9 241 _DAC0L = 0x00f9 00FA 242 _DAC0H = 0x00fa 00FB 243 _DAC1L = 0x00fb 00FC 244 _DAC1H = 0x00fc 00FD 245 _DACCON = 0x00fd 246 ;-------------------------------------------------------- 247 ; special function bits 248 ;-------------------------------------------------------- 249 .area RSEG (DATA) 008F 250 _TF1 = 0x008f 008E 251 _TR1 = 0x008e 008D 252 _TF0 = 0x008d 008C 253 _TR0 = 0x008c 008B 254 _IE1 = 0x008b 008A 255 _IT1 = 0x008a 0089 256 _IE0 = 0x0089 0088 257 _IT0 = 0x0088 0091 258 _T2EX = 0x0091 0090 259 _T2 = 0x0090 009F 260 _SM0 = 0x009f 009E 261 _SM1 = 0x009e 009D 262 _SM2 = 0x009d 009C 263 _REN = 0x009c 009B 264 _TB8 = 0x009b 009A 265 _RB8 = 0x009a 0099 266 _TI = 0x0099 0098 267 _RI = 0x0098 00AF 268 _EA = 0x00af 00AE 269 _EADC = 0x00ae 00AD 270 _ET2 = 0x00ad 00AC 271 _ES = 0x00ac 00AB 272 _ET1 = 0x00ab 00AA 273 _EX1 = 0x00aa 00A9 274 _ET0 = 0x00a9 00A8 275 _EX0 = 0x00a8 00B7 276 _RD = 0x00b7 00B6 277 _WR = 0x00b6 00B5 278 _T1 = 0x00b5 00B4 279 _T0 = 0x00b4 00B3 280 _INT1 = 0x00b3 00B2 281 _INT0 = 0x00b2 00B1 282 _TXD = 0x00b1 00B0 283 _RXD = 0x00b0 00BF 284 _PSI = 0x00bf 00BE 285 _PADC = 0x00be 00BD 286 _PT2 = 0x00bd 00BC 287 _PS = 0x00bc 00BB 288 _PT1 = 0x00bb 00BA 289 _PX1 = 0x00ba 00B9 290 _PT0 = 0x00b9 00B8 291 _PX0 = 0x00b8 00C7 292 _PRE2 = 0x00c7 00C6 293 _PRE1 = 0x00c6 00C5 294 _PRE0 = 0x00c5 00C3 295 _WDR1 = 0x00c3 00C2 296 _WDR2 = 0x00c2 00C1 297 _WDS = 0x00c1 00C0 298 _WDE = 0x00c0 00CF 299 _TF2 = 0x00cf 00CE 300 _EXF2 = 0x00ce 00CD 301 _RCLK = 0x00cd 00CC 302 _TCLK = 0x00cc 00CB 303 _XEN = 0x00cb 00CA 304 _TR2 = 0x00ca 00C9 305 _CNT2 = 0x00c9 00C8 306 _CAP2 = 0x00c8 00D7 307 _CY = 0x00d7 00D6 308 _AC = 0x00d6 00D5 309 _F0 = 0x00d5 00D4 310 _RS1 = 0x00d4 00D3 311 _RS0 = 0x00d3 00D2 312 _OV = 0x00d2 00D1 313 _F1 = 0x00d1 00D0 314 _P = 0x00d0 00DF 315 _ADCI = 0x00df 00DE 316 _DMA = 0x00de 00DD 317 _CCONV = 0x00dd 00DC 318 _SCONV = 0x00dc 00DB 319 _CS3 = 0x00db 00DA 320 _CS2 = 0x00da 00D9 321 _CS1 = 0x00d9 00D8 322 _CS0 = 0x00d8 00EF 323 _MDO = 0x00ef 00EE 324 _MDE = 0x00ee 00ED 325 _MCO = 0x00ed 00EC 326 _MDI = 0x00ec 00EB 327 _I2CM = 0x00eb 00EA 328 _I2CRS = 0x00ea 00E9 329 _I2CTX = 0x00e9 00E8 330 _I2CI = 0x00e8 00FF 331 _ISPI = 0x00ff 00FE 332 _WCOL = 0x00fe 00FD 333 _SPE = 0x00fd 00FC 334 _SPIM = 0x00fc 00FB 335 _CPOL = 0x00fb 00FA 336 _CPHA = 0x00fa 00F9 337 _SPR1 = 0x00f9 00F8 338 _SPR0 = 0x00f8 339 ;-------------------------------------------------------- 340 ; overlayable register banks 341 ;-------------------------------------------------------- 342 .area REG_BANK_0 (REL,OVR,DATA) 0000 343 .ds 8 344 ;-------------------------------------------------------- 345 ; overlayable bit register bank 346 ;-------------------------------------------------------- 347 .area BIT_BANK (REL,OVR,DATA) 0000 348 bits: 0000 349 .ds 1 8000 350 b0 = bits[0] 8100 351 b1 = bits[1] 8200 352 b2 = bits[2] 8300 353 b3 = bits[3] 8400 354 b4 = bits[4] 8500 355 b5 = bits[5] 8600 356 b6 = bits[6] 8700 357 b7 = bits[7] 358 ;-------------------------------------------------------- 359 ; internal ram data 360 ;-------------------------------------------------------- 361 .area DSEG (DATA) 0000 362 _ms_count:: 0000 363 .ds 4 0004 364 _last_note_swap:: 0004 365 .ds 4 0008 366 _current_ena:: 0008 367 .ds 1 0009 368 _current_note:: 0009 369 .ds 1 000A 370 _note_delay:: 000A 371 .ds 2 000C 372 _time_delay:: 000C 373 .ds 2 374 ;-------------------------------------------------------- 375 ; overlayable items in internal ram 376 ;-------------------------------------------------------- 377 .area OSEG (OVR,DATA) 378 ;-------------------------------------------------------- 379 ; indirectly addressable internal ram data 380 ;-------------------------------------------------------- 381 .area ISEG (DATA) 382 ;-------------------------------------------------------- 383 ; absolute internal ram data 384 ;-------------------------------------------------------- 385 .area IABS (ABS,DATA) 386 .area IABS (ABS,DATA) 387 ;-------------------------------------------------------- 388 ; bit data 389 ;-------------------------------------------------------- 390 .area BSEG (BIT) 391 ;-------------------------------------------------------- 392 ; paged external ram data 393 ;-------------------------------------------------------- 394 .area PSEG (PAG,XDATA) 395 ;-------------------------------------------------------- 396 ; external ram data 397 ;-------------------------------------------------------- 398 .area XSEG (XDATA) 399 ;-------------------------------------------------------- 400 ; absolute external ram data 401 ;-------------------------------------------------------- 402 .area XABS (ABS,XDATA) 403 ;-------------------------------------------------------- 404 ; external initialized ram data 405 ;-------------------------------------------------------- 406 .area XISEG (XDATA) 407 .area HOME (CODE) 408 .area GSINIT0 (CODE) 409 .area GSINIT1 (CODE) 410 .area GSINIT2 (CODE) 411 .area GSINIT3 (CODE) 412 .area GSINIT4 (CODE) 413 .area GSINIT5 (CODE) 414 .area GSINIT (CODE) 415 .area GSFINAL (CODE) 416 .area CSEG (CODE) 417 ;-------------------------------------------------------- 418 ; global & static initialisations 419 ;-------------------------------------------------------- 420 .area HOME (CODE) 421 .area GSINIT (CODE) 422 .area GSFINAL (CODE) 423 .area GSINIT (CODE) 424 ;-------------------------------------------------------- 425 ; Home 426 ;-------------------------------------------------------- 427 .area HOME (CODE) 428 .area HOME (CODE) 429 ;-------------------------------------------------------- 430 ; code 431 ;-------------------------------------------------------- 432 .area CSEG (CODE) 433 ;------------------------------------------------------------ 434 ;Allocation info for local variables in function 'set_vector' 435 ;------------------------------------------------------------ 436 ;vector Allocated to stack - offset -5 437 ;address Allocated to registers r2 r3 438 ;tmp Allocated to registers r2 r3 439 ;------------------------------------------------------------ 440 ; source/timer.c:34: void set_vector(uint8_t xdata* address, void* vector) 441 ; ----------------------------------------- 442 ; function set_vector 443 ; ----------------------------------------- 0000 444 _set_vector: 0002 445 ar2 = 0x02 0003 446 ar3 = 0x03 0004 447 ar4 = 0x04 0005 448 ar5 = 0x05 0006 449 ar6 = 0x06 0007 450 ar7 = 0x07 0000 451 ar0 = 0x00 0001 452 ar1 = 0x01 0000 C0*00 453 push _bp 0002 85 81*00 454 mov _bp,sp 455 ; source/timer.c:38: *address = 0x02; 0005 AA 82 456 mov r2,dpl 0007 AB 83 457 mov r3,dph 0009 74 02 458 mov a,#0x02 000B F0 459 movx @dptr,a 460 ; source/timer.c:40: tmp = (unsigned char xdata*)(address + 1); 000C 0A 461 inc r2 000D BA 00 01 462 cjne r2,#0x00,00103$ 0010 0B 463 inc r3 0011 464 00103$: 465 ; source/timer.c:41: *tmp = (unsigned char)((unsigned short)vector >> 8); 0011 E5*00 466 mov a,_bp 0013 24 FB 467 add a,#0xfb 0015 F8 468 mov r0,a 0016 86 04 469 mov ar4,@r0 0018 08 470 inc r0 0019 86 05 471 mov ar5,@r0 001B 8D 04 472 mov ar4,r5 001D 8A 82 473 mov dpl,r2 001F 8B 83 474 mov dph,r3 0021 EC 475 mov a,r4 0022 F0 476 movx @dptr,a 0023 A3 477 inc dptr 0024 AA 82 478 mov r2,dpl 0026 AB 83 479 mov r3,dph 480 ; source/timer.c:42: ++tmp; 481 ; source/timer.c:44: *tmp = (unsigned char)vector; 0028 E5*00 482 mov a,_bp 002A 24 FB 483 add a,#0xfb 002C F8 484 mov r0,a 002D 86 04 485 mov ar4,@r0 002F 8A 82 486 mov dpl,r2 0031 8B 83 487 mov dph,r3 0033 EC 488 mov a,r4 0034 F0 489 movx @dptr,a 0035 D0*00 490 pop _bp 0037 22 491 ret 492 ;------------------------------------------------------------ 493 ;Allocation info for local variables in function 'write_max' 494 ;------------------------------------------------------------ 495 ;value Allocated to stack - offset -3 496 ;regnum Allocated to registers r2 r3 497 ;old_dpp Allocated to registers r4 498 ;------------------------------------------------------------ 499 ; source/timer.c:47: void write_max(uint8_t xdata* regnum, uint8_t value) 500 ; ----------------------------------------- 501 ; function write_max 502 ; ----------------------------------------- 0038 503 _write_max: 0038 C0*00 504 push _bp 003A 85 81*00 505 mov _bp,sp 506 ; source/timer.c:49: uint8_t old_dpp = DPP; 507 ; source/timer.c:51: DPP = 8; 508 ; source/timer.c:52: *regnum = value; 003D AC 84 509 mov r4,_DPP 003F 75 84 08 510 mov _DPP,#0x08 0042 A8*00 511 mov r0,_bp 0044 18 512 dec r0 0045 18 513 dec r0 0046 18 514 dec r0 0047 E6 515 mov a,@r0 0048 F0 516 movx @dptr,a 517 ; source/timer.c:53: DPP = old_dpp; 0049 8C 84 518 mov _DPP,r4 004B D0*00 519 pop _bp 004D 22 520 ret 521 ;------------------------------------------------------------ 522 ;Allocation info for local variables in function 'set_led' 523 ;------------------------------------------------------------ 524 ;value Allocated to registers r2 525 ;------------------------------------------------------------ 526 ; source/timer.c:56: void set_led(uint8_t value) 527 ; ----------------------------------------- 528 ; function set_led 529 ; ----------------------------------------- 004E 530 _set_led: 004E AA 82 531 mov r2,dpl 532 ; source/timer.c:58: write_max(7, value); 0050 C0 02 533 push ar2 0052 90 00 07 534 mov dptr,#0x0007 0055 12s00r38 535 lcall _write_max 0058 15 81 536 dec sp 005A 22 537 ret 538 ;------------------------------------------------------------ 539 ;Allocation info for local variables in function 'set_ena' 540 ;------------------------------------------------------------ 541 ;value Allocated to registers r2 542 ;------------------------------------------------------------ 543 ; source/timer.c:61: void set_ena(uint8_t value) 544 ; ----------------------------------------- 545 ; function set_ena 546 ; ----------------------------------------- 005B 547 _set_ena: 005B AA 82 548 mov r2,dpl 549 ; source/timer.c:63: write_max(4, value); 005D C0 02 550 push ar2 005F 90 00 04 551 mov dptr,#0x0004 0062 12s00r38 552 lcall _write_max 0065 15 81 553 dec sp 0067 22 554 ret 555 ;------------------------------------------------------------ 556 ;Allocation info for local variables in function 'time_handler' 557 ;------------------------------------------------------------ 558 ;------------------------------------------------------------ 559 ; source/timer.c:66: void time_handler() interrupt(3) 560 ; ----------------------------------------- 561 ; function time_handler 562 ; ----------------------------------------- 0068 563 _time_handler: 0068 C0*00 564 push bits 006A C0 E0 565 push acc 006C C0 F0 566 push b 006E C0 82 567 push dpl 0070 C0 83 568 push dph 0072 C0 02 569 push (0+2) 0074 C0 03 570 push (0+3) 0076 C0 04 571 push (0+4) 0078 C0 05 572 push (0+5) 007A C0 06 573 push (0+6) 007C C0 07 574 push (0+7) 007E C0 00 575 push (0+0) 0080 C0 01 576 push (0+1) 0082 C0 D0 577 push psw 0084 75 D0 00 578 mov psw,#0x00 579 ; source/timer.c:68: TH1 = time_delay[0]; 0087 85*0C 8D 580 mov _TH1,_time_delay 581 ; source/timer.c:69: TL1 = time_delay[1]; 008A 85*0D 8B 582 mov _TL1,(_time_delay + 0x0001) 583 ; source/timer.c:71: ms_count++; 008D 05*00 584 inc _ms_count 008F E4 585 clr a 0090 B5*00 0C 586 cjne a,_ms_count,00109$ 0093 05*01 587 inc (_ms_count + 1) 0095 B5*01 07 588 cjne a,(_ms_count + 1),00109$ 0098 05*02 589 inc (_ms_count + 2) 009A B5*02 02 590 cjne a,(_ms_count + 2),00109$ 009D 05*03 591 inc (_ms_count + 3) 009F 592 00109$: 593 ; source/timer.c:73: if(DTimeMs(last_note_swap) >= 10) 009F 85*04 82 594 mov dpl,_last_note_swap 00A2 85*05 83 595 mov dph,(_last_note_swap + 1) 00A5 85*06 F0 596 mov b,(_last_note_swap + 2) 00A8 E5*07 597 mov a,(_last_note_swap + 3) 00AA 12s01rC5 598 lcall _DTimeMs 00AD AA 82 599 mov r2,dpl 00AF AB 83 600 mov r3,dph 00B1 AC F0 601 mov r4,b 00B3 FD 602 mov r5,a 00B4 C3 603 clr c 00B5 EA 604 mov a,r2 00B6 94 0A 605 subb a,#0x0A 00B8 EB 606 mov a,r3 00B9 94 00 607 subb a,#0x00 00BB EC 608 mov a,r4 00BC 94 00 609 subb a,#0x00 00BE ED 610 mov a,r5 00BF 94 00 611 subb a,#0x00 00C1 40 24 612 jc 00105$ 613 ; source/timer.c:75: last_note_swap = GetMsCounter(); 00C3 12s01rB9 614 lcall _GetMsCounter 00C6 85 82*04 615 mov _last_note_swap,dpl 00C9 85 83*05 616 mov (_last_note_swap + 1),dph 00CC 85 F0*06 617 mov (_last_note_swap + 2),b 00CF F5*07 618 mov (_last_note_swap + 3),a 619 ; source/timer.c:76: compute_note_delay(++current_note); 00D1 05*09 620 inc _current_note 00D3 85*09 82 621 mov dpl,_current_note 00D6 12s02r0B 622 lcall _compute_note_delay 623 ; source/timer.c:77: if(current_note == 6) 00D9 74 06 624 mov a,#0x06 00DB B5*09 03 625 cjne a,_current_note,00102$ 626 ; source/timer.c:79: current_note = 0; 00DE 75*09 00 627 mov _current_note,#0x00 00E1 628 00102$: 629 ; source/timer.c:82: set_led(current_note); 00E1 85*09 82 630 mov dpl,_current_note 00E4 12s00r4E 631 lcall _set_led 00E7 632 00105$: 00E7 D0 D0 633 pop psw 00E9 D0 01 634 pop (0+1) 00EB D0 00 635 pop (0+0) 00ED D0 07 636 pop (0+7) 00EF D0 06 637 pop (0+6) 00F1 D0 05 638 pop (0+5) 00F3 D0 04 639 pop (0+4) 00F5 D0 03 640 pop (0+3) 00F7 D0 02 641 pop (0+2) 00F9 D0 83 642 pop dph 00FB D0 82 643 pop dpl 00FD D0 F0 644 pop b 00FF D0 E0 645 pop acc 0101 D0*00 646 pop bits 0103 32 647 reti 648 ;------------------------------------------------------------ 649 ;Allocation info for local variables in function 'note_handler' 650 ;------------------------------------------------------------ 651 ;------------------------------------------------------------ 652 ; source/timer.c:86: void note_handler() interrupt(1) 653 ; ----------------------------------------- 654 ; function note_handler 655 ; ----------------------------------------- 0104 656 _note_handler: 0104 C0*00 657 push bits 0106 C0 E0 658 push acc 0108 C0 F0 659 push b 010A C0 82 660 push dpl 010C C0 83 661 push dph 010E C0 02 662 push (0+2) 0110 C0 03 663 push (0+3) 0112 C0 04 664 push (0+4) 0114 C0 05 665 push (0+5) 0116 C0 06 666 push (0+6) 0118 C0 07 667 push (0+7) 011A C0 00 668 push (0+0) 011C C0 01 669 push (0+1) 011E C0 D0 670 push psw 0120 75 D0 00 671 mov psw,#0x00 672 ; source/timer.c:88: TH0 = note_delay[1]; 0123 85*0B 8C 673 mov _TH0,(_note_delay + 0x0001) 674 ; source/timer.c:89: TL0 = note_delay[0]; 0126 85*0A 8A 675 mov _TL0,_note_delay 676 ; source/timer.c:91: current_ena = ~current_ena; 0129 E5*08 677 mov a,_current_ena 012B F4 678 cpl a 012C F5*08 679 mov _current_ena,a 680 ; source/timer.c:92: set_ena(current_ena); 012E 85*08 82 681 mov dpl,_current_ena 0131 12s00r5B 682 lcall _set_ena 0134 D0 D0 683 pop psw 0136 D0 01 684 pop (0+1) 0138 D0 00 685 pop (0+0) 013A D0 07 686 pop (0+7) 013C D0 06 687 pop (0+6) 013E D0 05 688 pop (0+5) 0140 D0 04 689 pop (0+4) 0142 D0 03 690 pop (0+3) 0144 D0 02 691 pop (0+2) 0146 D0 83 692 pop dph 0148 D0 82 693 pop dpl 014A D0 F0 694 pop b 014C D0 E0 695 pop acc 014E D0*00 696 pop bits 0150 32 697 reti 698 ;------------------------------------------------------------ 699 ;Allocation info for local variables in function 'InitTimer' 700 ;------------------------------------------------------------ 701 ;------------------------------------------------------------ 702 ; source/timer.c:95: void InitTimer() 703 ; ----------------------------------------- 704 ; function InitTimer 705 ; ----------------------------------------- 0151 706 _InitTimer: 707 ; source/timer.c:97: last_note_swap = 10; 0151 75*04 0A 708 mov _last_note_swap,#0x0A 0154 E4 709 clr a 0155 F5*05 710 mov (_last_note_swap + 1),a 0157 F5*06 711 mov (_last_note_swap + 2),a 0159 F5*07 712 mov (_last_note_swap + 3),a 713 ; source/timer.c:98: current_ena = 0x18; 015B 75*08 18 714 mov _current_ena,#0x18 715 ; source/timer.c:100: compute_note_delay(0); 015E 75 82 00 716 mov dpl,#0x00 0161 12s02r0B 717 lcall _compute_note_delay 718 ; source/timer.c:101: compute_timer_delay(); 0164 12s02r7B 719 lcall _compute_timer_delay 720 ; source/timer.c:102: ms_count = 0; 0167 E4 721 clr a 0168 F5*00 722 mov _ms_count,a 016A F5*01 723 mov (_ms_count + 1),a 016C F5*02 724 mov (_ms_count + 2),a 016E F5*03 725 mov (_ms_count + 3),a 726 ; source/timer.c:104: TH0 = 0xFF; 0170 75 8C FF 727 mov _TH0,#0xFF 728 ; source/timer.c:105: TL0 = 0xFF; 0173 75 8A FF 729 mov _TL0,#0xFF 730 ; source/timer.c:107: TH1 = 0xFF; 0176 75 8D FF 731 mov _TH1,#0xFF 732 ; source/timer.c:108: TH0 = 0xFF; 0179 75 8C FF 733 mov _TH0,#0xFF 734 ; source/timer.c:110: TCON = 0x50; 017C 75 88 50 735 mov _TCON,#0x50 736 ; source/timer.c:111: TMOD = 0x11; 017F 75 89 11 737 mov _TMOD,#0x11 738 ; source/timer.c:113: set_vector(0x200B, (void*)note_handler); 0182 7Ar04 739 mov r2,#_note_handler 0184 7Bs01 740 mov r3,#(_note_handler >> 8) 0186 7C 80 741 mov r4,#0x80 0188 C0 02 742 push ar2 018A C0 03 743 push ar3 018C C0 04 744 push ar4 018E 90 20 0B 745 mov dptr,#0x200B 0191 12s00r00 746 lcall _set_vector 0194 15 81 747 dec sp 0196 15 81 748 dec sp 0198 15 81 749 dec sp 750 ; source/timer.c:114: set_vector(0x201B, (void*)time_handler); 019A 7Ar68 751 mov r2,#_time_handler 019C 7Bs00 752 mov r3,#(_time_handler >> 8) 019E 7C 80 753 mov r4,#0x80 01A0 C0 02 754 push ar2 01A2 C0 03 755 push ar3 01A4 C0 04 756 push ar4 01A6 90 20 1B 757 mov dptr,#0x201B 01A9 12s00r00 758 lcall _set_vector 01AC 15 81 759 dec sp 01AE 15 81 760 dec sp 01B0 15 81 761 dec sp 762 ; source/timer.c:116: ET0 = 1; 01B2 D2 A9 763 setb _ET0 764 ; source/timer.c:117: ET1 = 1; 01B4 D2 AB 765 setb _ET1 766 ; source/timer.c:118: EA = 1; 01B6 D2 AF 767 setb _EA 01B8 22 768 ret 769 ;------------------------------------------------------------ 770 ;Allocation info for local variables in function 'GetMsCounter' 771 ;------------------------------------------------------------ 772 ;------------------------------------------------------------ 773 ; source/timer.c:121: unsigned long GetMsCounter(void) 774 ; ----------------------------------------- 775 ; function GetMsCounter 776 ; ----------------------------------------- 01B9 777 _GetMsCounter: 778 ; source/timer.c:123: return ms_count; 01B9 85*00 82 779 mov dpl,_ms_count 01BC 85*01 83 780 mov dph,(_ms_count + 1) 01BF 85*02 F0 781 mov b,(_ms_count + 2) 01C2 E5*03 782 mov a,(_ms_count + 3) 01C4 22 783 ret 784 ;------------------------------------------------------------ 785 ;Allocation info for local variables in function 'DTimeMs' 786 ;------------------------------------------------------------ 787 ;t0 Allocated to registers r2 r3 r4 r5 788 ;------------------------------------------------------------ 789 ; source/timer.c:126: unsigned long DTimeMs(unsigned long t0) 790 ; ----------------------------------------- 791 ; function DTimeMs 792 ; ----------------------------------------- 01C5 793 _DTimeMs: 01C5 AA 82 794 mov r2,dpl 01C7 AB 83 795 mov r3,dph 01C9 AC F0 796 mov r4,b 01CB FD 797 mov r5,a 798 ; source/timer.c:128: return ms_count - t0; 01CC E5*00 799 mov a,_ms_count 01CE C3 800 clr c 01CF 9A 801 subb a,r2 01D0 FA 802 mov r2,a 01D1 E5*01 803 mov a,(_ms_count + 1) 01D3 9B 804 subb a,r3 01D4 FB 805 mov r3,a 01D5 E5*02 806 mov a,(_ms_count + 2) 01D7 9C 807 subb a,r4 01D8 FC 808 mov r4,a 01D9 E5*03 809 mov a,(_ms_count + 3) 01DB 9D 810 subb a,r5 01DC 8A 82 811 mov dpl,r2 01DE 8B 83 812 mov dph,r3 01E0 8C F0 813 mov b,r4 01E2 22 814 ret 815 ;------------------------------------------------------------ 816 ;Allocation info for local variables in function 'DelayMs' 817 ;------------------------------------------------------------ 818 ;t Allocated to registers r2 r3 r4 r5 819 ;target Allocated to registers r2 r3 r4 r5 820 ;------------------------------------------------------------ 821 ; source/timer.c:131: void DelayMs(unsigned long t) 822 ; ----------------------------------------- 823 ; function DelayMs 824 ; ----------------------------------------- 01E3 825 _DelayMs: 01E3 AA 82 826 mov r2,dpl 01E5 AB 83 827 mov r3,dph 01E7 AC F0 828 mov r4,b 01E9 FD 829 mov r5,a 830 ; source/timer.c:133: unsigned long target = t + ms_count; 01EA E5*00 831 mov a,_ms_count 01EC 2A 832 add a,r2 01ED FA 833 mov r2,a 01EE E5*01 834 mov a,(_ms_count + 1) 01F0 3B 835 addc a,r3 01F1 FB 836 mov r3,a 01F2 E5*02 837 mov a,(_ms_count + 2) 01F4 3C 838 addc a,r4 01F5 FC 839 mov r4,a 01F6 E5*03 840 mov a,(_ms_count + 3) 01F8 3D 841 addc a,r5 01F9 FD 842 mov r5,a 843 ; source/timer.c:134: while(ms_count != target); 01FA 844 00101$: 01FA EA 845 mov a,r2 01FB B5*00 FC 846 cjne a,_ms_count,00101$ 01FE EB 847 mov a,r3 01FF B5*01 F8 848 cjne a,(_ms_count + 1),00101$ 0202 EC 849 mov a,r4 0203 B5*02 F4 850 cjne a,(_ms_count + 2),00101$ 0206 ED 851 mov a,r5 0207 B5*03 F0 852 cjne a,(_ms_count + 3),00101$ 020A 22 853 ret 854 ;------------------------------------------------------------ 855 ;Allocation info for local variables in function 'compute_note_delay' 856 ;------------------------------------------------------------ 857 ;index Allocated to registers r2 858 ;delay Allocated to stack - offset 1 859 ;ptr Allocated to registers r2 r3 r4 860 ;------------------------------------------------------------ 861 ; source/timer.c:137: void compute_note_delay(uint8_t index) 862 ; ----------------------------------------- 863 ; function compute_note_delay 864 ; ----------------------------------------- 020B 865 _compute_note_delay: 020B C0*00 866 push _bp 020D 85 81*00 867 mov _bp,sp 0210 05 81 868 inc sp 0212 05 81 869 inc sp 870 ; source/timer.c:139: uint16_t delay = 460791/notes[index]; 0214 E5 82 871 mov a,dpl 0216 25 82 872 add a,dpl 0218 FA 873 mov r2,a 0219 90s00r00 874 mov dptr,#_notes 021C 93 875 movc a,@a+dptr 021D CA 876 xch a,r2 021E A3 877 inc dptr 021F 93 878 movc a,@a+dptr 0220 FB 879 mov r3,a 0221 7C 00 880 mov r4,#0x00 0223 7D 00 881 mov r5,#0x00 0225 C0 02 882 push ar2 0227 C0 03 883 push ar3 0229 C0 04 884 push ar4 022B C0 05 885 push ar5 022D 90 07 F7 886 mov dptr,#0x07F7 0230 75 F0 07 887 mov b,#0x07 0233 E4 888 clr a 0234 12s00r00 889 lcall __divslong 0237 AA 82 890 mov r2,dpl 0239 AB 83 891 mov r3,dph 023B E5 81 892 mov a,sp 023D 24 FC 893 add a,#0xfc 023F F5 81 894 mov sp,a 0241 A8*00 895 mov r0,_bp 0243 08 896 inc r0 0244 A6 02 897 mov @r0,ar2 0246 08 898 inc r0 0247 A6 03 899 mov @r0,ar3 900 ; source/timer.c:140: uint8_t* ptr = (uint8_t*)&delay; 0249 AA*00 901 mov r2,_bp 024B 0A 902 inc r2 024C 7B 00 903 mov r3,#0x00 024E 7C 40 904 mov r4,#0x40 905 ; source/timer.c:142: note_delay[0] = 0xFF - ptr[0]; 0250 8A 82 906 mov dpl,r2 0252 8B 83 907 mov dph,r3 0254 8C F0 908 mov b,r4 0256 12s00r00 909 lcall __gptrget 0259 FD 910 mov r5,a 025A 74 FF 911 mov a,#0xFF 025C C3 912 clr c 025D 9D 913 subb a,r5 025E F5*0A 914 mov _note_delay,a 915 ; source/timer.c:143: note_delay[1] = 0xFF - ptr[1]; 0260 0A 916 inc r2 0261 BA 00 01 917 cjne r2,#0x00,00103$ 0264 0B 918 inc r3 0265 919 00103$: 0265 8A 82 920 mov dpl,r2 0267 8B 83 921 mov dph,r3 0269 8C F0 922 mov b,r4 026B 12s00r00 923 lcall __gptrget 026E FA 924 mov r2,a 026F 74 FF 925 mov a,#0xFF 0271 C3 926 clr c 0272 9A 927 subb a,r2 0273 F5*0B 928 mov (_note_delay + 0x0001),a 0275 85*00 81 929 mov sp,_bp 0278 D0*00 930 pop _bp 027A 22 931 ret 932 ;------------------------------------------------------------ 933 ;Allocation info for local variables in function 'compute_timer_delay' 934 ;------------------------------------------------------------ 935 ;delay Allocated to stack - offset 1 936 ;ptr Allocated to registers r2 r3 r4 937 ;------------------------------------------------------------ 938 ; source/timer.c:146: void compute_timer_delay() 939 ; ----------------------------------------- 940 ; function compute_timer_delay 941 ; ----------------------------------------- 027B 942 _compute_timer_delay: 027B C0*00 943 push _bp 027D 85 81*00 944 mov _bp,sp 0280 05 81 945 inc sp 0282 05 81 946 inc sp 947 ; source/timer.c:148: uint16_t delay = 921583/1000; 0284 A8*00 948 mov r0,_bp 0286 08 949 inc r0 0287 76 99 950 mov @r0,#0x99 0289 08 951 inc r0 028A 76 03 952 mov @r0,#0x03 953 ; source/timer.c:149: uint8_t* ptr = (uint8_t*)(&delay); 028C AA*00 954 mov r2,_bp 028E 0A 955 inc r2 028F 7B 00 956 mov r3,#0x00 0291 7C 40 957 mov r4,#0x40 958 ; source/timer.c:151: time_delay[0] = 0xFF - ptr[0]; 0293 8A 82 959 mov dpl,r2 0295 8B 83 960 mov dph,r3 0297 8C F0 961 mov b,r4 0299 12s00r00 962 lcall __gptrget 029C FD 963 mov r5,a 029D 74 FF 964 mov a,#0xFF 029F C3 965 clr c 02A0 9D 966 subb a,r5 02A1 F5*0C 967 mov _time_delay,a 968 ; source/timer.c:152: time_delay[1] = 0xFF - ptr[1]; 02A3 0A 969 inc r2 02A4 BA 00 01 970 cjne r2,#0x00,00103$ 02A7 0B 971 inc r3 02A8 972 00103$: 02A8 8A 82 973 mov dpl,r2 02AA 8B 83 974 mov dph,r3 02AC 8C F0 975 mov b,r4 02AE 12s00r00 976 lcall __gptrget 02B1 FA 977 mov r2,a 02B2 74 FF 978 mov a,#0xFF 02B4 C3 979 clr c 02B5 9A 980 subb a,r2 02B6 F5*0D 981 mov (_time_delay + 0x0001),a 02B8 85*00 81 982 mov sp,_bp 02BB D0*00 983 pop _bp 02BD 22 984 ret 985 .area CSEG (CODE) 986 .area CONST (CODE) 0000 987 _notes: 0000 05 01 988 .byte #0x05,#0x01 0002 25 01 989 .byte #0x25,#0x01 0004 49 01 990 .byte #0x49,#0x01 0006 5D 01 991 .byte #0x5D,#0x01 0008 87 01 992 .byte #0x87,#0x01 000A B8 01 993 .byte #0xB8,#0x01 000C ED 01 994 .byte #0xED,#0x01 995 .area XINIT (CODE) 996 .area CABS (ABS,CODE)