1 ;-------------------------------------------------------- 2 ; File Created by SDCC : FreeWare ANSI-C Compiler 3 ; Version 2.4.0 Wed Mar 31 11:33:57 2004 4 5 ;-------------------------------------------------------- 6 .module lookup 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _rev_lookup_PARM_2 13 .globl __vtable 14 .globl __vtol 15 .globl __firm_regulate 16 .globl __volt 17 .globl __adc 18 .globl __power_fail 19 .globl __resistor 20 .globl __buf 21 .globl _USBPAIR 22 .globl _ISOCTL 23 .globl _AUTODATA 24 .globl _AUTOPTRL 25 .globl _AUTOPTRH 26 .globl _OUT07VAL 27 .globl _IN07VAL 28 .globl _I2DAT 29 .globl _I2CS 30 .globl _SETUPDAT 31 .globl _SUDPTRL 32 .globl _SUDPTRH 33 .globl _TOGCTL 34 .globl _USBCS 35 .globl _USBBAV 36 .globl _USBIEN 37 .globl _USBIRQ 38 .globl _OUT07IEN 39 .globl _IN07IEN 40 .globl _OUT07IRQ 41 .globl _IN07IRQ 42 .globl _PORTCCFG 43 .globl _PORTBCFG 44 .globl _PORTACFG 45 .globl _PINSC 46 .globl _OUTC 47 .globl _OEC 48 .globl _OUTB 49 .globl _OEB 50 .globl _OUTA 51 .globl _OEA 52 .globl _OUT6CS 53 .globl _OUT6BC 54 .globl _OUT6BUF 55 .globl _IN6CS 56 .globl _IN6BC 57 .globl _IN6BUF 58 .globl _OUT5CS 59 .globl _OUT5BC 60 .globl _OUT5BUF 61 .globl _IN5CS 62 .globl _IN5BC 63 .globl _IN5BUF 64 .globl _OUT4CS 65 .globl _OUT4BC 66 .globl _OUT4BUF 67 .globl _IN4CS 68 .globl _IN4BC 69 .globl _IN4BUF 70 .globl _OUT3BUF 71 .globl _OUT3CS 72 .globl _OUT3BC 73 .globl _IN3CS 74 .globl _IN3BC 75 .globl _IN3BUF 76 .globl _OUT2BUF 77 .globl _OUT2CS 78 .globl _OUT2BC 79 .globl _IN2CS 80 .globl _IN2BC 81 .globl _IN2BUF 82 .globl _OUT1BC 83 .globl _OUT1CS 84 .globl _OUT1BUF 85 .globl _IN1BC 86 .globl _IN1BUF 87 .globl _IN1CS 88 .globl _OUT0BC 89 .globl _OUT0BUF 90 .globl _IN0BC 91 .globl _IN0BUF 92 .globl _EP0CS 93 .globl _rev_lookup 94 ;-------------------------------------------------------- 95 ; special function registers 96 ;-------------------------------------------------------- 0080 97 _P0 = 0x0080 0081 98 _SP = 0x0081 0082 99 _DPL = 0x0082 0083 100 _DPH = 0x0083 0087 101 _PCON = 0x0087 0088 102 _TCON = 0x0088 0089 103 _TMOD = 0x0089 008A 104 _TL0 = 0x008a 008B 105 _TL1 = 0x008b 008C 106 _TH0 = 0x008c 008D 107 _TH1 = 0x008d 0090 108 _P1 = 0x0090 0098 109 _SCON = 0x0098 0099 110 _SBUF = 0x0099 00A0 111 _P2 = 0x00a0 00A8 112 _IE = 0x00a8 00B0 113 _P3 = 0x00b0 00B8 114 _IP = 0x00b8 00D0 115 _PSW = 0x00d0 00E0 116 _ACC = 0x00e0 00F0 117 _B = 0x00f0 0091 118 _EXIF = 0x0091 00E8 119 _EIE = 0x00e8 0098 120 _SCON0 = 0x0098 00C0 121 _SCON1 = 0x00c0 0099 122 _SBUF0 = 0x0099 00C1 123 _SBUF1 = 0x00c1 008E 124 _CKCON = 0x008e 00C8 125 _T2CON = 0x00c8 00CA 126 _RCAP2L = 0x00ca 00CB 127 _RCAP2H = 0x00cb 00CC 128 _TL2 = 0x00cc 00CD 129 _TH2 = 0x00cd 130 ;-------------------------------------------------------- 131 ; special function bits 132 ;-------------------------------------------------------- 0080 133 _P0_0 = 0x0080 0081 134 _P0_1 = 0x0081 0082 135 _P0_2 = 0x0082 0083 136 _P0_3 = 0x0083 0084 137 _P0_4 = 0x0084 0085 138 _P0_5 = 0x0085 0086 139 _P0_6 = 0x0086 0087 140 _P0_7 = 0x0087 0088 141 _IT0 = 0x0088 0089 142 _IE0 = 0x0089 008A 143 _IT1 = 0x008a 008B 144 _IE1 = 0x008b 008C 145 _TR0 = 0x008c 008D 146 _TF0 = 0x008d 008E 147 _TR1 = 0x008e 008F 148 _TF1 = 0x008f 0090 149 _P1_0 = 0x0090 0091 150 _P1_1 = 0x0091 0092 151 _P1_2 = 0x0092 0093 152 _P1_3 = 0x0093 0094 153 _P1_4 = 0x0094 0095 154 _P1_5 = 0x0095 0096 155 _P1_6 = 0x0096 0097 156 _P1_7 = 0x0097 0098 157 _RI = 0x0098 0099 158 _TI = 0x0099 009A 159 _RB8 = 0x009a 009B 160 _TB8 = 0x009b 009C 161 _REN = 0x009c 009D 162 _SM2 = 0x009d 009E 163 _SM1 = 0x009e 009F 164 _SM0 = 0x009f 00A0 165 _P2_0 = 0x00a0 00A1 166 _P2_1 = 0x00a1 00A2 167 _P2_2 = 0x00a2 00A3 168 _P2_3 = 0x00a3 00A4 169 _P2_4 = 0x00a4 00A5 170 _P2_5 = 0x00a5 00A6 171 _P2_6 = 0x00a6 00A7 172 _P2_7 = 0x00a7 00A8 173 _EX0 = 0x00a8 00A9 174 _ET0 = 0x00a9 00AA 175 _EX1 = 0x00aa 00AB 176 _ET1 = 0x00ab 00AC 177 _ES = 0x00ac 00AF 178 _EA = 0x00af 00B0 179 _P3_0 = 0x00b0 00B1 180 _P3_1 = 0x00b1 00B2 181 _P3_2 = 0x00b2 00B3 182 _P3_3 = 0x00b3 00B4 183 _P3_4 = 0x00b4 00B5 184 _P3_5 = 0x00b5 00B6 185 _P3_6 = 0x00b6 00B7 186 _P3_7 = 0x00b7 00B0 187 _RXD = 0x00b0 00B1 188 _TXD = 0x00b1 00B2 189 _INT0 = 0x00b2 00B3 190 _INT1 = 0x00b3 00B4 191 _T0 = 0x00b4 00B5 192 _T1 = 0x00b5 00B6 193 _WR = 0x00b6 00B7 194 _RD = 0x00b7 00B8 195 _PX0 = 0x00b8 00B9 196 _PT0 = 0x00b9 00BA 197 _PX1 = 0x00ba 00BB 198 _PT1 = 0x00bb 00BC 199 _PS = 0x00bc 00D0 200 _P = 0x00d0 00D1 201 _F1 = 0x00d1 00D2 202 _OV = 0x00d2 00D3 203 _RS0 = 0x00d3 00D4 204 _RS1 = 0x00d4 00D5 205 _F0 = 0x00d5 00D6 206 _AC = 0x00d6 00D7 207 _CY = 0x00d7 00E8 208 _EUSB = 0x00e8 00AC 209 _ES0 = 0x00ac 00AE 210 _ES1 = 0x00ae 0098 211 _RI_0 = 0x0098 0099 212 _TI_0 = 0x0099 00C0 213 _RI_1 = 0x00c0 00C1 214 _TI_1 = 0x00c1 00CA 215 _TR2 = 0x00ca 00CF 216 _TF2 = 0x00cf 00AD 217 _ET2 = 0x00ad 218 ;-------------------------------------------------------- 219 ; overlayable register banks 220 ;-------------------------------------------------------- 221 .area REG_BANK_0 (REL,OVR,DATA) 0000 222 .ds 8 223 .area REG_BANK_1 (REL,OVR,DATA) 0000 224 .ds 8 225 ;-------------------------------------------------------- 226 ; internal ram data 227 ;-------------------------------------------------------- 228 .area DSEG (DATA) 229 ;-------------------------------------------------------- 230 ; overlayable items in internal ram 231 ;-------------------------------------------------------- 232 .area OSEG (OVR,DATA) 0000 233 _rev_lookup_PARM_2:: 0000 234 .ds 1 235 ;-------------------------------------------------------- 236 ; indirectly addressable internal ram data 237 ;-------------------------------------------------------- 238 .area ISEG (DATA) 239 ;-------------------------------------------------------- 240 ; bit data 241 ;-------------------------------------------------------- 242 .area BSEG (BIT) 243 ;-------------------------------------------------------- 244 ; external ram data 245 ;-------------------------------------------------------- 246 .area XSEG (XDATA) 7FB4 247 _EP0CS = 0x7fb4 7F00 248 _IN0BUF = 0x7f00 7FB5 249 _IN0BC = 0x7fb5 7EC0 250 _OUT0BUF = 0x7ec0 7FC5 251 _OUT0BC = 0x7fc5 7FB6 252 _IN1CS = 0x7fb6 7E80 253 _IN1BUF = 0x7e80 7FB7 254 _IN1BC = 0x7fb7 7E40 255 _OUT1BUF = 0x7e40 7FC6 256 _OUT1CS = 0x7fc6 7FC7 257 _OUT1BC = 0x7fc7 7E00 258 _IN2BUF = 0x7e00 7FB9 259 _IN2BC = 0x7fb9 7FB8 260 _IN2CS = 0x7fb8 7FC9 261 _OUT2BC = 0x7fc9 7FC8 262 _OUT2CS = 0x7fc8 7DC0 263 _OUT2BUF = 0x7dc0 7D80 264 _IN3BUF = 0x7d80 7FBB 265 _IN3BC = 0x7fbb 7FBA 266 _IN3CS = 0x7fba 7FCB 267 _OUT3BC = 0x7fcb 7FCA 268 _OUT3CS = 0x7fca 7D40 269 _OUT3BUF = 0x7d40 7D00 270 _IN4BUF = 0x7d00 7FBD 271 _IN4BC = 0x7fbd 7FBC 272 _IN4CS = 0x7fbc 7CC0 273 _OUT4BUF = 0x7cc0 7FCD 274 _OUT4BC = 0x7fcd 7FCC 275 _OUT4CS = 0x7fcc 7C80 276 _IN5BUF = 0x7c80 7FBF 277 _IN5BC = 0x7fbf 7FBE 278 _IN5CS = 0x7fbe 7C40 279 _OUT5BUF = 0x7c40 7FCF 280 _OUT5BC = 0x7fcf 7FCE 281 _OUT5CS = 0x7fce 7C00 282 _IN6BUF = 0x7c00 7FC1 283 _IN6BC = 0x7fc1 7FC0 284 _IN6CS = 0x7fc0 7BC0 285 _OUT6BUF = 0x7bc0 7FD1 286 _OUT6BC = 0x7fd1 7FD0 287 _OUT6CS = 0x7fd0 7F9C 288 _OEA = 0x7f9c 7F96 289 _OUTA = 0x7f96 7F9D 290 _OEB = 0x7f9d 7F97 291 _OUTB = 0x7f97 7F9E 292 _OEC = 0x7f9e 7F98 293 _OUTC = 0x7f98 7F9B 294 _PINSC = 0x7f9b 7F93 295 _PORTACFG = 0x7f93 7F94 296 _PORTBCFG = 0x7f94 7F95 297 _PORTCCFG = 0x7f95 7FA9 298 _IN07IRQ = 0x7fa9 7FAA 299 _OUT07IRQ = 0x7faa 7FAC 300 _IN07IEN = 0x7fac 7FAD 301 _OUT07IEN = 0x7fad 7FAB 302 _USBIRQ = 0x7fab 7FAE 303 _USBIEN = 0x7fae 7FAF 304 _USBBAV = 0x7faf 7FD6 305 _USBCS = 0x7fd6 7FD7 306 _TOGCTL = 0x7fd7 7FD4 307 _SUDPTRH = 0x7fd4 7FD5 308 _SUDPTRL = 0x7fd5 7FE8 309 _SETUPDAT = 0x7fe8 7FA5 310 _I2CS = 0x7fa5 7FA6 311 _I2DAT = 0x7fa6 7FDE 312 _IN07VAL = 0x7fde 7FDF 313 _OUT07VAL = 0x7fdf 7FE3 314 _AUTOPTRH = 0x7fe3 7FE4 315 _AUTOPTRL = 0x7fe4 7FE5 316 _AUTODATA = 0x7fe5 7FA1 317 _ISOCTL = 0x7fa1 7FDD 318 _USBPAIR = 0x7fdd 1C04 319 __buf = 0x1c04 1C1C 320 __resistor = 0x1c1c 1C24 321 __power_fail = 0x1c24 1C25 322 __adc = 0x1c25 1C55 323 __volt = 0x1c55 1C65 324 __firm_regulate = 0x1c65 1C66 325 __vtol = 0x1c66 2000 326 __vtable = 0x2000 327 ;-------------------------------------------------------- 328 ; external initialized ram data 329 ;-------------------------------------------------------- 330 .area XISEG (XDATA) 331 ;-------------------------------------------------------- 332 ; global & static initialisations 333 ;-------------------------------------------------------- 334 .area GSINIT (CODE) 335 .area GSFINAL (CODE) 336 .area GSINIT (CODE) 337 ;-------------------------------------------------------- 338 ; Home 339 ;-------------------------------------------------------- 340 .area HOME (CODE) 341 .area CSEG (CODE) 342 ;-------------------------------------------------------- 343 ; code 344 ;-------------------------------------------------------- 345 .area CSEG (CODE) 346 ;------------------------------------------------------------ 347 ;Allocation info for local variables in function 'rev_lookup' 348 ;------------------------------------------------------------ 349 ;chn Allocated with name '_rev_lookup_PARM_2' 350 ;volt Allocated to registers r2 r3 351 ;i Allocated to registers r2 r3 352 ;_volt Allocated to registers r4 353 ;------------------------------------------------------------ 354 ;lookup.c:9: byte rev_lookup (signed int volt, byte chn) 355 ; ----------------------------------------- 356 ; function rev_lookup 357 ; ----------------------------------------- 0000 358 _rev_lookup: 0002 359 ar2 = 0x02 0003 360 ar3 = 0x03 0004 361 ar4 = 0x04 0005 362 ar5 = 0x05 0006 363 ar6 = 0x06 0007 364 ar7 = 0x07 0000 365 ar0 = 0x00 0001 366 ar1 = 0x01 367 ; genReceive 0000 AA 82 368 mov r2,dpl 0002 AB 83 369 mov r3,dph 370 ;lookup.c:13: if (volt - 0x0960 < 0) { 371 ; genMinus 0004 EA 372 mov a,r2 0005 24 A0 373 add a,#0xa0 0007 FC 374 mov r4,a 0008 EB 375 mov a,r3 0009 34 F6 376 addc a,#0xf6 377 ; genCmpLt 378 ; genCmp 379 ; Peephole 105 removed redundant mov 000B FD 380 mov r5,a 381 ; genIfxJump 382 ; Peephole 111 removed ljmp by inverse jump logic 000C 30 E7 04 383 jnb acc.7,00102$ 000F 384 00116$: 385 ;lookup.c:14: _volt = 0; 386 ; genAssign 000F 7C 00 387 mov r4,#0x00 388 ; Peephole 112.b changed ljmp to sjmp 0011 80 1C 389 sjmp 00103$ 0013 390 00102$: 391 ;lookup.c:16: else _volt = ((volt - 0x0960) >> 4) & 0xff; 392 ; genMinus 0013 EA 393 mov a,r2 0014 24 A0 394 add a,#0xa0 0016 FA 395 mov r2,a 0017 EB 396 mov a,r3 0018 34 F6 397 addc a,#0xf6 398 ; genRightShift 399 ; genSignedRightShift 400 ; genRightShiftLiteral 401 ; genrshTwo 402 ; Peephole 105 removed redundant mov 001A FB 403 mov r3,a 001B C4 404 swap a 001C CA 405 xch a,r2 001D C4 406 swap a 001E 54 0F 407 anl a,#0x0f 0020 6A 408 xrl a,r2 0021 CA 409 xch a,r2 0022 54 0F 410 anl a,#0x0f 0024 CA 411 xch a,r2 0025 6A 412 xrl a,r2 0026 CA 413 xch a,r2 0027 30 E3 02 414 jnb acc.3,00117$ 002A 44 F0 415 orl a,#0xf0 002C 416 00117$: 002C FB 417 mov r3,a 418 ; genCast 002D 8A 04 419 mov ar4,r2 002F 420 00103$: 421 ;lookup.c:17: for (i = 0; i < 0x0100; ++i) 422 ; genAssign 002F 7A 00 423 mov r2,#0x00 0031 7B 00 424 mov r3,#0x00 425 ; genAssign 0033 7D 00 426 mov r5,#0x00 0035 7E 00 427 mov r6,#0x00 0037 428 00106$: 429 ; genCmpLt 430 ; genCmp 0037 C3 431 clr c 0038 ED 432 mov a,r5 0039 94 00 433 subb a,#0x00 003B EE 434 mov a,r6 003C 64 80 435 xrl a,#0x80 003E 94 81 436 subb a,#0x81 437 ; genIfxJump 438 ; Peephole 108 removed ljmp by inverse jump logic 0040 50 2A 439 jnc 00109$ 0042 440 00118$: 441 ;lookup.c:18: if (_vtable[((unsigned int)chn << 8) + i] < _volt) 442 ; genCast 0042 AF*00 443 mov r7,_rev_lookup_PARM_2 0044 78 00 444 mov r0,#0x00 445 ; genLeftShift 446 ; genLeftShiftLiteral 447 ; genlshTwo 0046 8F 00 448 mov ar0,r7 0048 7F 00 449 mov r7,#0x00 450 ; genPlus 451 ; Peephole 236.g used r5 instead of ar5 004A ED 452 mov a,r5 453 ; Peephole 236.a used r7 instead of ar7 004B 2F 454 add a,r7 004C FF 455 mov r7,a 456 ; Peephole 236.g used r6 instead of ar6 004D EE 457 mov a,r6 458 ; Peephole 236.b used r0 instead of ar0 004E 38 459 addc a,r0 004F F8 460 mov r0,a 461 ; genPlus 462 ; genPlus aligned array 0050 8F 82 463 mov dpl,r7 0052 74 20 464 mov a,#(__vtable >> 8) 0054 28 465 add a,r0 0055 F5 83 466 mov dph,a 467 ; genPointerGet 468 ; genFarPointerGet 0057 E0 469 movx a,@dptr 470 ; genCmpLt 471 ; genCmp 472 ; Peephole 106 removed redundant mov 0058 FF 473 mov r7,a 0059 C3 474 clr c 005A 9C 475 subb a,r4 476 ; genIfxJump 477 ; Peephole 108 removed ljmp by inverse jump logic 005B 50 04 478 jnc 00108$ 005D 479 00119$: 480 ;lookup.c:19: return i; 481 ; genCast 005D 8A 82 482 mov dpl,r2 483 ; genRet 484 ; Peephole 112.b changed ljmp to sjmp 005F 80 0E 485 sjmp 00110$ 0061 486 00108$: 487 ;lookup.c:17: for (i = 0; i < 0x0100; ++i) 488 ; genPlus 489 ; genPlusIncr 0061 0D 490 inc r5 0062 BD 00 01 491 cjne r5,#0x00,00120$ 0065 0E 492 inc r6 0066 493 00120$: 494 ; genAssign 0066 8D 02 495 mov ar2,r5 0068 8E 03 496 mov ar3,r6 497 ; Peephole 112.b changed ljmp to sjmp 006A 80 CB 498 sjmp 00106$ 006C 499 00109$: 500 ;lookup.c:20: return 0xff; 501 ; genRet 006C 75 82 FF 502 mov dpl,#0xFF 006F 503 00110$: 006F 22 504 ret 505 .area CSEG (CODE) 506 .area XINIT (CODE)