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 Tue Nov 24 12:14:00 2015 5 ;-------------------------------------------------------- 6 .module interrupt 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _SPR0 13 .globl _SPR1 14 .globl _CPHA 15 .globl _CPOL 16 .globl _SPIM 17 .globl _SPE 18 .globl _WCOL 19 .globl _ISPI 20 .globl _I2CI 21 .globl _I2CTX 22 .globl _I2CRS 23 .globl _I2CM 24 .globl _MDI 25 .globl _MCO 26 .globl _MDE 27 .globl _MDO 28 .globl _CS0 29 .globl _CS1 30 .globl _CS2 31 .globl _CS3 32 .globl _SCONV 33 .globl _CCONV 34 .globl _DMA 35 .globl _ADCI 36 .globl _P 37 .globl _F1 38 .globl _OV 39 .globl _RS0 40 .globl _RS1 41 .globl _F0 42 .globl _AC 43 .globl _CY 44 .globl _CAP2 45 .globl _CNT2 46 .globl _TR2 47 .globl _XEN 48 .globl _TCLK 49 .globl _RCLK 50 .globl _EXF2 51 .globl _TF2 52 .globl _WDE 53 .globl _WDS 54 .globl _WDR2 55 .globl _WDR1 56 .globl _PRE0 57 .globl _PRE1 58 .globl _PRE2 59 .globl _PX0 60 .globl _PT0 61 .globl _PX1 62 .globl _PT1 63 .globl _PS 64 .globl _PT2 65 .globl _PADC 66 .globl _PSI 67 .globl _RXD 68 .globl _TXD 69 .globl _INT0 70 .globl _INT1 71 .globl _T0 72 .globl _T1 73 .globl _WR 74 .globl _RD 75 .globl _EX0 76 .globl _ET0 77 .globl _EX1 78 .globl _ET1 79 .globl _ES 80 .globl _ET2 81 .globl _EADC 82 .globl _EA 83 .globl _RI 84 .globl _TI 85 .globl _RB8 86 .globl _TB8 87 .globl _REN 88 .globl _SM2 89 .globl _SM1 90 .globl _SM0 91 .globl _T2 92 .globl _T2EX 93 .globl _IT0 94 .globl _IE0 95 .globl _IT1 96 .globl _IE1 97 .globl _TR0 98 .globl _TF0 99 .globl _TR1 100 .globl _TF1 101 .globl _DACCON 102 .globl _DAC1H 103 .globl _DAC1L 104 .globl _DAC0H 105 .globl _DAC0L 106 .globl _SPICON 107 .globl _SPIDAT 108 .globl _ADCCON3 109 .globl _ADCGAINH 110 .globl _ADCGAINL 111 .globl _ADCOFSH 112 .globl _ADCOFSL 113 .globl _B 114 .globl _ADCCON1 115 .globl _I2CCON 116 .globl _ACC 117 .globl _PSMCON 118 .globl _ADCDATAH 119 .globl _ADCDATAL 120 .globl _ADCCON2 121 .globl _DMAP 122 .globl _DMAH 123 .globl _DMAL 124 .globl _PSW 125 .globl _TH2 126 .globl _TL2 127 .globl _RCAP2H 128 .globl _RCAP2L 129 .globl _T2CON 130 .globl _EADRL 131 .globl _WDCON 132 .globl _EDATA4 133 .globl _EDATA3 134 .globl _EDATA2 135 .globl _EDATA1 136 .globl _ETIM3 137 .globl _ETIM2 138 .globl _ETIM1 139 .globl _ECON 140 .globl _IP 141 .globl _P3 142 .globl _IE2 143 .globl _IE 144 .globl _P2 145 .globl _I2CADD 146 .globl _I2CDAT 147 .globl _SBUF 148 .globl _SCON 149 .globl _P1 150 .globl _TH1 151 .globl _TH0 152 .globl _TL1 153 .globl _TL0 154 .globl _TMOD 155 .globl _TCON 156 .globl _PCON 157 .globl _DPP 158 .globl _DPH 159 .globl _DPL 160 .globl _SP 161 .globl _P0 162 .globl _wfifo 163 .globl _rfifo 164 .globl _tank_value 165 .globl _set_vector 166 .globl _read_uart 167 .globl _write_uart 168 .globl _handler_uart 169 ;-------------------------------------------------------- 170 ; special function registers 171 ;-------------------------------------------------------- 172 .area RSEG (DATA) 0080 173 _P0 = 0x0080 0081 174 _SP = 0x0081 0082 175 _DPL = 0x0082 0083 176 _DPH = 0x0083 0084 177 _DPP = 0x0084 0087 178 _PCON = 0x0087 0088 179 _TCON = 0x0088 0089 180 _TMOD = 0x0089 008A 181 _TL0 = 0x008a 008B 182 _TL1 = 0x008b 008C 183 _TH0 = 0x008c 008D 184 _TH1 = 0x008d 0090 185 _P1 = 0x0090 0098 186 _SCON = 0x0098 0099 187 _SBUF = 0x0099 009A 188 _I2CDAT = 0x009a 009B 189 _I2CADD = 0x009b 00A0 190 _P2 = 0x00a0 00A8 191 _IE = 0x00a8 00A9 192 _IE2 = 0x00a9 00B0 193 _P3 = 0x00b0 00B8 194 _IP = 0x00b8 00B9 195 _ECON = 0x00b9 00BA 196 _ETIM1 = 0x00ba 00BB 197 _ETIM2 = 0x00bb 00C4 198 _ETIM3 = 0x00c4 00BC 199 _EDATA1 = 0x00bc 00BD 200 _EDATA2 = 0x00bd 00BE 201 _EDATA3 = 0x00be 00BF 202 _EDATA4 = 0x00bf 00C0 203 _WDCON = 0x00c0 00C6 204 _EADRL = 0x00c6 00C8 205 _T2CON = 0x00c8 00CA 206 _RCAP2L = 0x00ca 00CB 207 _RCAP2H = 0x00cb 00CC 208 _TL2 = 0x00cc 00CD 209 _TH2 = 0x00cd 00D0 210 _PSW = 0x00d0 00D2 211 _DMAL = 0x00d2 00D3 212 _DMAH = 0x00d3 00D4 213 _DMAP = 0x00d4 00D8 214 _ADCCON2 = 0x00d8 00D9 215 _ADCDATAL = 0x00d9 00DA 216 _ADCDATAH = 0x00da 00DF 217 _PSMCON = 0x00df 00E0 218 _ACC = 0x00e0 00E8 219 _I2CCON = 0x00e8 00EF 220 _ADCCON1 = 0x00ef 00F0 221 _B = 0x00f0 00F1 222 _ADCOFSL = 0x00f1 00F2 223 _ADCOFSH = 0x00f2 00F3 224 _ADCGAINL = 0x00f3 00F4 225 _ADCGAINH = 0x00f4 00F5 226 _ADCCON3 = 0x00f5 00F7 227 _SPIDAT = 0x00f7 00F8 228 _SPICON = 0x00f8 00F9 229 _DAC0L = 0x00f9 00FA 230 _DAC0H = 0x00fa 00FB 231 _DAC1L = 0x00fb 00FC 232 _DAC1H = 0x00fc 00FD 233 _DACCON = 0x00fd 234 ;-------------------------------------------------------- 235 ; special function bits 236 ;-------------------------------------------------------- 237 .area RSEG (DATA) 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 ; overlayable bit register bank 334 ;-------------------------------------------------------- 335 .area BIT_BANK (REL,OVR,DATA) 0000 336 bits: 0000 337 .ds 1 8000 338 b0 = bits[0] 8100 339 b1 = bits[1] 8200 340 b2 = bits[2] 8300 341 b3 = bits[3] 8400 342 b4 = bits[4] 8500 343 b5 = bits[5] 8600 344 b6 = bits[6] 8700 345 b7 = bits[7] 346 ;-------------------------------------------------------- 347 ; internal ram data 348 ;-------------------------------------------------------- 349 .area DSEG (DATA) 0000 350 _tank_value:: 0000 351 .ds 1 0001 352 _rfifo:: 0001 353 .ds 18 0013 354 _wfifo:: 0013 355 .ds 18 356 ;-------------------------------------------------------- 357 ; overlayable items in internal ram 358 ;-------------------------------------------------------- 359 .area OSEG (OVR,DATA) 360 ;-------------------------------------------------------- 361 ; indirectly addressable internal ram data 362 ;-------------------------------------------------------- 363 .area ISEG (DATA) 364 ;-------------------------------------------------------- 365 ; absolute internal ram data 366 ;-------------------------------------------------------- 367 .area IABS (ABS,DATA) 368 .area IABS (ABS,DATA) 369 ;-------------------------------------------------------- 370 ; bit data 371 ;-------------------------------------------------------- 372 .area BSEG (BIT) 373 ;-------------------------------------------------------- 374 ; paged external ram data 375 ;-------------------------------------------------------- 376 .area PSEG (PAG,XDATA) 377 ;-------------------------------------------------------- 378 ; external ram data 379 ;-------------------------------------------------------- 380 .area XSEG (XDATA) 381 ;-------------------------------------------------------- 382 ; absolute external ram data 383 ;-------------------------------------------------------- 384 .area XABS (ABS,XDATA) 385 ;-------------------------------------------------------- 386 ; external initialized ram data 387 ;-------------------------------------------------------- 388 .area XISEG (XDATA) 389 .area HOME (CODE) 390 .area GSINIT0 (CODE) 391 .area GSINIT1 (CODE) 392 .area GSINIT2 (CODE) 393 .area GSINIT3 (CODE) 394 .area GSINIT4 (CODE) 395 .area GSINIT5 (CODE) 396 .area GSINIT (CODE) 397 .area GSFINAL (CODE) 398 .area CSEG (CODE) 399 ;-------------------------------------------------------- 400 ; global & static initialisations 401 ;-------------------------------------------------------- 402 .area HOME (CODE) 403 .area GSINIT (CODE) 404 .area GSFINAL (CODE) 405 .area GSINIT (CODE) 406 ; SRC/interrupt.c:9: FIFO rfifo = { { 0, 0 } }; // буфер чтения 0000 75*01 00 407 mov _rfifo,#0x00 408 ; SRC/interrupt.c:10: FIFO wfifo = { { 0, 0 } }; // буфер записи 0003 75*13 00 409 mov _wfifo,#0x00 410 ;-------------------------------------------------------- 411 ; Home 412 ;-------------------------------------------------------- 413 .area HOME (CODE) 414 .area HOME (CODE) 415 ;-------------------------------------------------------- 416 ; code 417 ;-------------------------------------------------------- 418 .area CSEG (CODE) 419 ;------------------------------------------------------------ 420 ;Allocation info for local variables in function 'set_vector' 421 ;------------------------------------------------------------ 422 ;Vector Allocated to stack - offset -5 423 ;Address Allocated to registers r2 r3 424 ;------------------------------------------------------------ 425 ; SRC/interrupt.c:12: void set_vector(unsigned char xdata * Address, void * Vector) 426 ; ----------------------------------------- 427 ; function set_vector 428 ; ----------------------------------------- 0000 429 _set_vector: 0002 430 ar2 = 0x02 0003 431 ar3 = 0x03 0004 432 ar4 = 0x04 0005 433 ar5 = 0x05 0006 434 ar6 = 0x06 0007 435 ar7 = 0x07 0000 436 ar0 = 0x00 0001 437 ar1 = 0x01 0000 C0*00 438 push _bp 0002 85 81*00 439 mov _bp,sp 440 ; SRC/interrupt.c:14: *Address = 0x02; 0005 AA 82 441 mov r2,dpl 0007 AB 83 442 mov r3,dph 0009 74 02 443 mov a,#0x02 000B F0 444 movx @dptr,a 445 ; SRC/interrupt.c:15: *(Address + 1) = (unsigned char) ((unsigned short) Vector >> 8); 000C 74 01 446 mov a,#0x01 000E 2A 447 add a,r2 000F FC 448 mov r4,a 0010 E4 449 clr a 0011 3B 450 addc a,r3 0012 FD 451 mov r5,a 0013 E5*00 452 mov a,_bp 0015 24 FB 453 add a,#0xfb 0017 F8 454 mov r0,a 0018 86 06 455 mov ar6,@r0 001A 08 456 inc r0 001B 86 07 457 mov ar7,@r0 001D 8F 06 458 mov ar6,r7 001F 8C 82 459 mov dpl,r4 0021 8D 83 460 mov dph,r5 0023 EE 461 mov a,r6 0024 F0 462 movx @dptr,a 463 ; SRC/interrupt.c:16: *(Address + 2) = (unsigned char) ((unsigned char) Vector); 0025 74 02 464 mov a,#0x02 0027 2A 465 add a,r2 0028 FA 466 mov r2,a 0029 E4 467 clr a 002A 3B 468 addc a,r3 002B FB 469 mov r3,a 002C E5*00 470 mov a,_bp 002E 24 FB 471 add a,#0xfb 0030 F8 472 mov r0,a 0031 86 04 473 mov ar4,@r0 0033 8A 82 474 mov dpl,r2 0035 8B 83 475 mov dph,r3 0037 EC 476 mov a,r4 0038 F0 477 movx @dptr,a 0039 D0*00 478 pop _bp 003B 22 479 ret 480 ;------------------------------------------------------------ 481 ;Allocation info for local variables in function 'read_uart' 482 ;------------------------------------------------------------ 483 ;------------------------------------------------------------ 484 ; SRC/interrupt.c:19: char read_uart() 485 ; ----------------------------------------- 486 ; function read_uart 487 ; ----------------------------------------- 003C 488 _read_uart: 489 ; SRC/interrupt.c:22: if (rfifo.w_pointer == 0) { 003C E5*01 490 mov a,_rfifo 003E FA 491 mov r2,a 492 ; SRC/interrupt.c:23: return 0; 003F 70 03 493 jnz 00102$ 0041 F5 82 494 mov dpl,a 0043 22 495 ret 0044 496 00102$: 497 ; SRC/interrupt.c:25: rfifo.w_pointer--; 0044 EA 498 mov a,r2 0045 14 499 dec a 500 ; SRC/interrupt.c:26: return rfifo.buffer[rfifo.w_pointer]; 0046 F5*01 501 mov _rfifo,a 0048 24r03 502 add a,#(_rfifo + 0x0002) 004A F8 503 mov r0,a 004B 86 82 504 mov dpl,@r0 004D 22 505 ret 506 ;------------------------------------------------------------ 507 ;Allocation info for local variables in function 'write_uart' 508 ;------------------------------------------------------------ 509 ;buf_char Allocated to registers r2 r3 r4 510 ;size Allocated to registers r5 r6 511 ;sloc0 Allocated to stack - offset 6 512 ;sloc1 Allocated to stack - offset 1 513 ;------------------------------------------------------------ 514 ; SRC/interrupt.c:29: void write_uart(char * buf_char) 515 ; ----------------------------------------- 516 ; function write_uart 517 ; ----------------------------------------- 004E 518 _write_uart: 004E C0*00 519 push _bp 0050 85 81*00 520 mov _bp,sp 0053 05 81 521 inc sp 0055 05 81 522 inc sp 0057 05 81 523 inc sp 524 ; SRC/interrupt.c:32: size = strlen(buf_char); 0059 AA 82 525 mov r2,dpl 005B AB 83 526 mov r3,dph 005D AC F0 527 mov r4,b 005F C0 02 528 push ar2 0061 C0 03 529 push ar3 0063 C0 04 530 push ar4 0065 12s00r00 531 lcall _strlen 0068 AD 82 532 mov r5,dpl 006A AE 83 533 mov r6,dph 006C D0 04 534 pop ar4 006E D0 03 535 pop ar3 0070 D0 02 536 pop ar2 537 ; SRC/interrupt.c:34: if (size < BUF_SIZE) { 0072 C3 538 clr c 0073 ED 539 mov a,r5 0074 94 10 540 subb a,#0x10 0076 EE 541 mov a,r6 0077 64 80 542 xrl a,#0x80 0079 94 80 543 subb a,#0x80 007B 50 35 544 jnc 00105$ 545 ; SRC/interrupt.c:35: while (*buf_char) { 007D A8*00 546 mov r0,_bp 007F 08 547 inc r0 0080 A6 02 548 mov @r0,ar2 0082 08 549 inc r0 0083 A6 03 550 mov @r0,ar3 0085 08 551 inc r0 0086 A6 04 552 mov @r0,ar4 0088 553 00101$: 0088 A8*00 554 mov r0,_bp 008A 08 555 inc r0 008B 86 82 556 mov dpl,@r0 008D 08 557 inc r0 008E 86 83 558 mov dph,@r0 0090 08 559 inc r0 0091 86 F0 560 mov b,@r0 0093 12s00r00 561 lcall __gptrget 0096 FA 562 mov r2,a 0097 60 38 563 jz 00106$ 564 ; SRC/interrupt.c:36: wfifo.buffer[wfifo.w_pointer++] = *buf_char++; 0099 E5*13 565 mov a,_wfifo 009B FD 566 mov r5,a 009C 04 567 inc a 009D F5*13 568 mov _wfifo,a 009F ED 569 mov a,r5 00A0 24r15 570 add a,#(_wfifo + 0x0002) 00A2 F8 571 mov r0,a 00A3 8A 05 572 mov ar5,r2 00A5 A9*00 573 mov r1,_bp 00A7 09 574 inc r1 00A8 07 575 inc @r1 00A9 B7 00 02 576 cjne @r1,#0x00,00114$ 00AC 09 577 inc r1 00AD 07 578 inc @r1 00AE 579 00114$: 00AE A6 05 580 mov @r0,ar5 00B0 80 D6 581 sjmp 00101$ 00B2 582 00105$: 583 ; SRC/interrupt.c:39: memcpy(wfifo.buffer, buf_char, BUF_SIZE); 00B2 74 10 584 mov a,#0x10 00B4 C0 E0 585 push acc 00B6 E4 586 clr a 00B7 C0 E0 587 push acc 00B9 C0 02 588 push ar2 00BB C0 03 589 push ar3 00BD C0 04 590 push ar4 00BF 90s00r15 591 mov dptr,#(_wfifo + 0x0002) 00C2 75 F0 40 592 mov b,#0x40 00C5 12s00r00 593 lcall _memcpy 00C8 E5 81 594 mov a,sp 00CA 24 FB 595 add a,#0xfb 00CC F5 81 596 mov sp,a 597 ; SRC/interrupt.c:40: wfifo.w_pointer = BUF_SIZE - 1; 00CE 75*13 0F 598 mov _wfifo,#0x0F 00D1 599 00106$: 600 ; SRC/interrupt.c:43: wfifo.buffer[wfifo.w_pointer++] = '\n'; 00D1 E5*13 601 mov a,_wfifo 00D3 FA 602 mov r2,a 00D4 04 603 inc a 00D5 F5*13 604 mov _wfifo,a 00D7 EA 605 mov a,r2 00D8 24r15 606 add a,#(_wfifo + 0x0002) 00DA F8 607 mov r0,a 00DB 76 0A 608 mov @r0,#0x0A 609 ; SRC/interrupt.c:44: TI = 1; 00DD D2 99 610 setb _TI 00DF 85*00 81 611 mov sp,_bp 00E2 D0*00 612 pop _bp 00E4 22 613 ret 614 ;------------------------------------------------------------ 615 ;Allocation info for local variables in function 'handler_uart' 616 ;------------------------------------------------------------ 617 ;------------------------------------------------------------ 618 ; SRC/interrupt.c:52: void handler_uart( void ) __interrupt ( 4 ) 619 ; ----------------------------------------- 620 ; function handler_uart 621 ; ----------------------------------------- 00E5 622 _handler_uart: 00E5 C0*00 623 push bits 00E7 C0 E0 624 push acc 00E9 C0 F0 625 push b 00EB C0 82 626 push dpl 00ED C0 83 627 push dph 00EF C0 02 628 push (0+2) 00F1 C0 03 629 push (0+3) 00F3 C0 04 630 push (0+4) 00F5 C0 05 631 push (0+5) 00F7 C0 06 632 push (0+6) 00F9 C0 07 633 push (0+7) 00FB C0 00 634 push (0+0) 00FD C0 01 635 push (0+1) 00FF C0 D0 636 push psw 0101 75 D0 00 637 mov psw,#0x00 638 ; SRC/interrupt.c:54: write_char('D'); 0104 75 82 44 639 mov dpl,#0x44 0107 12s00r00 640 lcall _write_char 641 ; SRC/interrupt.c:55: if (TI) { 642 ; SRC/interrupt.c:58: TI = 0; 010A 10 99 02 643 jbc _TI,00113$ 010D 80 24 644 sjmp 00105$ 010F 645 00113$: 646 ; SRC/interrupt.c:59: if (wfifo.w_pointer > 0) { 010F C3 647 clr c 0110 74 80 648 mov a,#(0x00 ^ 0x80) 0112 85*13 F0 649 mov b,_wfifo 0115 63 F0 80 650 xrl b,#0x80 0118 95 F0 651 subb a,b 011A 50 14 652 jnc 00102$ 653 ; SRC/interrupt.c:60: SBUF = wfifo.buffer[wfifo.r_pointer++]; 011C E5*14 654 mov a,(_wfifo + 0x0001) 011E FA 655 mov r2,a 011F 04 656 inc a 0120 F5*14 657 mov (_wfifo + 0x0001),a 0122 EA 658 mov a,r2 0123 24r15 659 add a,#(_wfifo + 0x0002) 0125 F8 660 mov r0,a 0126 86 99 661 mov _SBUF,@r0 662 ; SRC/interrupt.c:61: wfifo.w_pointer--; 0128 E5*13 663 mov a,_wfifo 012A FA 664 mov r2,a 012B 14 665 dec a 012C F5*13 666 mov _wfifo,a 012E 80 03 667 sjmp 00105$ 0130 668 00102$: 669 ; SRC/interrupt.c:63: wfifo.r_pointer = 0; 0130 75*14 00 670 mov (_wfifo + 0x0001),#0x00 0133 671 00105$: 672 ; SRC/interrupt.c:66: if (RI) { 673 ; SRC/interrupt.c:69: RI = 0; 0133 10 98 02 674 jbc _RI,00115$ 0136 80 0E 675 sjmp 00108$ 0138 676 00115$: 677 ; SRC/interrupt.c:70: rfifo.buffer[rfifo.w_pointer++] = SBUF; 0138 E5*01 678 mov a,_rfifo 013A FA 679 mov r2,a 013B 04 680 inc a 013C F5*01 681 mov _rfifo,a 013E EA 682 mov a,r2 013F 24r03 683 add a,#(_rfifo + 0x0002) 0141 F8 684 mov r0,a 0142 AA 99 685 mov r2,_SBUF 0144 A6 02 686 mov @r0,ar2 0146 687 00108$: 0146 D0 D0 688 pop psw 0148 D0 01 689 pop (0+1) 014A D0 00 690 pop (0+0) 014C D0 07 691 pop (0+7) 014E D0 06 692 pop (0+6) 0150 D0 05 693 pop (0+5) 0152 D0 04 694 pop (0+4) 0154 D0 03 695 pop (0+3) 0156 D0 02 696 pop (0+2) 0158 D0 83 697 pop dph 015A D0 82 698 pop dpl 015C D0 F0 699 pop b 015E D0 E0 700 pop acc 0160 D0*00 701 pop bits 0162 32 702 reti 703 .area CSEG (CODE) 704 .area CONST (CODE) 705 .area XINIT (CODE) 706 .area CABS (ABS,CODE)