1 radix dec 2 ; Code bank 0; Start address: 0; End address: 4095 3 0000 : org 0 4 5 ; Define start addresses for data regions 6 00000070 = shared___globals equ 112 7 00000020 = globals___0 equ 32 8 000000a0 = globals___1 equ 160 9 00000120 = globals___2 equ 288 10 00000000 = __indf equ 0 11 00000002 = __pcl equ 2 12 00000003 = __status equ 3 13 00000004 = __fsr equ 4 14 00000003 = __c___byte equ 3 15 00000000 = __c___bit equ 0 16 00000003 = __z___byte equ 3 17 00000002 = __z___bit equ 2 18 00000003 = __rp0___byte equ 3 19 00000005 = __rp0___bit equ 5 20 00000003 = __rp1___byte equ 3 21 00000006 = __rp1___bit equ 6 22 00000003 = __irp___byte equ 3 23 00000007 = __irp___bit equ 7 24 0000000a = __pclath equ 10 25 0000000a = __cb0___byte equ 10 26 00000003 = __cb0___bit equ 3 27 0000000a = __cb1___byte equ 10 28 00000004 = __cb1___bit equ 4 29 30 ; # Copyright (c) 2005 by Wayne C. Gramlich 31 ; # All rights reserved. 32 33 ; buffer = 'io8' 34 ; line_number = 6 35 ; library _pic16f688 entered 36 37 ; # Copyright (c) 2004-2006 by Wayne C. Gramlich 38 ; # All rights reserved. 39 40 ; buffer = '_pic16f688' 41 ; line_number = 6 42 ; processor pic16f688 43 ; line_number = 7 44 ; configure_address 0x2007 45 ; line_number = 8 46 ; configure_fill 0x3000 47 ; line_number = 9 48 ; configure_option fcmen: on = 0x800 49 ; line_number = 10 50 ; configure_option fcmen: off = 0x000 51 ; line_number = 11 52 ; configure_option ieso: on = 0x400 53 ; line_number = 12 54 ; configure_option ieso: off = 0x000 55 ; line_number = 13 56 ; configure_option boden: on = 0x300 57 ; line_number = 14 58 ; configure_option boden: partial = 0x200 59 ; line_number = 15 60 ; configure_option boden: sboden = 0x100 61 ; line_number = 16 62 ; configure_option boden: off = 0x000 63 ; line_number = 17 64 ; configure_option cpd: on = 0x00 65 ; line_number = 18 66 ; configure_option cpd: off = 0x80 67 ; line_number = 19 68 ; configure_option cp: on = 0x00 69 ; line_number = 20 70 ; configure_option cp: off = 0x40 71 ; line_number = 21 72 ; configure_option mclre: on = 0x20 73 ; line_number = 22 74 ; configure_option mclre: off = 0x00 75 ; line_number = 23 76 ; configure_option pwrte: on = 0x00 77 ; line_number = 24 78 ; configure_option pwrte: off = 0x10 79 ; line_number = 25 80 ; configure_option wdte: on = 8 81 ; line_number = 26 82 ; configure_option wdte: off = 0 83 ; line_number = 27 84 ; configure_option fosc: rc_clk = 7 85 ; line_number = 28 86 ; configure_option fosc: rc_no_clk = 6 87 ; line_number = 29 88 ; configure_option fosc: int_clk = 5 89 ; line_number = 30 90 ; configure_option fosc: int_no_clk = 4 91 ; line_number = 31 92 ; configure_option fosc: ec = 3 93 ; line_number = 32 94 ; configure_option fosc: hs = 2 95 ; line_number = 33 96 ; configure_option fosc: xt = 1 97 ; line_number = 34 98 ; configure_option fosc: lp = 0 99 100 ; line_number = 36 101 ; code_bank 0x0 : 0xfff 102 ; line_number = 37 103 ; data_bank 0x0 : 0x7f 104 ; line_number = 38 105 ; data_bank 0x80 : 0xff 106 ; line_number = 39 107 ; data_bank 0x100 : 0x17f 108 ; line_number = 40 109 ; data_bank 0x180 : 0x1ff 110 111 ; line_number = 42 112 ; global_region 0x20 : 0x6f 113 ; line_number = 43 114 ; icd2_global_region 0x20 : 0x6f 115 116 ; line_number = 45 117 ; global_region 0xa0 : 0xef 118 ; line_number = 46 119 ; icd2_global_region 0xa0 : 0xef 120 121 ; line_number = 48 122 ; global_region 0x120 : 0x16f 123 ; line_number = 49 124 ; icd2_global_region 0x120 : 0x164 125 126 ; line_number = 51 127 ; shared_region 0x70 : 0x7f 128 ; line_number = 52 129 ; icd2_shared_region 0x71 : 0x7f 130 131 ; line_number = 54 132 ; interrupts_possible 133 ; line_number = 55 134 ; packages pdip=14, soic=14, tssop=14 135 ; line_number = 56 136 ; pin vdd, power_supply 137 ; line_number = 57 138 ; pin_bindings pdip=1, soic=1, tssop=1 139 ; line_number = 58 140 ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin 141 ; line_number = 59 142 ; pin_bindings pdip=2, soic=2, tssop=2 143 ; line_number = 60 144 ; bind_to _porta@5 145 ; line_number = 61 146 ; or_if ra5_in _trisa 32 147 ; line_number = 62 148 ; or_if ra5_nc _trisa 32 149 ; line_number = 63 150 ; or_if ra5_out _trisa 0 151 ; line_number = 64 152 ; or_if osc1 _trisa 32 153 ; line_number = 65 154 ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout 155 ; line_number = 66 156 ; pin_bindings pdip=3, soic=3, tssop=3 157 ; line_number = 67 158 ; bind_to _porta@4 159 ; line_number = 68 160 ; or_if ra4_in _trisa 16 161 ; line_number = 69 162 ; or_if ra4_nc _trisa 16 163 ; line_number = 70 164 ; or_if ra4_out _trisa 0 165 ; line_number = 71 166 ; or_if an3 _trisa 16 167 ; line_number = 72 168 ; or_if osc2 _trisa 16 169 ; line_number = 73 170 ; or_if ra4_in _ansel 0 171 ; line_number = 74 172 ; or_if ra4_out _ansel 0 173 ; line_number = 75 174 ; or_if an3 _ansel 8 175 ; line_number = 76 176 ; or_if ra4_in _adcon0 0 177 ; line_number = 77 178 ; or_if ra4_out _adcon0 0 179 ; line_number = 78 180 ; or_if an3 _adcon0 1 181 ; line_number = 79 182 ; pin ra3_in, ra3_nc, mclr, vpp 183 ; line_number = 80 184 ; pin_bindings pdip=4, soic=4, tssop=4 185 ; line_number = 81 186 ; bind_to _porta@3 187 ; line_number = 82 188 ; or_if ra3_in _trisa 8 189 ; line_number = 83 190 ; or_if ra3_nc _trisa 8 191 ; line_number = 84 192 ; pin rc5_in, rc5_nc, rc5_out, rx, dt 193 ; line_number = 85 194 ; pin_bindings pdip=5, soic=5, tssop=5 195 ; line_number = 86 196 ; bind_to _portc@5 197 ; line_number = 87 198 ; or_if rc5_in _trisc 32 199 ; line_number = 88 200 ; or_if rc5_nc _trisc 32 201 ; line_number = 89 202 ; or_if rc5_out _trisc 0 203 ; line_number = 90 204 ; or_if rx _trisc 32 205 ; line_number = 91 206 ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck 207 ; line_number = 92 208 ; pin_bindings pdip=6, soic=6, tssop=6 209 ; line_number = 93 210 ; bind_to _portc@4 211 ; line_number = 94 212 ; or_if rc4_in _trisc 16 213 ; line_number = 95 214 ; or_if rc4_nc _trisc 16 215 ; line_number = 96 216 ; or_if rc4_out _trisc 0 217 ; # The UART documentation says TX must be marked as in input: 218 ; line_number = 98 219 ; or_if tx _trisc 16 220 ; line_number = 99 221 ; pin rc3_in, rc3_nc, rc3_out, an7 222 ; line_number = 100 223 ; pin_bindings pdip=7, soic=7, tssop=7 224 ; line_number = 101 225 ; bind_to _portc@3 226 ; line_number = 102 227 ; or_if rc3_in _trisc 8 228 ; line_number = 103 229 ; or_if rc3_nc _trisc 8 230 ; line_number = 104 231 ; or_if rc3_out _trisc 0 232 ; line_number = 105 233 ; or_if an7 _trisc 8 234 ; line_number = 106 235 ; or_if rc3_in _ansel 0 236 ; line_number = 107 237 ; or_if rc3_out _ansel 0 238 ; line_number = 108 239 ; or_if an7 _ansel 128 240 ; line_number = 109 241 ; or_if rc3_in _adcon0 0 242 ; line_number = 110 243 ; or_if rc3_out _adcon0 0 244 ; line_number = 111 245 ; or_if an7 _adcon0 1 246 ; line_number = 112 247 ; pin rc2_in, rc2_nc, rc2_out, an6 248 ; line_number = 113 249 ; pin_bindings pdip=8, soic=8, tssop=8 250 ; line_number = 114 251 ; bind_to _portc@2 252 ; line_number = 115 253 ; or_if rc2_in _trisc 4 254 ; line_number = 116 255 ; or_if rc2_nc _trisc 4 256 ; line_number = 117 257 ; or_if rc2_out _trisc 0 258 ; line_number = 118 259 ; or_if an6 _trisc 4 260 ; line_number = 119 261 ; or_if rc2_in _ansel 0 262 ; line_number = 120 263 ; or_if rc2_out _ansel 0 264 ; line_number = 121 265 ; or_if an6 _ansel 64 266 ; line_number = 122 267 ; or_if rc2_in _adcon0 0 268 ; line_number = 123 269 ; or_if rc2_out _adcon0 0 270 ; line_number = 124 271 ; or_if an6 _adcon0 1 272 ; line_number = 125 273 ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus 274 ; line_number = 126 275 ; pin_bindings pdip=9, soic=9, tssop=9 276 ; line_number = 127 277 ; bind_to _portc@1 278 ; line_number = 128 279 ; or_if rc1_in _trisc 2 280 ; line_number = 129 281 ; or_if rc1_nc _trisc 2 282 ; line_number = 130 283 ; or_if rc1_out _trisc 0 284 ; line_number = 131 285 ; or_if rc1_in _cmcon0 7 286 ; line_number = 132 287 ; or_if rc1_out _cmcon0 7 288 ; line_number = 133 289 ; or_if an5 _trisc 2 290 ; line_number = 134 291 ; or_if rc1_in _ansel 0 292 ; line_number = 135 293 ; or_if rc1_out _ansel 0 294 ; line_number = 136 295 ; or_if an5 _ansel 32 296 ; line_number = 137 297 ; or_if rc1_in _adcon0 0 298 ; line_number = 138 299 ; or_if rc1_out _adcon0 0 300 ; line_number = 139 301 ; or_if an5 _adcon0 1 302 ; line_number = 140 303 ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus 304 ; line_number = 141 305 ; pin_bindings pdip=10, soic=10, tssop=10 306 ; line_number = 142 307 ; bind_to _portc@0 308 ; line_number = 143 309 ; or_if rc0_in _trisc 1 310 ; line_number = 144 311 ; or_if rc0_nc _trisc 1 312 ; line_number = 145 313 ; or_if rc0_out _trisc 0 314 ; line_number = 146 315 ; or_if rc0_in _cmcon0 7 316 ; line_number = 147 317 ; or_if rc0_out _cmcon0 7 318 ; line_number = 148 319 ; or_if an4 _trisc 1 320 ; line_number = 149 321 ; or_if rc0_in _ansel 0 322 ; line_number = 150 323 ; or_if rc0_out _ansel 0 324 ; line_number = 151 325 ; or_if an4 _ansel 16 326 ; line_number = 152 327 ; or_if rc0_in _adcon0 0 328 ; line_number = 153 329 ; or_if rc0_out _adcon0 0 330 ; line_number = 154 331 ; or_if an4 _adcon0 1 332 ; line_number = 155 333 ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int 334 ; line_number = 156 335 ; pin_bindings pdip=11, soic=11, tssop=11 336 ; line_number = 157 337 ; bind_to _porta@2 338 ; line_number = 158 339 ; or_if ra2_in _trisa 4 340 ; line_number = 159 341 ; or_if ra2_nc _trisa 4 342 ; line_number = 160 343 ; or_if ra2_out _trisa 0 344 ; line_number = 161 345 ; or_if an2 _trisa 4 346 ; line_number = 162 347 ; or_if ra2_in _ansel 0 348 ; line_number = 163 349 ; or_if ra2_out _ansel 0 350 ; line_number = 164 351 ; or_if an2 _ansel 4 352 ; line_number = 165 353 ; or_if ra2_in _adcon0 0 354 ; line_number = 166 355 ; or_if ra2_out _adcon0 0 356 ; line_number = 167 357 ; or_if an2 _adcon0 1 358 ; line_number = 168 359 ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk 360 ; line_number = 169 361 ; pin_bindings pdip=12, soic=12, tssop=12 362 ; line_number = 170 363 ; bind_to _porta@1 364 ; line_number = 171 365 ; or_if ra1_in _trisa 2 366 ; line_number = 172 367 ; or_if ra1_nc _trisa 2 368 ; line_number = 173 369 ; or_if ra1_out _trisa 0 370 ; line_number = 174 371 ; or_if ra1_in _cmcon0 7 372 ; line_number = 175 373 ; or_if ra1_out _cmcon0 7 374 ; line_number = 176 375 ; or_if an1 _trisa 2 376 ; line_number = 177 377 ; or_if vref _trisa 2 378 ; line_number = 178 379 ; or_if ra1_in _ansel 0 380 ; line_number = 179 381 ; or_if ra1_out _ansel 0 382 ; line_number = 180 383 ; or_if an1 _ansel 2 384 ; line_number = 181 385 ; or_if vref _ansel 2 386 ; line_number = 182 387 ; or_if ra1_in _adcon0 0 388 ; line_number = 183 389 ; or_if ra1_out _adcon0 0 390 ; line_number = 184 391 ; or_if an1 _adcon0 1 # Turn on _addon 392 ; line_number = 185 393 ; or_if vref _adcon0 1 # Turn on _addon 394 ; line_number = 186 395 ; or_if vref _adcon0 64 # Turn of _vcfg 396 ; line_number = 187 397 ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu 398 ; line_number = 188 399 ; pin_bindings pdip=13, soic=13, tssop=13 400 ; line_number = 189 401 ; bind_to _porta@0 402 ; line_number = 190 403 ; or_if ra0_in _trisa 1 404 ; line_number = 191 405 ; or_if ra0_nc _trisa 1 406 ; line_number = 192 407 ; or_if ra0_out _trisa 0 408 ; line_number = 193 409 ; or_if ra0_in _cmcon0 7 410 ; line_number = 194 411 ; or_if ra0_out _cmcon0 7 412 ; line_number = 195 413 ; or_if an0 _trisa 1 414 ; line_number = 196 415 ; or_if ra0_in _ansel 0 416 ; line_number = 197 417 ; or_if ra0_out _ansel 0 418 ; line_number = 198 419 ; or_if an0 _ansel 1 420 ; line_number = 199 421 ; or_if ra0_in _adcon0 0 422 ; line_number = 200 423 ; or_if ra0_out _adcon0 0 424 ; line_number = 201 425 ; or_if an0 _adcon0 1 426 ; line_number = 202 427 ; pin vss, ground 428 ; line_number = 203 429 ; pin_bindings pdip=14, soic=14, tssop=14 430 431 ; line_number = 205 432 ; library _standard entered 433 434 ; # Copyright (c) 2006 by Wayne C. Gramlich 435 ; # All rights reserved. 436 437 ; # Standard definition for uCL: 438 439 ; buffer = '_standard' 440 ; line_number = 8 441 ; constant _true = (1 = 1) 442 00000001 = _true equ 1 443 ; line_number = 9 444 ; constant _false = (0 != 0) 445 00000000 = _false equ 0 446 447 448 ; buffer = '_pic16f688' 449 ; line_number = 205 450 ; library _standard exited 451 452 453 ; # Register/bit bindings: 454 455 ; # Databank 0 (0x0 - 0x7f): 456 457 ; line_number = 216 458 ; register _indf = 459 00000000 = _indf equ 0 460 461 ; line_number = 218 462 ; register _tmr0 = 463 00000001 = _tmr0 equ 1 464 465 ; line_number = 220 466 ; register _pcl = 467 00000002 = _pcl equ 2 468 469 ; line_number = 222 470 ; register _status = 471 00000003 = _status equ 3 472 ; line_number = 223 473 ; bind _irp = _status@7 474 00000003 = _irp___byte equ _status 475 00000007 = _irp___bit equ 7 476 ; line_number = 224 477 ; bind _rp1 = _status@5 478 00000003 = _rp1___byte equ _status 479 00000005 = _rp1___bit equ 5 480 ; line_number = 225 481 ; bind _rp0 = _status@5 482 00000003 = _rp0___byte equ _status 483 00000005 = _rp0___bit equ 5 484 ; line_number = 226 485 ; bind _to = _status@4 486 00000003 = _to___byte equ _status 487 00000004 = _to___bit equ 4 488 ; line_number = 227 489 ; bind _pd = _status@3 490 00000003 = _pd___byte equ _status 491 00000003 = _pd___bit equ 3 492 ; line_number = 228 493 ; bind _z = _status@2 494 00000003 = _z___byte equ _status 495 00000002 = _z___bit equ 2 496 ; line_number = 229 497 ; bind _dc = _status@1 498 00000003 = _dc___byte equ _status 499 00000001 = _dc___bit equ 1 500 ; line_number = 230 501 ; bind _c = _status@0 502 00000003 = _c___byte equ _status 503 00000000 = _c___bit equ 0 504 505 ; line_number = 232 506 ; register _fsr = 507 00000004 = _fsr equ 4 508 509 ; line_number = 234 510 ; register _porta = 511 00000005 = _porta equ 5 512 ; line_number = 235 513 ; register _ra = 514 00000005 = _ra equ 5 515 ; line_number = 236 516 ; bind _ra5 = _porta@5 517 00000005 = _ra5___byte equ _porta 518 00000005 = _ra5___bit equ 5 519 ; line_number = 237 520 ; bind _ra4 = _porta@4 521 00000005 = _ra4___byte equ _porta 522 00000004 = _ra4___bit equ 4 523 ; line_number = 238 524 ; bind _ra3 = _porta@3 525 00000005 = _ra3___byte equ _porta 526 00000003 = _ra3___bit equ 3 527 ; line_number = 239 528 ; bind _ra2 = _porta@2 529 00000005 = _ra2___byte equ _porta 530 00000002 = _ra2___bit equ 2 531 ; line_number = 240 532 ; bind _ra1 = _porta@1 533 00000005 = _ra1___byte equ _porta 534 00000001 = _ra1___bit equ 1 535 ; line_number = 241 536 ; bind _ra0 = _porta@0 537 00000005 = _ra0___byte equ _porta 538 00000000 = _ra0___bit equ 0 539 540 ; line_number = 243 541 ; register _portc = 542 00000007 = _portc equ 7 543 ; line_number = 244 544 ; register _rc = 545 00000007 = _rc equ 7 546 ; line_number = 245 547 ; bind _rc5 = _portc@5 548 00000007 = _rc5___byte equ _portc 549 00000005 = _rc5___bit equ 5 550 ; line_number = 246 551 ; bind _rc4 = _portc@4 552 00000007 = _rc4___byte equ _portc 553 00000004 = _rc4___bit equ 4 554 ; line_number = 247 555 ; bind _rc3 = _portc@3 556 00000007 = _rc3___byte equ _portc 557 00000003 = _rc3___bit equ 3 558 ; line_number = 248 559 ; bind _rc2 = _portc@2 560 00000007 = _rc2___byte equ _portc 561 00000002 = _rc2___bit equ 2 562 ; line_number = 249 563 ; bind _rc1 = _portc@1 564 00000007 = _rc1___byte equ _portc 565 00000001 = _rc1___bit equ 1 566 ; line_number = 250 567 ; bind _rc0 = _portc@0 568 00000007 = _rc0___byte equ _portc 569 00000000 = _rc0___bit equ 0 570 571 ; line_number = 252 572 ; register _pclath = 573 0000000a = _pclath equ 10 574 575 ; line_number = 254 576 ; register _intcon = 577 0000000b = _intcon equ 11 578 ; line_number = 255 579 ; bind _gie = _intcon@7 580 0000000b = _gie___byte equ _intcon 581 00000007 = _gie___bit equ 7 582 ; line_number = 256 583 ; bind _peie = _intcon@6 584 0000000b = _peie___byte equ _intcon 585 00000006 = _peie___bit equ 6 586 ; line_number = 257 587 ; bind _t0ie = _intcon@5 588 0000000b = _t0ie___byte equ _intcon 589 00000005 = _t0ie___bit equ 5 590 ; line_number = 258 591 ; bind _inte = _intcon@4 592 0000000b = _inte___byte equ _intcon 593 00000004 = _inte___bit equ 4 594 ; line_number = 259 595 ; bind _raie = _intcon@3 596 0000000b = _raie___byte equ _intcon 597 00000003 = _raie___bit equ 3 598 ; line_number = 260 599 ; bind _t0if = _intcon@2 600 0000000b = _t0if___byte equ _intcon 601 00000002 = _t0if___bit equ 2 602 ; line_number = 261 603 ; bind _intf = _intcon@1 604 0000000b = _intf___byte equ _intcon 605 00000001 = _intf___bit equ 1 606 ; line_number = 262 607 ; bind _raif = _intcon@0 608 0000000b = _raif___byte equ _intcon 609 00000000 = _raif___bit equ 0 610 611 ; line_number = 264 612 ; register _pir1 = 613 0000000c = _pir1 equ 12 614 ; line_number = 265 615 ; bind _eeif = _pir1@7 616 0000000c = _eeif___byte equ _pir1 617 00000007 = _eeif___bit equ 7 618 ; line_number = 266 619 ; bind _adif = _pir1@6 620 0000000c = _adif___byte equ _pir1 621 00000006 = _adif___bit equ 6 622 ; line_number = 267 623 ; bind _rcif = _pir1@5 624 0000000c = _rcif___byte equ _pir1 625 00000005 = _rcif___bit equ 5 626 ; line_number = 268 627 ; bind _c2if = _pir1@4 628 0000000c = _c2if___byte equ _pir1 629 00000004 = _c2if___bit equ 4 630 ; line_number = 269 631 ; bind _c1if = _pir1@3 632 0000000c = _c1if___byte equ _pir1 633 00000003 = _c1if___bit equ 3 634 ; line_number = 270 635 ; bind _osfif = _pir1@2 636 0000000c = _osfif___byte equ _pir1 637 00000002 = _osfif___bit equ 2 638 ; line_number = 271 639 ; bind _txif = _pir1@1 640 0000000c = _txif___byte equ _pir1 641 00000001 = _txif___bit equ 1 642 ; line_number = 272 643 ; bind _tmr1if = _pir1@0 644 0000000c = _tmr1if___byte equ _pir1 645 00000000 = _tmr1if___bit equ 0 646 647 ; line_number = 274 648 ; register _tmr1l = 649 0000000e = _tmr1l equ 14 650 651 ; line_number = 276 652 ; register _tmr1h = 653 0000000f = _tmr1h equ 15 654 655 ; line_number = 278 656 ; register _t1con = 657 00000010 = _t1con equ 16 658 ; line_number = 279 659 ; bind t1ginv = _t1con@7 660 00000010 = t1ginv___byte equ _t1con 661 00000007 = t1ginv___bit equ 7 662 ; line_number = 280 663 ; bind _tmr1ge = _t1con@6 664 00000010 = _tmr1ge___byte equ _t1con 665 00000006 = _tmr1ge___bit equ 6 666 ; line_number = 281 667 ; bind _t1ckps1 = _t1con@5 668 00000010 = _t1ckps1___byte equ _t1con 669 00000005 = _t1ckps1___bit equ 5 670 ; line_number = 282 671 ; bind _t1ckps0 = _t1con@4 672 00000010 = _t1ckps0___byte equ _t1con 673 00000004 = _t1ckps0___bit equ 4 674 ; line_number = 283 675 ; bind _t1oscen = _t1con@3 676 00000010 = _t1oscen___byte equ _t1con 677 00000003 = _t1oscen___bit equ 3 678 ; line_number = 284 679 ; bind _t1sync = _t1con@2 680 00000010 = _t1sync___byte equ _t1con 681 00000002 = _t1sync___bit equ 2 682 ; line_number = 285 683 ; bind _tmr1cs = _t1con@1 684 00000010 = _tmr1cs___byte equ _t1con 685 00000001 = _tmr1cs___bit equ 1 686 ; line_number = 286 687 ; bind _tmr1on = _t1con@0 688 00000010 = _tmr1on___byte equ _t1con 689 00000000 = _tmr1on___bit equ 0 690 691 ; line_number = 288 692 ; register _baudctl = 693 00000011 = _baudctl equ 17 694 ; line_number = 289 695 ; bind _abdovf = _baudctl@7 696 00000011 = _abdovf___byte equ _baudctl 697 00000007 = _abdovf___bit equ 7 698 ; line_number = 290 699 ; bind _rcidl = _baudctl@6 700 00000011 = _rcidl___byte equ _baudctl 701 00000006 = _rcidl___bit equ 6 702 ; line_number = 291 703 ; bind _sckp = _baudctl@4 704 00000011 = _sckp___byte equ _baudctl 705 00000004 = _sckp___bit equ 4 706 ; line_number = 292 707 ; bind _brg16 = _baudctl@3 708 00000011 = _brg16___byte equ _baudctl 709 00000003 = _brg16___bit equ 3 710 ; line_number = 293 711 ; bind _wue = _baudctl@1 712 00000011 = _wue___byte equ _baudctl 713 00000001 = _wue___bit equ 1 714 ; line_number = 294 715 ; bind _abden = _baudctl@0 716 00000011 = _abden___byte equ _baudctl 717 00000000 = _abden___bit equ 0 718 719 ; line_number = 296 720 ; register _spbrgh = 721 00000012 = _spbrgh equ 18 722 723 ; line_number = 298 724 ; register _spbrg = 725 00000013 = _spbrg equ 19 726 727 ; line_number = 300 728 ; register _rcreg = 729 00000014 = _rcreg equ 20 730 731 ; line_number = 302 732 ; register _txreg = 733 00000015 = _txreg equ 21 734 735 ; line_number = 304 736 ; register _txsta = 737 00000016 = _txsta equ 22 738 ; line_number = 305 739 ; bind _csrc = _txsta@7 740 00000016 = _csrc___byte equ _txsta 741 00000007 = _csrc___bit equ 7 742 ; line_number = 306 743 ; bind _tx9 = _txsta@6 744 00000016 = _tx9___byte equ _txsta 745 00000006 = _tx9___bit equ 6 746 ; line_number = 307 747 ; bind _txen = _txsta@5 748 00000016 = _txen___byte equ _txsta 749 00000005 = _txen___bit equ 5 750 ; line_number = 308 751 ; bind _sync = _txsta@4 752 00000016 = _sync___byte equ _txsta 753 00000004 = _sync___bit equ 4 754 ; line_number = 309 755 ; bind _sendb = _txsta@3 756 00000016 = _sendb___byte equ _txsta 757 00000003 = _sendb___bit equ 3 758 ; line_number = 310 759 ; bind _brgh = _txsta@2 760 00000016 = _brgh___byte equ _txsta 761 00000002 = _brgh___bit equ 2 762 ; line_number = 311 763 ; bind _trmt = _txsta@1 764 00000016 = _trmt___byte equ _txsta 765 00000001 = _trmt___bit equ 1 766 ; line_number = 312 767 ; bind _tx9d = _txsta@0 768 00000016 = _tx9d___byte equ _txsta 769 00000000 = _tx9d___bit equ 0 770 771 ; line_number = 314 772 ; register _rcsta = 773 00000017 = _rcsta equ 23 774 ; line_number = 315 775 ; bind _spen = _rcsta@7 776 00000017 = _spen___byte equ _rcsta 777 00000007 = _spen___bit equ 7 778 ; line_number = 316 779 ; bind _rx9 = _rcsta@6 780 00000017 = _rx9___byte equ _rcsta 781 00000006 = _rx9___bit equ 6 782 ; line_number = 317 783 ; bind _sren = _rcsta@5 784 00000017 = _sren___byte equ _rcsta 785 00000005 = _sren___bit equ 5 786 ; line_number = 318 787 ; bind _cren = _rcsta@4 788 00000017 = _cren___byte equ _rcsta 789 00000004 = _cren___bit equ 4 790 ; line_number = 319 791 ; bind _adden = _rcsta@3 792 00000017 = _adden___byte equ _rcsta 793 00000003 = _adden___bit equ 3 794 ; line_number = 320 795 ; bind _ferr = _rcsta@2 796 00000017 = _ferr___byte equ _rcsta 797 00000002 = _ferr___bit equ 2 798 ; line_number = 321 799 ; bind _oerr = _rcsta@1 800 00000017 = _oerr___byte equ _rcsta 801 00000001 = _oerr___bit equ 1 802 ; line_number = 322 803 ; bind _rx9d = _rcsta@0 804 00000017 = _rx9d___byte equ _rcsta 805 00000000 = _rx9d___bit equ 0 806 807 ; line_number = 324 808 ; register _wdtcon = 809 00000018 = _wdtcon equ 24 810 ; line_number = 325 811 ; bind _wdtps3 = _wdtcon@4 812 00000018 = _wdtps3___byte equ _wdtcon 813 00000004 = _wdtps3___bit equ 4 814 ; line_number = 326 815 ; bind _wdtps2 = _wdtcon@3 816 00000018 = _wdtps2___byte equ _wdtcon 817 00000003 = _wdtps2___bit equ 3 818 ; line_number = 327 819 ; bind _wdtps1 = _wdtcon@2 820 00000018 = _wdtps1___byte equ _wdtcon 821 00000002 = _wdtps1___bit equ 2 822 ; line_number = 328 823 ; bind _wdtps0 = _wdtcon@1 824 00000018 = _wdtps0___byte equ _wdtcon 825 00000001 = _wdtps0___bit equ 1 826 ; line_number = 329 827 ; bind _swdten = _wdtcon@0 828 00000018 = _swdten___byte equ _wdtcon 829 00000000 = _swdten___bit equ 0 830 831 ; line_number = 331 832 ; register _cmcon0 = 833 00000019 = _cmcon0 equ 25 834 ; line_number = 332 835 ; bind _c1out = _cmcon0@7 836 00000019 = _c1out___byte equ _cmcon0 837 00000007 = _c1out___bit equ 7 838 ; line_number = 333 839 ; bind _c2out = _cmcon0@6 840 00000019 = _c2out___byte equ _cmcon0 841 00000006 = _c2out___bit equ 6 842 ; line_number = 334 843 ; bind _c1inv = _cmcon0@5 844 00000019 = _c1inv___byte equ _cmcon0 845 00000005 = _c1inv___bit equ 5 846 ; line_number = 335 847 ; bind _c2inv = _cmcon0@4 848 00000019 = _c2inv___byte equ _cmcon0 849 00000004 = _c2inv___bit equ 4 850 ; line_number = 336 851 ; bind _cis = _cmcon0@3 852 00000019 = _cis___byte equ _cmcon0 853 00000003 = _cis___bit equ 3 854 ; line_number = 337 855 ; bind _cm2 = _cmcon0@2 856 00000019 = _cm2___byte equ _cmcon0 857 00000002 = _cm2___bit equ 2 858 ; line_number = 338 859 ; bind _cm1 = _cmcon0@1 860 00000019 = _cm1___byte equ _cmcon0 861 00000001 = _cm1___bit equ 1 862 ; line_number = 339 863 ; bind _cm0 = _cmcon0@0 864 00000019 = _cm0___byte equ _cmcon0 865 00000000 = _cm0___bit equ 0 866 867 ; line_number = 341 868 ; register _cmcon1 = 869 0000001a = _cmcon1 equ 26 870 ; line_number = 342 871 ; bind _t1gss = _cmcon1@0 872 0000001a = _t1gss___byte equ _cmcon1 873 00000000 = _t1gss___bit equ 0 874 ; line_number = 343 875 ; bind _c2sync = _cmcon1@1 876 0000001a = _c2sync___byte equ _cmcon1 877 00000001 = _c2sync___bit equ 1 878 879 ; line_number = 345 880 ; register _adresh = 881 0000001e = _adresh equ 30 882 883 ; line_number = 347 884 ; register _adcon0 = 885 0000001f = _adcon0 equ 31 886 ; line_number = 348 887 ; bind _adfm = _adcon0@7 888 0000001f = _adfm___byte equ _adcon0 889 00000007 = _adfm___bit equ 7 890 ; line_number = 349 891 ; bind _vcfg = _adcon0@6 892 0000001f = _vcfg___byte equ _adcon0 893 00000006 = _vcfg___bit equ 6 894 ; line_number = 350 895 ; bind _chs2 = _adcon0@4 896 0000001f = _chs2___byte equ _adcon0 897 00000004 = _chs2___bit equ 4 898 ; line_number = 351 899 ; bind _chs1 = _adcon0@3 900 0000001f = _chs1___byte equ _adcon0 901 00000003 = _chs1___bit equ 3 902 ; line_number = 352 903 ; bind _chs0 = _adcon0@2 904 0000001f = _chs0___byte equ _adcon0 905 00000002 = _chs0___bit equ 2 906 ; line_number = 353 907 ; bind _go = _adcon0@1 908 0000001f = _go___byte equ _adcon0 909 00000001 = _go___bit equ 1 910 ; line_number = 354 911 ; bind _adon = _adcon0@0 912 0000001f = _adon___byte equ _adcon0 913 00000000 = _adon___bit equ 0 914 915 ; # Data bank 1 (0x80-0xff): 916 917 ; line_number = 358 918 ; register _option_reg = 919 00000081 = _option_reg equ 129 920 ; line_number = 359 921 ; bind _rapu = _option_reg@7 922 00000081 = _rapu___byte equ _option_reg 923 00000007 = _rapu___bit equ 7 924 ; line_number = 360 925 ; bind _intedg = _option_reg@6 926 00000081 = _intedg___byte equ _option_reg 927 00000006 = _intedg___bit equ 6 928 ; line_number = 361 929 ; bind _t0cs = _option_reg@5 930 00000081 = _t0cs___byte equ _option_reg 931 00000005 = _t0cs___bit equ 5 932 ; line_number = 362 933 ; bind _t0se = _option_reg@4 934 00000081 = _t0se___byte equ _option_reg 935 00000004 = _t0se___bit equ 4 936 ; line_number = 363 937 ; bind _psa = _option_reg@3 938 00000081 = _psa___byte equ _option_reg 939 00000003 = _psa___bit equ 3 940 ; line_number = 364 941 ; bind _ps2 = _option_reg@2 942 00000081 = _ps2___byte equ _option_reg 943 00000002 = _ps2___bit equ 2 944 ; line_number = 365 945 ; bind _ps1 = _option_reg@1 946 00000081 = _ps1___byte equ _option_reg 947 00000001 = _ps1___bit equ 1 948 ; line_number = 366 949 ; bind _ps0 = _option_reg@0 950 00000081 = _ps0___byte equ _option_reg 951 00000000 = _ps0___bit equ 0 952 953 ; line_number = 368 954 ; register _trisa = 955 00000085 = _trisa equ 133 956 ; line_number = 369 957 ; bind _trisa5 = _trisa@5 958 00000085 = _trisa5___byte equ _trisa 959 00000005 = _trisa5___bit equ 5 960 ; line_number = 370 961 ; bind _trisa4 = _trisa@4 962 00000085 = _trisa4___byte equ _trisa 963 00000004 = _trisa4___bit equ 4 964 ; line_number = 371 965 ; bind _trisa3 = _trisa@3 966 00000085 = _trisa3___byte equ _trisa 967 00000003 = _trisa3___bit equ 3 968 ; line_number = 372 969 ; bind _trisa2 = _trisa@2 970 00000085 = _trisa2___byte equ _trisa 971 00000002 = _trisa2___bit equ 2 972 ; line_number = 373 973 ; bind _trisa1 = _trisa@1 974 00000085 = _trisa1___byte equ _trisa 975 00000001 = _trisa1___bit equ 1 976 ; line_number = 374 977 ; bind _trisa0 = _trisa@0 978 00000085 = _trisa0___byte equ _trisa 979 00000000 = _trisa0___bit equ 0 980 981 ; line_number = 376 982 ; register _trisc = 983 00000087 = _trisc equ 135 984 ; line_number = 377 985 ; bind _trisc5 = _trisc@5 986 00000087 = _trisc5___byte equ _trisc 987 00000005 = _trisc5___bit equ 5 988 ; line_number = 378 989 ; bind _trisc4 = _trisc@4 990 00000087 = _trisc4___byte equ _trisc 991 00000004 = _trisc4___bit equ 4 992 ; line_number = 379 993 ; bind _trisc3 = _trisc@3 994 00000087 = _trisc3___byte equ _trisc 995 00000003 = _trisc3___bit equ 3 996 ; line_number = 380 997 ; bind _trisc2 = _trisc@2 998 00000087 = _trisc2___byte equ _trisc 999 00000002 = _trisc2___bit equ 2 1000 ; line_number = 381 1001 ; bind _trisc1 = _trisc@1 1002 00000087 = _trisc1___byte equ _trisc 1003 00000001 = _trisc1___bit equ 1 1004 ; line_number = 382 1005 ; bind _trisc0 = _trisc@0 1006 00000087 = _trisc0___byte equ _trisc 1007 00000000 = _trisc0___bit equ 0 1008 1009 ; line_number = 384 1010 ; register _pie1 = 1011 0000008c = _pie1 equ 140 1012 ; line_number = 385 1013 ; bind _eeie = _pie1@7 1014 0000008c = _eeie___byte equ _pie1 1015 00000007 = _eeie___bit equ 7 1016 ; line_number = 386 1017 ; bind _adie = _pie1@6 1018 0000008c = _adie___byte equ _pie1 1019 00000006 = _adie___bit equ 6 1020 ; line_number = 387 1021 ; bind _rcie = _pie1@5 1022 0000008c = _rcie___byte equ _pie1 1023 00000005 = _rcie___bit equ 5 1024 ; line_number = 388 1025 ; bind _c2ie = _pie1@4 1026 0000008c = _c2ie___byte equ _pie1 1027 00000004 = _c2ie___bit equ 4 1028 ; line_number = 389 1029 ; bind _c1ie = _pie1@3 1030 0000008c = _c1ie___byte equ _pie1 1031 00000003 = _c1ie___bit equ 3 1032 ; line_number = 390 1033 ; bind _osfie = _pie1@2 1034 0000008c = _osfie___byte equ _pie1 1035 00000002 = _osfie___bit equ 2 1036 ; line_number = 391 1037 ; bind _txie = _pie1@1 1038 0000008c = _txie___byte equ _pie1 1039 00000001 = _txie___bit equ 1 1040 ; line_number = 392 1041 ; bind _tmr1ie = _pie1@0 1042 0000008c = _tmr1ie___byte equ _pie1 1043 00000000 = _tmr1ie___bit equ 0 1044 1045 ; line_number = 394 1046 ; register _pcon = 1047 0000008e = _pcon equ 142 1048 ; line_number = 395 1049 ; bind _ulpwue = _pcon@5 1050 0000008e = _ulpwue___byte equ _pcon 1051 00000005 = _ulpwue___bit equ 5 1052 ; line_number = 396 1053 ; bind _sboden = _pcon@4 1054 0000008e = _sboden___byte equ _pcon 1055 00000004 = _sboden___bit equ 4 1056 ; line_number = 397 1057 ; bind _por = _pcon@1 1058 0000008e = _por___byte equ _pcon 1059 00000001 = _por___bit equ 1 1060 ; line_number = 398 1061 ; bind _bod = _pcon@0 1062 0000008e = _bod___byte equ _pcon 1063 00000000 = _bod___bit equ 0 1064 1065 ; line_number = 400 1066 ; register _osccon = 1067 0000008f = _osccon equ 143 1068 ; line_number = 401 1069 ; bind _ircf2 = _osccon@6 1070 0000008f = _ircf2___byte equ _osccon 1071 00000006 = _ircf2___bit equ 6 1072 ; line_number = 402 1073 ; bind _ircf1 = _osccon@5 1074 0000008f = _ircf1___byte equ _osccon 1075 00000005 = _ircf1___bit equ 5 1076 ; line_number = 403 1077 ; bind _ircf0 = _osccon@4 1078 0000008f = _ircf0___byte equ _osccon 1079 00000004 = _ircf0___bit equ 4 1080 ; line_number = 404 1081 ; bind _osts = _osccon@3 1082 0000008f = _osts___byte equ _osccon 1083 00000003 = _osts___bit equ 3 1084 ; line_number = 405 1085 ; bind _hts = _osccon@2 1086 0000008f = _hts___byte equ _osccon 1087 00000002 = _hts___bit equ 2 1088 ; line_number = 406 1089 ; bind _lts = _osccon@3 1090 0000008f = _lts___byte equ _osccon 1091 00000003 = _lts___bit equ 3 1092 ; line_number = 407 1093 ; bind _scs = _osccon@2 1094 0000008f = _scs___byte equ _osccon 1095 00000002 = _scs___bit equ 2 1096 1097 ; line_number = 409 1098 ; register _osctune = 1099 00000090 = _osctune equ 144 1100 ; line_number = 410 1101 ; bind _tun4 = _osctune@4 1102 00000090 = _tun4___byte equ _osctune 1103 00000004 = _tun4___bit equ 4 1104 ; line_number = 411 1105 ; bind _tun3 = _osctune@3 1106 00000090 = _tun3___byte equ _osctune 1107 00000003 = _tun3___bit equ 3 1108 ; line_number = 412 1109 ; bind _tun2 = _osctune@2 1110 00000090 = _tun2___byte equ _osctune 1111 00000002 = _tun2___bit equ 2 1112 ; line_number = 413 1113 ; bind _tun1 = _osctune@1 1114 00000090 = _tun1___byte equ _osctune 1115 00000001 = _tun1___bit equ 1 1116 ; line_number = 414 1117 ; bind _tun0 = _osctune@0 1118 00000090 = _tun0___byte equ _osctune 1119 00000000 = _tun0___bit equ 0 1120 ; line_number = 415 1121 ; constant _osccal_lsb = 1 1122 00000001 = _osccal_lsb equ 1 1123 1124 ; line_number = 417 1125 ; register _ansel = 1126 00000091 = _ansel equ 145 1127 ; line_number = 418 1128 ; bind _ans7 = _ansel@7 1129 00000091 = _ans7___byte equ _ansel 1130 00000007 = _ans7___bit equ 7 1131 ; line_number = 419 1132 ; bind _ans6 = _ansel@6 1133 00000091 = _ans6___byte equ _ansel 1134 00000006 = _ans6___bit equ 6 1135 ; line_number = 420 1136 ; bind _ans5 = _ansel@5 1137 00000091 = _ans5___byte equ _ansel 1138 00000005 = _ans5___bit equ 5 1139 ; line_number = 421 1140 ; bind _ans4 = _ansel@4 1141 00000091 = _ans4___byte equ _ansel 1142 00000004 = _ans4___bit equ 4 1143 ; line_number = 422 1144 ; bind _ans3 = _ansel@3 1145 00000091 = _ans3___byte equ _ansel 1146 00000003 = _ans3___bit equ 3 1147 ; line_number = 423 1148 ; bind _ans2 = _ansel@2 1149 00000091 = _ans2___byte equ _ansel 1150 00000002 = _ans2___bit equ 2 1151 ; line_number = 424 1152 ; bind _ans1 = _ansel@1 1153 00000091 = _ans1___byte equ _ansel 1154 00000001 = _ans1___bit equ 1 1155 ; line_number = 425 1156 ; bind _ans0 = _ansel@0 1157 00000091 = _ans0___byte equ _ansel 1158 00000000 = _ans0___bit equ 0 1159 1160 ; line_number = 427 1161 ; register _wpua = 1162 00000095 = _wpua equ 149 1163 ; line_number = 428 1164 ; bind _wpua5 = _wpua@5 1165 00000095 = _wpua5___byte equ _wpua 1166 00000005 = _wpua5___bit equ 5 1167 ; line_number = 429 1168 ; bind _wpua4 = _wpua@4 1169 00000095 = _wpua4___byte equ _wpua 1170 00000004 = _wpua4___bit equ 4 1171 ; line_number = 430 1172 ; bind _wpua2 = _wpua@2 1173 00000095 = _wpua2___byte equ _wpua 1174 00000002 = _wpua2___bit equ 2 1175 ; line_number = 431 1176 ; bind _wpua1 = _wpua@1 1177 00000095 = _wpua1___byte equ _wpua 1178 00000001 = _wpua1___bit equ 1 1179 ; line_number = 432 1180 ; bind _wpua0 = _wpua@0 1181 00000095 = _wpua0___byte equ _wpua 1182 00000000 = _wpua0___bit equ 0 1183 1184 ; line_number = 434 1185 ; register _ioca = 1186 00000096 = _ioca equ 150 1187 ; line_number = 435 1188 ; bind _ioca5 = _ioca@5 1189 00000096 = _ioca5___byte equ _ioca 1190 00000005 = _ioca5___bit equ 5 1191 ; line_number = 436 1192 ; bind _ioca4 = _ioca@4 1193 00000096 = _ioca4___byte equ _ioca 1194 00000004 = _ioca4___bit equ 4 1195 ; line_number = 437 1196 ; bind _ioca3 = _ioca@3 1197 00000096 = _ioca3___byte equ _ioca 1198 00000003 = _ioca3___bit equ 3 1199 ; line_number = 438 1200 ; bind _ioca2 = _ioca@2 1201 00000096 = _ioca2___byte equ _ioca 1202 00000002 = _ioca2___bit equ 2 1203 ; line_number = 439 1204 ; bind _ioca1 = _ioca@1 1205 00000096 = _ioca1___byte equ _ioca 1206 00000001 = _ioca1___bit equ 1 1207 ; line_number = 440 1208 ; bind _ioca0 = _ioca@0 1209 00000096 = _ioca0___byte equ _ioca 1210 00000000 = _ioca0___bit equ 0 1211 1212 ; line_number = 442 1213 ; register _eedath = 1214 00000097 = _eedath equ 151 1215 1216 ; line_number = 444 1217 ; register _eeadrh = 1218 00000098 = _eeadrh equ 152 1219 1220 ; line_number = 446 1221 ; register _vrcon = 1222 00000099 = _vrcon equ 153 1223 ; line_number = 447 1224 ; bind _vren = _vrcon@7 1225 00000099 = _vren___byte equ _vrcon 1226 00000007 = _vren___bit equ 7 1227 ; line_number = 448 1228 ; bind _vrr = _vrcon@5 1229 00000099 = _vrr___byte equ _vrcon 1230 00000005 = _vrr___bit equ 5 1231 ; line_number = 449 1232 ; bind _vr3 = _vrcon@3 1233 00000099 = _vr3___byte equ _vrcon 1234 00000003 = _vr3___bit equ 3 1235 ; line_number = 450 1236 ; bind _vr2 = _vrcon@2 1237 00000099 = _vr2___byte equ _vrcon 1238 00000002 = _vr2___bit equ 2 1239 ; line_number = 451 1240 ; bind _vr1 = _vrcon@1 1241 00000099 = _vr1___byte equ _vrcon 1242 00000001 = _vr1___bit equ 1 1243 ; line_number = 452 1244 ; bind _vr0 = _vrcon@0 1245 00000099 = _vr0___byte equ _vrcon 1246 00000000 = _vr0___bit equ 0 1247 1248 ; line_number = 454 1249 ; register _eedat = 1250 0000009a = _eedat equ 154 1251 ; line_number = 455 1252 ; bind _eedat7 = _eedat@7 1253 0000009a = _eedat7___byte equ _eedat 1254 00000007 = _eedat7___bit equ 7 1255 ; line_number = 456 1256 ; bind _eedat6 = _eedat@6 1257 0000009a = _eedat6___byte equ _eedat 1258 00000006 = _eedat6___bit equ 6 1259 ; line_number = 457 1260 ; bind _eedat5 = _eedat@5 1261 0000009a = _eedat5___byte equ _eedat 1262 00000005 = _eedat5___bit equ 5 1263 ; line_number = 458 1264 ; bind _eedat4 = _eedat@4 1265 0000009a = _eedat4___byte equ _eedat 1266 00000004 = _eedat4___bit equ 4 1267 ; line_number = 459 1268 ; bind _eedat3 = _eedat@3 1269 0000009a = _eedat3___byte equ _eedat 1270 00000003 = _eedat3___bit equ 3 1271 ; line_number = 460 1272 ; bind _eedat2 = _eedat@2 1273 0000009a = _eedat2___byte equ _eedat 1274 00000002 = _eedat2___bit equ 2 1275 ; line_number = 461 1276 ; bind _eedat1 = _eedat@1 1277 0000009a = _eedat1___byte equ _eedat 1278 00000001 = _eedat1___bit equ 1 1279 ; line_number = 462 1280 ; bind _eedat0 = _eedat@0 1281 0000009a = _eedat0___byte equ _eedat 1282 00000000 = _eedat0___bit equ 0 1283 1284 ; line_number = 464 1285 ; register _eeadr = 1286 0000009b = _eeadr equ 155 1287 ; line_number = 465 1288 ; bind _eeadr7 = _eeadr@7 1289 0000009b = _eeadr7___byte equ _eeadr 1290 00000007 = _eeadr7___bit equ 7 1291 ; line_number = 466 1292 ; bind _eeadr6 = _eeadr@6 1293 0000009b = _eeadr6___byte equ _eeadr 1294 00000006 = _eeadr6___bit equ 6 1295 ; line_number = 467 1296 ; bind _eeadr5 = _eeadr@5 1297 0000009b = _eeadr5___byte equ _eeadr 1298 00000005 = _eeadr5___bit equ 5 1299 ; line_number = 468 1300 ; bind _eeadr4 = _eeadr@4 1301 0000009b = _eeadr4___byte equ _eeadr 1302 00000004 = _eeadr4___bit equ 4 1303 ; line_number = 469 1304 ; bind _eeadr3 = _eeadr@3 1305 0000009b = _eeadr3___byte equ _eeadr 1306 00000003 = _eeadr3___bit equ 3 1307 ; line_number = 470 1308 ; bind _eeadr2 = _eeadr@2 1309 0000009b = _eeadr2___byte equ _eeadr 1310 00000002 = _eeadr2___bit equ 2 1311 ; line_number = 471 1312 ; bind _eeadr1 = _eeadr@1 1313 0000009b = _eeadr1___byte equ _eeadr 1314 00000001 = _eeadr1___bit equ 1 1315 ; line_number = 472 1316 ; bind _eeadr0 = _eeadr@0 1317 0000009b = _eeadr0___byte equ _eeadr 1318 00000000 = _eeadr0___bit equ 0 1319 1320 ; line_number = 474 1321 ; register _eecon1 = 1322 0000009c = _eecon1 equ 156 1323 ; line_number = 475 1324 ; bind _eepgd = _eecon1@7 1325 0000009c = _eepgd___byte equ _eecon1 1326 00000007 = _eepgd___bit equ 7 1327 ; line_number = 476 1328 ; bind _wrerr = _eecon1@3 1329 0000009c = _wrerr___byte equ _eecon1 1330 00000003 = _wrerr___bit equ 3 1331 ; line_number = 477 1332 ; bind _wren = _eecon1@2 1333 0000009c = _wren___byte equ _eecon1 1334 00000002 = _wren___bit equ 2 1335 ; line_number = 478 1336 ; bind _wr = _eecon1@1 1337 0000009c = _wr___byte equ _eecon1 1338 00000001 = _wr___bit equ 1 1339 ; line_number = 479 1340 ; bind _rd = _eecon1@0 1341 0000009c = _rd___byte equ _eecon1 1342 00000000 = _rd___bit equ 0 1343 1344 ; line_number = 481 1345 ; register _eecon2 = 1346 0000009d = _eecon2 equ 157 1347 1348 ; line_number = 483 1349 ; register _adresl = 1350 0000009e = _adresl equ 158 1351 1352 ; line_number = 485 1353 ; register _adcon1 = 1354 0000009f = _adcon1 equ 159 1355 ; line_number = 486 1356 ; bind _adcs2 = _adcon1@6 1357 0000009f = _adcs2___byte equ _adcon1 1358 00000006 = _adcs2___bit equ 6 1359 ; line_number = 487 1360 ; bind _adcs1 = _adcon1@5 1361 0000009f = _adcs1___byte equ _adcon1 1362 00000005 = _adcs1___bit equ 5 1363 ; line_number = 488 1364 ; bind _adcs0 = _adcon1@4 1365 0000009f = _adcs0___byte equ _adcon1 1366 00000004 = _adcs0___bit equ 4 1367 1368 ; # Data Bank 2 (0x100 - 0x17f): 1369 1370 ; buffer = 'io8' 1371 ; line_number = 6 1372 ; library _pic16f688 exited 1373 ; line_number = 7 1374 ; library clock20mhz entered 1375 ; # Copyright (c) 2004 by Wayne C. Gramlich 1376 ; # All rights reserved. 1377 1378 ; # This library defines the contstants {clock_rate}, {instruction_rate}, 1379 ; # and {clocks_per_instruction}. 1380 1381 ; # Define processor constants: 1382 ; buffer = 'clock20mhz' 1383 ; line_number = 9 1384 ; constant clock_rate = 20000000 1385 01312d00 = clock_rate equ 20000000 1386 ; line_number = 10 1387 ; constant clocks_per_instruction = 4 1388 00000004 = clocks_per_instruction equ 4 1389 ; line_number = 11 1390 ; constant instruction_rate = clock_rate / clocks_per_instruction 1391 004c4b40 = instruction_rate equ 5000000 1392 1393 1394 ; buffer = 'io8' 1395 ; line_number = 7 1396 ; library clock20mhz exited 1397 ; line_number = 8 1398 ; library _uart entered 1399 ; # Copyright (c) 2004 by Wayne C. Gramlich. 1400 ; # All rights reserved. 1401 1402 ; # This library contains some procedures for accessing the UART. 1403 1404 ; Delaying code generation for procedure _uart_byte_safe_get 1405 ; Delaying code generation for procedure _uart_byte_get 1406 ; Delaying code generation for procedure _uart_hex_put 1407 ; Delaying code generation for procedure _uart_nibble_put 1408 ; Delaying code generation for procedure _uart_space_put 1409 ; Delaying code generation for procedure _uart_crlf_put 1410 ; Delaying code generation for procedure _uart_byte_put 1411 1412 ; line_number = 8 1413 ; library _uart exited 1414 ; line_number = 9 1415 ; constant _eusart_clock = clock_rate 1416 01312d00 = _eusart_clock equ 20000000 1417 ; line_number = 10 1418 ; constant _eusart_factor = 4 1419 00000004 = _eusart_factor equ 4 1420 ; line_number = 11 1421 ; library _eusart entered 1422 1423 ; # Copyright (c) 2005 by Wayne C. Gramlich 1424 ; # All rights reserved. 1425 1426 ; # This library contains a bunch of definitions for the Enhanced Universal 1427 ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available 1428 ; # on many of the PIC microcontrollers. 1429 1430 ; # In order to use this module you have to get two constants defined 1431 ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}. 1432 ; # {_eusart_clock} should be set to the frequency oscillator for the chip. 1433 ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether 1434 ; # the {_brg16} and {_brgh} bits are set. Use the table below to select: 1435 ; # 1436 ; # _{brg16} {_brgh} _{eusart_factor} 1437 ; # 0 0 64 1438 ; # 0 1 16 1439 ; # 1 0 16 1440 ; # 1 1 4 1441 1442 ; # 2400 baud: 1443 ; buffer = '_eusart' 1444 ; line_number = 23 1445 ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1 1446 00000822 = _eusart_2400 equ 2082 1447 ; line_number = 24 1448 ; constant _eusart_2400_low = _eusart_2400 & 0xff 1449 00000022 = _eusart_2400_low equ 34 1450 ; line_number = 25 1451 ; constant _eusart_2400_high = _eusart_2400 >> 8 1452 00000008 = _eusart_2400_high equ 8 1453 ; line_number = 26 1454 ; constant _eusart_2400_index = 0 1455 00000000 = _eusart_2400_index equ 0 1456 ; # 4800 baud: 1457 ; line_number = 28 1458 ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1 1459 00000410 = _eusart_4800 equ 1040 1460 ; line_number = 29 1461 ; constant _eusart_4800_low = _eusart_4800 & 0xff 1462 00000010 = _eusart_4800_low equ 16 1463 ; line_number = 30 1464 ; constant _eusart_4800_high = _eusart_4800 >> 8 1465 00000004 = _eusart_4800_high equ 4 1466 ; line_number = 31 1467 ; constant _eusart_4800_index = 1 1468 00000001 = _eusart_4800_index equ 1 1469 ; # 9600 baud: 1470 ; line_number = 33 1471 ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1 1472 00000207 = _eusart_9600 equ 519 1473 ; line_number = 34 1474 ; constant _eusart_9600_low = _eusart_9600 & 0xff 1475 00000007 = _eusart_9600_low equ 7 1476 ; line_number = 35 1477 ; constant _eusart_9600_high = _eusart_9600 >> 8 1478 00000002 = _eusart_9600_high equ 2 1479 ; line_number = 36 1480 ; constant _eusart_9600_index = 2 1481 00000002 = _eusart_9600_index equ 2 1482 ; # 19200 baud: 1483 ; line_number = 38 1484 ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1 1485 00000103 = _eusart_19200 equ 259 1486 ; line_number = 39 1487 ; constant _eusart_19200_low = _eusart_19200 & 0xff 1488 00000003 = _eusart_19200_low equ 3 1489 ; line_number = 40 1490 ; constant _eusart_19200_high = _eusart_19200 >> 8 1491 00000001 = _eusart_19200_high equ 1 1492 ; line_number = 41 1493 ; constant _eusart_19200_index = 3 1494 00000003 = _eusart_19200_index equ 3 1495 ; # 38400 baud: 1496 ; line_number = 43 1497 ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1 1498 00000081 = _eusart_38400 equ 129 1499 ; line_number = 44 1500 ; constant _eusart_38400_low = _eusart_38400 & 0xff 1501 00000081 = _eusart_38400_low equ 129 1502 ; line_number = 45 1503 ; constant _eusart_38400_high = _eusart_38400 >> 8 1504 00000000 = _eusart_38400_high equ 0 1505 ; line_number = 46 1506 ; constant _eusart_38400_index = 4 1507 00000004 = _eusart_38400_index equ 4 1508 ; # 57600 baud: 1509 ; line_number = 48 1510 ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1 1511 00000055 = _eusart_57600 equ 85 1512 ; line_number = 49 1513 ; constant _eusart_57600_low = _eusart_57600 & 0xff 1514 00000055 = _eusart_57600_low equ 85 1515 ; line_number = 50 1516 ; constant _eusart_57600_high = _eusart_57600 >> 8 1517 00000000 = _eusart_57600_high equ 0 1518 ; line_number = 51 1519 ; constant _eusart_57600_index = 5 1520 00000005 = _eusart_57600_index equ 5 1521 ; # 115200 baud: 1522 ; line_number = 53 1523 ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1 1524 0000002a = _eusart_115200 equ 42 1525 ; line_number = 54 1526 ; constant _eusart_115200_low = _eusart_115200 & 0xff 1527 0000002a = _eusart_115200_low equ 42 1528 ; line_number = 55 1529 ; constant _eusart_115200_high = _eusart_115200 >> 8 1530 00000000 = _eusart_115200_high equ 0 1531 ; line_number = 56 1532 ; constant _eusart_115200_index = 6 1533 00000006 = _eusart_115200_index equ 6 1534 ; # 203400 baud: 1535 ; line_number = 58 1536 ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1 1537 00000014 = _eusart_230400 equ 20 1538 ; line_number = 59 1539 ; constant _eusart_230400_low = _eusart_230400 & 0xff 1540 00000014 = _eusart_230400_low equ 20 1541 ; line_number = 60 1542 ; constant _eusart_230400_high = _eusart_230400 >> 8 1543 00000000 = _eusart_230400_high equ 0 1544 ; line_number = 61 1545 ; constant _eusart_230400_index = 7 1546 00000007 = _eusart_230400_index equ 7 1547 ; # 406800 baud: 1548 ; line_number = 63 1549 ; constant _eusart_406800 = (_eusart_clock / (406800 * _eusart_factor)) - 1 1550 0000000b = _eusart_406800 equ 11 1551 ; line_number = 64 1552 ; constant _eusart_406800_low = _eusart_406800 & 0xff 1553 0000000b = _eusart_406800_low equ 11 1554 ; line_number = 65 1555 ; constant _eusart_406800_high = _eusart_406800 >> 8 1556 00000000 = _eusart_406800_high equ 0 1557 ; line_number = 66 1558 ; constant _eusart_406800_index = 8 1559 00000008 = _eusart_406800_index equ 8 1560 ; # 500000 baud: 1561 ; line_number = 68 1562 ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1 1563 00000009 = _eusart_500000 equ 9 1564 ; line_number = 69 1565 ; constant _eusart_500000_low = _eusart_500000 & 0xff 1566 00000009 = _eusart_500000_low equ 9 1567 ; line_number = 70 1568 ; constant _eusart_500000_high = _eusart_500000 >> 8 1569 00000000 = _eusart_500000_high equ 0 1570 ; line_number = 71 1571 ; constant _eusart_500000_index = 8 1572 00000008 = _eusart_500000_index equ 8 1573 ; # 62500 baud: 1574 ; line_number = 73 1575 ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1 1576 00000007 = _eusart_625000 equ 7 1577 ; line_number = 74 1578 ; constant _eusart_625000_low = _eusart_625000 & 0xff 1579 00000007 = _eusart_625000_low equ 7 1580 ; line_number = 75 1581 ; constant _eusart_625000_high = _eusart_625000 >> 8 1582 00000000 = _eusart_625000_high equ 0 1583 ; line_number = 76 1584 ; constant _eusart_625000_index = 9 1585 00000009 = _eusart_625000_index equ 9 1586 ; # 833333 baud: 1587 ; line_number = 78 1588 ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1 1589 00000005 = _eusart_833333 equ 5 1590 ; line_number = 79 1591 ; constant _eusart_833333_low = _eusart_833333 & 0xff 1592 00000005 = _eusart_833333_low equ 5 1593 ; line_number = 80 1594 ; constant _eusart_833333_high = _eusart_833333 >> 8 1595 00000000 = _eusart_833333_high equ 0 1596 ; line_number = 81 1597 ; constant _eusart_833333_index = 10 1598 0000000a = _eusart_833333_index equ 10 1599 ; # 1000000 baud (1MHz): 1600 ; line_number = 83 1601 ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1 1602 00000004 = _eusart_1000000 equ 4 1603 ; line_number = 84 1604 ; constant _eusart_1000000_low = _eusart_1000000 & 0xff 1605 00000004 = _eusart_1000000_low equ 4 1606 ; line_number = 85 1607 ; constant _eusart_1000000_high = _eusart_1000000 >> 8 1608 00000000 = _eusart_1000000_high equ 0 1609 ; line_number = 86 1610 ; constant _eusart_1000000_index = 11 1611 0000000b = _eusart_1000000_index equ 11 1612 1613 ; buffer = 'io8' 1614 ; line_number = 11 1615 ; library _eusart exited 1616 1617 1618 ; line_number = 15 1619 ; package pdip 1620 ; line_number = 16 1621 ; pin 1 = power_supply 1622 ; line_number = 17 1623 ; pin 2 = osc1 1624 ; line_number = 18 1625 ; pin 3 = ra4_in, name=io1, mask=io1_mask, bit=io1_bit 1626 00000005 = io1___byte equ _porta 1627 00000004 = io1___bit equ 4 1628 00000010 = io1_mask equ 16 1629 00000004 = io1_bit equ 4 1630 ; line_number = 19 1631 ; pin 4 = ra3_nc, name=nc1 1632 00000005 = nc1___byte equ _porta 1633 00000003 = nc1___bit equ 3 1634 ; line_number = 20 1635 ; pin 5 = rx, name=rx, bit=rx_bit 1636 00000007 = rx___byte equ _portc 1637 00000005 = rx___bit equ 5 1638 00000005 = rx_bit equ 5 1639 ; line_number = 21 1640 ; pin 6 = tx, name=tx, bit=tx_bit 1641 00000007 = tx___byte equ _portc 1642 00000004 = tx___bit equ 4 1643 00000004 = tx_bit equ 4 1644 ; line_number = 22 1645 ; pin 7 = rc3_in, name=io7, mask=io7_mask, bit=io7_bit 1646 00000007 = io7___byte equ _portc 1647 00000003 = io7___bit equ 3 1648 00000008 = io7_mask equ 8 1649 00000003 = io7_bit equ 3 1650 ; line_number = 23 1651 ; pin 8 = rc2_in, name=io6, mask=io6_mask, bit=io6_bit 1652 00000007 = io6___byte equ _portc 1653 00000002 = io6___bit equ 2 1654 00000004 = io6_mask equ 4 1655 00000002 = io6_bit equ 2 1656 ; line_number = 24 1657 ; pin 9 = rc1_in, name=io5, mask=io5_mask, bit=io5_bit 1658 00000007 = io5___byte equ _portc 1659 00000001 = io5___bit equ 1 1660 00000002 = io5_mask equ 2 1661 00000001 = io5_bit equ 1 1662 ; line_number = 25 1663 ; pin 10 = rc0_in, name=io4, mask=io4_mask, bit=io4_bit 1664 00000007 = io4___byte equ _portc 1665 00000000 = io4___bit equ 0 1666 00000001 = io4_mask equ 1 1667 00000000 = io4_bit equ 0 1668 ; line_number = 26 1669 ; pin 11 = ra2_in, name=io3, mask=io3_mask, bit=io3_bit 1670 00000005 = io3___byte equ _porta 1671 00000002 = io3___bit equ 2 1672 00000004 = io3_mask equ 4 1673 00000002 = io3_bit equ 2 1674 ; line_number = 27 1675 ; pin 12 = ra1_in, name=io2, mask=io2_mask, bit=io2_bit 1676 00000005 = io2___byte equ _porta 1677 00000001 = io2___bit equ 1 1678 00000002 = io2_mask equ 2 1679 00000001 = io2_bit equ 1 1680 ; line_number = 28 1681 ; pin 13 = ra0_in, name=io0, mask=io0_mask, bit=io0_bit 1682 00000005 = io0___byte equ _porta 1683 00000000 = io0___bit equ 0 1684 00000001 = io0_mask equ 1 1685 00000000 = io0_bit equ 0 1686 ; line_number = 29 1687 ; pin 14 = ground 1688 1689 ; line_number = 31 1690 ; global module_address byte 1691 00000023 = module_address equ globals___0+3 1692 ; line_number = 32 1693 ; global echo_discard bit 1694 0000006f = echo_discard___byte equ globals___0+79 1695 00000000 = echo_discard___bit equ 0 1696 ; line_number = 33 1697 ; global rx9d bit 1698 0000006f = rx9d___byte equ globals___0+79 1699 00000001 = rx9d___bit equ 1 1700 ; line_number = 34 1701 ; global id_index byte 1702 00000024 = id_index equ globals___0+4 1703 1704 ; line_number = 36 1705 ; origin 0 1706 0000 : org 0 1707 1708 ; line_number = 38 1709 ;info 38, 0 1710 ; procedure main 1711 0000 : main: 1712 ; Initialize some registers 1713 0000 019f clrf _adcon0 1714 0001 1683 bsf __rp0___byte, __rp0___bit 1715 0002 0191 clrf _ansel 1716 0003 3007 movlw 7 1717 0004 1283 bcf __rp0___byte, __rp0___bit 1718 0005 0099 movwf _cmcon0 1719 0006 303f movlw 63 1720 0007 1683 bsf __rp0___byte, __rp0___bit 1721 0008 0085 movwf _trisa 1722 0009 303f movlw 63 1723 000a 0087 movwf _trisc 1724 ; arguments_none 1725 ; line_number = 40 1726 ; returns_nothing 1727 1728 ; line_number = 42 1729 ; local command byte 1730 00000025 = main__command equ globals___0+5 1731 ; line_number = 43 1732 ; local transmit bit 1733 0000006f = main__transmit___byte equ globals___0+79 1734 00000002 = main__transmit___bit equ 2 1735 ; line_number = 44 1736 ; local result byte 1737 00000026 = main__result equ globals___0+6 1738 ; line_number = 45 1739 ; local mode byte 1740 00000027 = main__mode equ globals___0+7 1741 1742 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX) 1743 ; line_number = 47 1744 ; module_address := 8 1745 ;info 47, 11 1746 000b 3008 movlw 8 1747 000c 1283 bcf __rp0___byte, __rp0___bit 1748 000d 00a3 movwf module_address 1749 ; line_number = 48 1750 ; echo_discard := _true 1751 ;info 48, 14 1752 000e 146f bsf echo_discard___byte, echo_discard___bit 1753 1754 ; # Warm up the UART: 1755 ; line_number = 51 1756 ; _trisc@5 := _true 1757 ;info 51, 15 1758 00000087 = main__select__1___byte equ _trisc 1759 00000005 = main__select__1___bit equ 5 1760 000f 1683 bsf __rp0___byte, __rp0___bit 1761 0010 1687 bsf main__select__1___byte, main__select__1___bit 1762 ; line_number = 52 1763 ; _trisc@4 := _true 1764 ;info 52, 17 1765 00000087 = main__select__2___byte equ _trisc 1766 00000004 = main__select__2___bit equ 4 1767 0011 1607 bsf main__select__2___byte, main__select__2___bit 1768 1769 ; line_number = 54 1770 ; _txsta := 0 1771 ;info 54, 18 1772 0012 1283 bcf __rp0___byte, __rp0___bit 1773 0013 0196 clrf _txsta 1774 ; line_number = 55 1775 ; _tx9 := _true 1776 ;info 55, 20 1777 0014 1716 bsf _tx9___byte, _tx9___bit 1778 ; #_tx9 := _false 1779 ; line_number = 57 1780 ; _txen := _true 1781 ;info 57, 21 1782 0015 1696 bsf _txen___byte, _txen___bit 1783 ; line_number = 58 1784 ; _brgh := _true 1785 ;info 58, 22 1786 0016 1516 bsf _brgh___byte, _brgh___bit 1787 1788 ; line_number = 60 1789 ; _rcsta := 0 1790 ;info 60, 23 1791 0017 0197 clrf _rcsta 1792 ; line_number = 61 1793 ; _spen := _true 1794 ;info 61, 24 1795 0018 1797 bsf _spen___byte, _spen___bit 1796 ; line_number = 62 1797 ; _rx9 := _true 1798 ;info 62, 25 1799 0019 1717 bsf _rx9___byte, _rx9___bit 1800 ; #_rx9 := _false 1801 ; line_number = 64 1802 ; _cren := _true 1803 ;info 64, 26 1804 001a 1617 bsf _cren___byte, _cren___bit 1805 ; #_adden := _true 1806 ; line_number = 66 1807 ; _adden := _false 1808 ;info 66, 27 1809 001b 1197 bcf _adden___byte, _adden___bit 1810 1811 ; line_number = 68 1812 ; _baudctl := 0 1813 ;info 68, 28 1814 001c 0191 clrf _baudctl 1815 ; line_number = 69 1816 ; _brg16 := _true 1817 ;info 69, 29 1818 001d 1591 bsf _brg16___byte, _brg16___bit 1819 ; line_number = 70 1820 ; mode := 0 1821 ;info 70, 30 1822 001e 01a7 clrf main__mode 1823 ; line_number = 71 1824 ; id_index := 0 1825 ;info 71, 31 1826 001f 01a4 clrf id_index 1827 1828 ; #_spbrg := _eusart_19200_low 1829 ; #_spbrgh := _eusart_19200_high 1830 ; #_spbrg := _eusart_115200_low 1831 ; #_spbrgh := _eusart_115200_high 1832 ; #_spbrg := _eusart_230400_low 1833 ; #_spbrgh := _eusart_230400_high 1834 ; #_spbrg := _eusart_406800_low 1835 ; #_spbrgh := _eusart_406800_high 1836 ; line_number = 81 1837 ; _spbrg := _eusart_625000_low 1838 ;info 81, 32 1839 0020 3007 movlw 7 1840 0021 0093 movwf _spbrg 1841 ; line_number = 82 1842 ; _spbrgh := _eusart_625000_high 1843 ;info 82, 34 1844 0022 0192 clrf _spbrgh 1845 ; #_spbrg := _eusart_833333_low 1846 ; #_spbrgh := _eusart_833333_high 1847 1848 ; line_number = 86 1849 ; loop_forever start 1850 0023 : main__3: 1851 ; #command := _uart_byte_get() 1852 ; line_number = 88 1853 ; transmit := _false 1854 ;info 88, 35 1855 0023 116f bcf main__transmit___byte, main__transmit___bit 1856 ; line_number = 89 1857 ; rx9d := _false 1858 ;info 89, 36 1859 0024 10ef bcf rx9d___byte, rx9d___bit 1860 ; line_number = 90 1861 ; while !_rcif start 1862 0025 : main__4: 1863 ;info 90, 37 1864 ; =>bit_code_emit@symbol(): sym=_rcif 1865 ; 1TEST: Single test with code in skip slot 1866 0025 1e8c btfss _rcif___byte, _rcif___bit 1867 ; line_number = 91 1868 ; do_nothing 1869 ;info 91, 38 1870 0026 2825 goto main__4 1871 ; Recombine size1 = 0 || size2 = 0 1872 ; line_number = 90 1873 ; while !_rcif done 1874 ; line_number = 92 1875 ; if _rx9d start 1876 ;info 92, 39 1877 ; =>bit_code_emit@symbol(): sym=_rx9d 1878 ; 1TEST: Single test with code in skip slot 1879 0027 1817 btfsc _rx9d___byte, _rx9d___bit 1880 ; line_number = 93 1881 ; rx9d := _true 1882 ;info 93, 40 1883 0028 14ef bsf rx9d___byte, rx9d___bit 1884 ; Recombine size1 = 0 || size2 = 0 1885 ; line_number = 92 1886 ; if _rx9d done 1887 ; line_number = 94 1888 ; command := _rcreg 1889 ;info 94, 41 1890 0029 0814 movf _rcreg,w 1891 002a 00a5 movwf main__command 1892 1893 ; line_number = 96 1894 ; if rx9d start 1895 ;info 96, 43 1896 ; =>bit_code_emit@symbol(): sym=rx9d 1897 ; No 1TEST: true.size=11 false.size=179 1898 ; No 2TEST: true.size=11 false.size=179 1899 ; 2GOTO: Single test with two GOTO's 1900 002b 1cef btfss rx9d___byte, rx9d___bit 1901 002c 2839 goto main__48 1902 ; # We have an address bit: 1903 ; line_number = 98 1904 ; if command = module_address start 1905 ;info 98, 45 1906 ; Left minus Right 1907 002d 0823 movf module_address,w 1908 002e 0225 subwf main__command,w 1909 ; =>bit_code_emit@symbol(): sym=__z 1910 ; No 1TEST: true.size=4 false.size=1 1911 ; No 2TEST: true.size=4 false.size=1 1912 ; 2GOTO: Single test with two GOTO's 1913 002f 1d03 btfss __z___byte, __z___bit 1914 0030 2836 goto main__46 1915 ; # We have a match: 1916 ; line_number = 100 1917 ; _adden := _false 1918 ;info 100, 49 1919 0031 1197 bcf _adden___byte, _adden___bit 1920 ; line_number = 101 1921 ; result := 0x5a 1922 ;info 101, 50 1923 0032 305a movlw 90 1924 0033 00a6 movwf main__result 1925 ; line_number = 102 1926 ; transmit := _true 1927 ;info 102, 52 1928 0034 156f bsf main__transmit___byte, main__transmit___bit 1929 0035 2837 goto main__47 1930 ; 2GOTO: Starting code 2 1931 0036 : main__46: 1932 ; # We need to disable non-address reception: 1933 ; line_number = 105 1934 ; _adden := _true 1935 ;info 105, 54 1936 0036 1597 bsf _adden___byte, _adden___bit 1937 0037 : main__47: 1938 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1939 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1940 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1941 ; line_number = 98 1942 ; if command = module_address done 1943 ; line_number = 106 1944 ; mode := 0 1945 ;info 106, 55 1946 0037 01a7 clrf main__mode 1947 0038 28ec goto main__49 1948 ; 2GOTO: Starting code 2 1949 0039 : main__48: 1950 ; # We have a command: 1951 ; line_number = 109 1952 ; switch mode start 1953 ;info 109, 57 1954 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 1955 0039 3000 movlw main__44>>8 1956 003a 008a movwf __pclath 1957 003b 0827 movf main__mode,w 1958 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 1959 003c 3e3e addlw main__44 1960 003d 0082 movwf __pcl 1961 ; page_group 4 1962 003e : main__44: 1963 003e 2842 goto main__40 1964 003f 28d9 goto main__41 1965 0040 28e0 goto main__42 1966 0041 28e7 goto main__43 1967 ; line_number = 110 1968 ; case 0 1969 0042 : main__40: 1970 ; # Basic instruction decoding: 1971 ; line_number = 112 1972 ; switch command >> 6 start 1973 ;info 112, 66 1974 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 1975 0042 3000 movlw main__37>>8 1976 0043 008a movwf __pclath 1977 00000036 = main__38 equ globals___0+22 1978 0044 0e25 swapf main__command,w 1979 0045 00b6 movwf main__38 1980 0046 0cb6 rrf main__38,f 1981 0047 0c36 rrf main__38,w 1982 0048 3903 andlw 3 1983 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 1984 0049 3e4b addlw main__37 1985 004a 0082 movwf __pcl 1986 ; page_group 4 1987 004b : main__37: 1988 004b 284f goto main__35 1989 004c 28d8 goto main__39 1990 004d 28d8 goto main__39 1991 004e 28a6 goto main__36 1992 ; line_number = 113 1993 ; case 0 1994 004f : main__35: 1995 ; # 00xx xxxx: 1996 ; line_number = 115 1997 ; switch (command >> 3) & 7 start 1998 ;info 115, 79 1999 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2000 ; line_number = 116 2001 ; case_maximum 7 2002 004f 3000 movlw main__21>>8 2003 0050 008a movwf __pclath 2004 00000036 = main__22 equ globals___0+22 2005 0051 0c25 rrf main__command,w 2006 0052 00b6 movwf main__22 2007 0053 0cb6 rrf main__22,f 2008 0054 0c36 rrf main__22,w 2009 0055 3907 andlw 7 2010 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2011 0056 3e58 addlw main__21 2012 0057 0082 movwf __pcl 2013 ; page_group 8 2014 0058 : main__21: 2015 0058 2860 goto main__16 2016 0059 28a5 goto main__23 2017 005a 288b goto main__17 2018 005b 288c goto main__18 2019 005c 288d goto main__19 2020 005d 288d goto main__19 2021 005e 2898 goto main__20 2022 005f 2898 goto main__20 2023 ; line_number = 117 2024 ; case 0 2025 0060 : main__16: 2026 ; # 0000 0xxx: 2027 ; line_number = 119 2028 ; switch command & 7 start 2029 ;info 119, 96 2030 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2031 ; line_number = 147 2032 ; case_maximum 7 2033 0060 3000 movlw main__11>>8 2034 0061 008a movwf __pclath 2035 0062 3007 movlw 7 2036 0063 0525 andwf main__command,w 2037 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2038 0064 3e66 addlw main__11 2039 0065 0082 movwf __pcl 2040 ; page_group 8 2041 0066 : main__11: 2042 0066 286e goto main__5 2043 0067 2872 goto main__6 2044 0068 2878 goto main__7 2045 0069 287c goto main__8 2046 006a 2882 goto main__9 2047 006b 2886 goto main__10 2048 006c 288a goto main__12 2049 006d 288a goto main__12 2050 ; line_number = 120 2051 ; case 0 2052 006e : main__5: 2053 ; # 0000 0000 (Digital8_Read): 2054 ; line_number = 122 2055 ; result := digital_read() 2056 ;info 122, 110 2057 006e 213a call digital_read 2058 006f 00a6 movwf main__result 2059 ; line_number = 123 2060 ; transmit := _true 2061 ;info 123, 112 2062 0070 156f bsf main__transmit___byte, main__transmit___bit 2063 0071 288a goto main__12 2064 ; line_number = 124 2065 ; case 1 2066 0072 : main__6: 2067 ; # 0000 0001 (Digital8_Write): 2068 ; line_number = 126 2069 ; result := 0x8a 2070 ;info 126, 114 2071 0072 308a movlw 138 2072 0073 00a6 movwf main__result 2073 ; line_number = 127 2074 ; transmit := _true 2075 ;info 127, 116 2076 0074 156f bsf main__transmit___byte, main__transmit___bit 2077 ; line_number = 128 2078 ; mode := 1 2079 ;info 128, 117 2080 0075 3001 movlw 1 2081 0076 00a7 movwf main__mode 2082 0077 288a goto main__12 2083 ; line_number = 129 2084 ; case 2 2085 0078 : main__7: 2086 ; # 0000 0010 (Direction_Read): 2087 ; line_number = 131 2088 ; result := direction_read() 2089 ;info 131, 120 2090 0078 2169 call direction_read 2091 0079 00a6 movwf main__result 2092 ; line_number = 132 2093 ; transmit := _true 2094 ;info 132, 122 2095 007a 156f bsf main__transmit___byte, main__transmit___bit 2096 007b 288a goto main__12 2097 ; line_number = 133 2098 ; case 3 2099 007c : main__8: 2100 ; # 0000 0011 (Direction_Set): 2101 ; line_number = 135 2102 ; mode := 2 2103 ;info 135, 124 2104 007c 3002 movlw 2 2105 007d 00a7 movwf main__mode 2106 ; line_number = 136 2107 ; result := 0x8b 2108 ;info 136, 126 2109 007e 308b movlw 139 2110 007f 00a6 movwf main__result 2111 ; line_number = 137 2112 ; transmit := _true 2113 ;info 137, 128 2114 0080 156f bsf main__transmit___byte, main__transmit___bit 2115 0081 288a goto main__12 2116 ; line_number = 138 2117 ; case 4 2118 0082 : main__9: 2119 ; # 0000 0100 (Analog_Read): 2120 ; line_number = 140 2121 ; result := analog_read() 2122 ;info 140, 130 2123 0082 2113 call analog_read 2124 0083 00a6 movwf main__result 2125 ; line_number = 141 2126 ; transmit := _true 2127 ;info 141, 132 2128 0084 156f bsf main__transmit___byte, main__transmit___bit 2129 0085 288a goto main__12 2130 ; line_number = 142 2131 ; case 5 2132 0086 : main__10: 2133 ; # 0000 0100 (Analog_Set): 2134 ; line_number = 144 2135 ; mode := 3 2136 ;info 144, 134 2137 0086 3003 movlw 3 2138 0087 00a7 movwf main__mode 2139 ; line_number = 145 2140 ; result := 0 2141 ;info 145, 136 2142 0088 01a6 clrf main__result 2143 ; line_number = 146 2144 ; transmit := _true 2145 ;info 146, 137 2146 0089 156f bsf main__transmit___byte, main__transmit___bit 2147 008a : main__12: 2148 ; line_number = 119 2149 ; switch command & 7 done 2150 008a 28a5 goto main__23 2151 ; line_number = 148 2152 ; case 2 2153 008b : main__17: 2154 ; # 0001 0ccc (Analog8_Read): 2155 ; line_number = 150 2156 ; do_nothing 2157 ;info 150, 139 2158 008b 28a5 goto main__23 2159 ; line_number = 151 2160 ; case 3 2161 008c : main__18: 2162 ; # 0001 1ccc (Analog10_Read): 2163 ; line_number = 153 2164 ; do_nothing 2165 ;info 153, 140 2166 008c 28a5 goto main__23 2167 ; line_number = 154 2168 ; case 4, 5 2169 008d : main__19: 2170 ; # 0010 dddd (Low_Set): 2171 ; line_number = 156 2172 ; result := digital_read() 2173 ;info 156, 141 2174 008d 213a call digital_read 2175 008e 00a6 movwf main__result 2176 ; line_number = 157 2177 ; transmit := _true 2178 ;info 157, 143 2179 008f 156f bsf main__transmit___byte, main__transmit___bit 2180 ; line_number = 158 2181 ; call digital_set(result & 0xf0 | command & 0xf) 2182 ;info 158, 144 2183 00000036 = main__13 equ globals___0+22 2184 0090 30f0 movlw 240 2185 0091 0526 andwf main__result,w 2186 0092 00b6 movwf main__13 2187 0093 300f movlw 15 2188 0094 0525 andwf main__command,w 2189 0095 0436 iorwf main__13,w 2190 0096 2151 call digital_set 2191 0097 28a5 goto main__23 2192 ; line_number = 159 2193 ; case 6, 7 2194 0098 : main__20: 2195 ; # 0011 dddd (High_Set): 2196 ; line_number = 161 2197 ; result := digital_read() 2198 ;info 161, 152 2199 0098 213a call digital_read 2200 0099 00a6 movwf main__result 2201 ; line_number = 162 2202 ; transmit := _true 2203 ;info 162, 154 2204 009a 156f bsf main__transmit___byte, main__transmit___bit 2205 ; line_number = 163 2206 ; call digital_set(result & 0xf | (command & 0xf) << 4) 2207 ;info 163, 155 2208 00000036 = main__14 equ globals___0+22 2209 009b 300f movlw 15 2210 009c 0526 andwf main__result,w 2211 009d 00b6 movwf main__14 2212 00000037 = main__15 equ globals___0+23 2213 009e 300f movlw 15 2214 009f 0525 andwf main__command,w 2215 00a0 00b7 movwf main__15 2216 00a1 0eb7 swapf main__15,f 2217 00a2 39f0 andlw 240 2218 00a3 0436 iorwf main__14,w 2219 00a4 2151 call digital_set 2220 00a5 : main__23: 2221 ; line_number = 115 2222 ; switch (command >> 3) & 7 done 2223 00a5 28d8 goto main__39 2224 ; line_number = 164 2225 ; case 3 2226 00a6 : main__36: 2227 ; # 11xx xxxx: 2228 ; line_number = 166 2229 ; switch (command >> 3) & 7 start 2230 ;info 166, 166 2231 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2232 00a6 3000 movlw main__32>>8 2233 00a7 008a movwf __pclath 2234 00000036 = main__33 equ globals___0+22 2235 00a8 0c25 rrf main__command,w 2236 00a9 00b6 movwf main__33 2237 00aa 0cb6 rrf main__33,f 2238 00ab 0c36 rrf main__33,w 2239 00ac 3907 andlw 7 2240 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2241 00ad 3eaf addlw main__32 2242 00ae 0082 movwf __pcl 2243 ; page_group 8 2244 00af : main__32: 2245 00af 28d8 goto main__34 2246 00b0 28d8 goto main__34 2247 00b1 28d8 goto main__34 2248 00b2 28d8 goto main__34 2249 00b3 28d8 goto main__34 2250 00b4 28d8 goto main__34 2251 00b5 28d8 goto main__34 2252 00b6 28b7 goto main__31 2253 ; line_number = 167 2254 ; case 7 2255 00b7 : main__31: 2256 ; # 1111 1xxx: 2257 ; line_number = 169 2258 ; switch command & 7 start 2259 ;info 169, 183 2260 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2261 00b7 3000 movlw main__29>>8 2262 00b8 008a movwf __pclath 2263 00b9 3007 movlw 7 2264 00ba 0525 andwf main__command,w 2265 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2266 00bb 3ebd addlw main__29 2267 00bc 0082 movwf __pcl 2268 ; page_group 8 2269 00bd : main__29: 2270 00bd 28d8 goto main__30 2271 00be 28d8 goto main__30 2272 00bf 28d8 goto main__30 2273 00c0 28d8 goto main__30 2274 00c1 28c5 goto main__25 2275 00c2 28c6 goto main__26 2276 00c3 28d1 goto main__27 2277 00c4 28d5 goto main__28 2278 ; line_number = 170 2279 ; case 4 2280 00c5 : main__25: 2281 ; # 1111 1100 (Address_Set) 2282 00c5 28d8 goto main__30 2283 ; line_number = 172 2284 ; case 5 2285 00c6 : main__26: 2286 ; # 1111 1101 (Id_Next) 2287 ; line_number = 174 2288 ; transmit := _true 2289 ;info 174, 198 2290 00c6 156f bsf main__transmit___byte, main__transmit___bit 2291 ; line_number = 175 2292 ; result := 0 2293 ;info 175, 199 2294 00c7 01a6 clrf main__result 2295 ; line_number = 176 2296 ; if id_index < id.size start 2297 ;info 176, 200 2298 00c8 3013 movlw 19 2299 00c9 0224 subwf id_index,w 2300 ; =>bit_code_emit@symbol(): sym=__c 2301 ; No 1TEST: true.size=0 false.size=4 2302 ; No 2TEST: true.size=0 false.size=4 2303 ; 1GOTO: Single test with GOTO 2304 00ca 1803 btfsc __c___byte, __c___bit 2305 00cb 28d0 goto main__24 2306 ; line_number = 177 2307 ; result := id[id_index] 2308 ;info 177, 204 2309 00cc 0824 movf id_index,w 2310 00cd 20f2 call id 2311 00ce 00a6 movwf main__result 2312 ; line_number = 178 2313 ; id_index := id_index + 1 2314 ;info 178, 207 2315 00cf 0aa4 incf id_index,f 2316 00d0 : main__24: 2317 ; Recombine size1 = 0 || size2 = 0 2318 ; line_number = 176 2319 ; if id_index < id.size done 2320 ; #result := id_index 2321 00d0 28d8 goto main__30 2322 ; line_number = 180 2323 ; case 6 2324 00d1 : main__27: 2325 ; # 1111 1110 (Id_Start) 2326 ; line_number = 182 2327 ; id_index := 0 2328 ;info 182, 209 2329 00d1 01a4 clrf id_index 2330 ; line_number = 183 2331 ; result := 0 2332 ;info 183, 210 2333 00d2 01a6 clrf main__result 2334 ; line_number = 184 2335 ; transmit := _true 2336 ;info 184, 211 2337 00d3 156f bsf main__transmit___byte, main__transmit___bit 2338 00d4 28d8 goto main__30 2339 ; line_number = 185 2340 ; case 7 2341 00d5 : main__28: 2342 ; # 1111 1111 (Deselect): 2343 ; line_number = 187 2344 ; result := 0 2345 ;info 187, 213 2346 00d5 01a6 clrf main__result 2347 ; line_number = 188 2348 ; transmit := _true 2349 ;info 188, 214 2350 00d6 156f bsf main__transmit___byte, main__transmit___bit 2351 ; line_number = 189 2352 ; _adden := _true 2353 ;info 189, 215 2354 00d7 1597 bsf _adden___byte, _adden___bit 2355 00d8 : main__30: 2356 ; line_number = 169 2357 ; switch command & 7 done 2358 00d8 : main__34: 2359 ; line_number = 166 2360 ; switch (command >> 3) & 7 done 2361 00d8 : main__39: 2362 ; line_number = 112 2363 ; switch command >> 6 done 2364 00d8 28ec goto main__45 2365 ; line_number = 190 2366 ; case 1 2367 00d9 : main__41: 2368 ; # Digital8Write 2369 ; line_number = 192 2370 ; call digital_set(command) 2371 ;info 192, 217 2372 00d9 0825 movf main__command,w 2373 00da 2151 call digital_set 2374 ; line_number = 193 2375 ; result := digital_read() 2376 ;info 193, 219 2377 00db 213a call digital_read 2378 00dc 00a6 movwf main__result 2379 ; line_number = 194 2380 ; transmit := _true 2381 ;info 194, 221 2382 00dd 156f bsf main__transmit___byte, main__transmit___bit 2383 ; line_number = 195 2384 ; mode := 0 2385 ;info 195, 222 2386 00de 01a7 clrf main__mode 2387 00df 28ec goto main__45 2388 ; line_number = 196 2389 ; case 2 2390 00e0 : main__42: 2391 ; # Direction_Set: 2392 ; line_number = 198 2393 ; call direction_set(command) 2394 ;info 198, 224 2395 00e0 0825 movf main__command,w 2396 00e1 2184 call direction_set 2397 ; line_number = 199 2398 ; result := 0x8c 2399 ;info 199, 226 2400 00e2 308c movlw 140 2401 00e3 00a6 movwf main__result 2402 ; line_number = 200 2403 ; transmit := _true 2404 ;info 200, 228 2405 00e4 156f bsf main__transmit___byte, main__transmit___bit 2406 ; line_number = 201 2407 ; mode := 0 2408 ;info 201, 229 2409 00e5 01a7 clrf main__mode 2410 00e6 28ec goto main__45 2411 ; line_number = 202 2412 ; case 3 2413 00e7 : main__43: 2414 ; # Analog_Set: 2415 ; line_number = 204 2416 ; call analog_set(command) 2417 ;info 204, 231 2418 00e7 0825 movf main__command,w 2419 00e8 2128 call analog_set 2420 ; line_number = 205 2421 ; result := 0 2422 ;info 205, 233 2423 00e9 01a6 clrf main__result 2424 ; line_number = 206 2425 ; transmit := _true 2426 ;info 206, 234 2427 00ea 156f bsf main__transmit___byte, main__transmit___bit 2428 ; line_number = 207 2429 ; mode := 0 2430 ;info 207, 235 2431 00eb 01a7 clrf main__mode 2432 2433 00ec : main__45: 2434 ; line_number = 109 2435 ; switch mode done 2436 00ec : main__49: 2437 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2438 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2439 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2440 ; line_number = 96 2441 ; if rx9d done 2442 ; #loop_exactly 10 2443 ; # delay 200 2444 ; # do_nothing 2445 2446 ; line_number = 213 2447 ; if transmit start 2448 ;info 213, 236 2449 ; =>bit_code_emit@symbol(): sym=main__transmit 2450 ; No 1TEST: true.size=3 false.size=0 2451 ; No 2TEST: true.size=3 false.size=0 2452 ; 1GOTO: Single test with GOTO 2453 00ec 1d6f btfss main__transmit___byte, main__transmit___bit 2454 00ed 28f1 goto main__50 2455 ; line_number = 214 2456 ; call _uart_byte_put(result) 2457 ;info 214, 238 2458 00ee 0826 movf main__result,w 2459 00ef 21d0 call _uart_byte_put 2460 2461 ; # Dispose of echoed command in buffer: 2462 ; line_number = 217 2463 ; call _uart_byte_get() 2464 ;info 217, 240 2465 00f0 21b1 call _uart_byte_get 2466 2467 2468 ; Recombine size1 = 0 || size2 = 0 2469 00f1 : main__50: 2470 ; line_number = 213 2471 ; if transmit done 2472 ; line_number = 86 2473 ; loop_forever wrap-up 2474 00f1 2823 goto main__3 2475 ; line_number = 86 2476 ; loop_forever done 2477 ; delay after procedure statements=non-uniform 2478 2479 2480 2481 2482 ; line_number = 220 2483 ; string id = "\16,0,8,1,3,5\IO8-A\7\Gramson" start 2484 ; id = '\16,0,8,1,3,5\IO8-A\7\Gramson' 2485 00f2 : id: 2486 ; Temporarily save index into FSR 2487 00f2 0084 movwf __fsr 2488 ; Initialize PCLATH to point to this code page 2489 00f3 3001 movlw id___base>>8 2490 00f4 008a movwf __pclath 2491 ; Restore index from FSR 2492 00f5 0804 movf __fsr,w 2493 00f6 3e00 addlw id___base 2494 ; Index to the correct return value 2495 00f7 0082 movwf __pcl 2496 ; page_group 19 2497 ; Add 8 NOP's until start of new page 2498 00f8 0000 nop 2499 00f9 0000 nop 2500 00fa 0000 nop 2501 00fb 0000 nop 2502 00fc 0000 nop 2503 00fd 0000 nop 2504 00fe 0000 nop 2505 00ff 0000 nop 2506 0100 : id___base: 2507 0100 3410 retlw 16 2508 0101 3400 retlw 0 2509 0102 3408 retlw 8 2510 0103 3401 retlw 1 2511 0104 3403 retlw 3 2512 0105 3405 retlw 5 2513 0106 3449 retlw 73 2514 0107 344f retlw 79 2515 0108 3438 retlw 56 2516 0109 342d retlw 45 2517 010a 3441 retlw 65 2518 010b 3407 retlw 7 2519 010c 3447 retlw 71 2520 010d 3472 retlw 114 2521 010e 3461 retlw 97 2522 010f 346d retlw 109 2523 0110 3473 retlw 115 2524 0111 346f retlw 111 2525 0112 346e retlw 110 2526 ; line_number = 220 2527 ; string id = "\16,0,8,1,3,5\IO8-A\7\Gramson" start 2528 2529 ; line_number = 222 2530 ;info 222, 275 2531 ; procedure analog_read 2532 0113 : analog_read: 2533 ; arguments_none 2534 ; line_number = 224 2535 ; returns byte 2536 2537 ; # This procedure will return the analog selection bits. 2538 2539 ; line_number = 228 2540 ; local analog byte 2541 00000028 = analog_read__analog equ globals___0+8 2542 2543 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2544 ; line_number = 230 2545 ; analog := 0 2546 ;info 230, 275 2547 0113 01a8 clrf analog_read__analog 2548 ; line_number = 231 2549 ; if _ansel@0 start 2550 ;info 231, 276 2551 00000091 = analog_read__select__2___byte equ _ansel 2552 00000000 = analog_read__select__2___bit equ 0 2553 ; =>bit_code_emit@symbol(): sym=analog_read__select__2 2554 ; 1TEST: Single test with code in skip slot 2555 0114 1683 bsf __rp0___byte, __rp0___bit 2556 0115 1811 btfsc analog_read__select__2___byte, analog_read__select__2___bit 2557 ; line_number = 232 2558 ; analog@0 := _true 2559 ;info 232, 278 2560 00000028 = analog_read__select__1___byte equ analog_read__analog 2561 00000000 = analog_read__select__1___bit equ 0 2562 0116 1428 bsf analog_read__select__1___byte, analog_read__select__1___bit 2563 ; Recombine size1 = 0 || size2 = 0 2564 ; line_number = 231 2565 ; if _ansel@0 done 2566 ; line_number = 233 2567 ; if _ansel@1 start 2568 ;info 233, 279 2569 00000091 = analog_read__select__4___byte equ _ansel 2570 00000001 = analog_read__select__4___bit equ 1 2571 ; =>bit_code_emit@symbol(): sym=analog_read__select__4 2572 ; 1TEST: Single test with code in skip slot 2573 0117 1891 btfsc analog_read__select__4___byte, analog_read__select__4___bit 2574 ; line_number = 234 2575 ; analog@1 := _true 2576 ;info 234, 280 2577 00000028 = analog_read__select__3___byte equ analog_read__analog 2578 00000001 = analog_read__select__3___bit equ 1 2579 0118 14a8 bsf analog_read__select__3___byte, analog_read__select__3___bit 2580 ; Recombine size1 = 0 || size2 = 0 2581 ; line_number = 233 2582 ; if _ansel@1 done 2583 ; line_number = 235 2584 ; if _ansel@2 start 2585 ;info 235, 281 2586 00000091 = analog_read__select__6___byte equ _ansel 2587 00000002 = analog_read__select__6___bit equ 2 2588 ; =>bit_code_emit@symbol(): sym=analog_read__select__6 2589 ; 1TEST: Single test with code in skip slot 2590 0119 1911 btfsc analog_read__select__6___byte, analog_read__select__6___bit 2591 ; line_number = 236 2592 ; analog@2 := _true 2593 ;info 236, 282 2594 00000028 = analog_read__select__5___byte equ analog_read__analog 2595 00000002 = analog_read__select__5___bit equ 2 2596 011a 1528 bsf analog_read__select__5___byte, analog_read__select__5___bit 2597 ; Recombine size1 = 0 || size2 = 0 2598 ; line_number = 235 2599 ; if _ansel@2 done 2600 ; line_number = 237 2601 ; if _ansel@3 start 2602 ;info 237, 283 2603 00000091 = analog_read__select__8___byte equ _ansel 2604 00000003 = analog_read__select__8___bit equ 3 2605 ; =>bit_code_emit@symbol(): sym=analog_read__select__8 2606 ; 1TEST: Single test with code in skip slot 2607 011b 1991 btfsc analog_read__select__8___byte, analog_read__select__8___bit 2608 ; line_number = 238 2609 ; analog@3 := _true 2610 ;info 238, 284 2611 00000028 = analog_read__select__7___byte equ analog_read__analog 2612 00000003 = analog_read__select__7___bit equ 3 2613 011c 15a8 bsf analog_read__select__7___byte, analog_read__select__7___bit 2614 ; Recombine size1 = 0 || size2 = 0 2615 ; line_number = 237 2616 ; if _ansel@3 done 2617 ; line_number = 239 2618 ; if _ansel@4 start 2619 ;info 239, 285 2620 00000091 = analog_read__select__10___byte equ _ansel 2621 00000004 = analog_read__select__10___bit equ 4 2622 ; =>bit_code_emit@symbol(): sym=analog_read__select__10 2623 ; 1TEST: Single test with code in skip slot 2624 011d 1a11 btfsc analog_read__select__10___byte, analog_read__select__10___bit 2625 ; line_number = 240 2626 ; analog@4 := _true 2627 ;info 240, 286 2628 00000028 = analog_read__select__9___byte equ analog_read__analog 2629 00000004 = analog_read__select__9___bit equ 4 2630 011e 1628 bsf analog_read__select__9___byte, analog_read__select__9___bit 2631 ; Recombine size1 = 0 || size2 = 0 2632 ; line_number = 239 2633 ; if _ansel@4 done 2634 ; line_number = 241 2635 ; if _ansel@5 start 2636 ;info 241, 287 2637 00000091 = analog_read__select__12___byte equ _ansel 2638 00000005 = analog_read__select__12___bit equ 5 2639 ; =>bit_code_emit@symbol(): sym=analog_read__select__12 2640 ; 1TEST: Single test with code in skip slot 2641 011f 1a91 btfsc analog_read__select__12___byte, analog_read__select__12___bit 2642 ; line_number = 242 2643 ; analog@5 := _true 2644 ;info 242, 288 2645 00000028 = analog_read__select__11___byte equ analog_read__analog 2646 00000005 = analog_read__select__11___bit equ 5 2647 0120 16a8 bsf analog_read__select__11___byte, analog_read__select__11___bit 2648 ; Recombine size1 = 0 || size2 = 0 2649 ; line_number = 241 2650 ; if _ansel@5 done 2651 ; line_number = 243 2652 ; if _ansel@6 start 2653 ;info 243, 289 2654 00000091 = analog_read__select__14___byte equ _ansel 2655 00000006 = analog_read__select__14___bit equ 6 2656 ; =>bit_code_emit@symbol(): sym=analog_read__select__14 2657 ; 1TEST: Single test with code in skip slot 2658 0121 1b11 btfsc analog_read__select__14___byte, analog_read__select__14___bit 2659 ; line_number = 244 2660 ; analog@6 := _true 2661 ;info 244, 290 2662 00000028 = analog_read__select__13___byte equ analog_read__analog 2663 00000006 = analog_read__select__13___bit equ 6 2664 0122 1728 bsf analog_read__select__13___byte, analog_read__select__13___bit 2665 ; Recombine size1 = 0 || size2 = 0 2666 ; line_number = 243 2667 ; if _ansel@6 done 2668 ; line_number = 245 2669 ; if _ansel@7 start 2670 ;info 245, 291 2671 00000091 = analog_read__select__16___byte equ _ansel 2672 00000007 = analog_read__select__16___bit equ 7 2673 ; =>bit_code_emit@symbol(): sym=analog_read__select__16 2674 ; 1TEST: Single test with code in skip slot 2675 0123 1b91 btfsc analog_read__select__16___byte, analog_read__select__16___bit 2676 ; line_number = 246 2677 ; analog@7 := _true 2678 ;info 246, 292 2679 00000028 = analog_read__select__15___byte equ analog_read__analog 2680 00000007 = analog_read__select__15___bit equ 7 2681 0124 17a8 bsf analog_read__select__15___byte, analog_read__select__15___bit 2682 ; Recombine size1 = 0 || size2 = 0 2683 ; line_number = 245 2684 ; if _ansel@7 done 2685 ; line_number = 247 2686 ; return analog start 2687 ; line_number = 247 2688 ;info 247, 293 2689 0125 1283 bcf __rp0___byte, __rp0___bit 2690 0126 0828 movf analog_read__analog,w 2691 0127 0008 return 2692 ; line_number = 247 2693 ; return analog done 2694 2695 2696 ; delay after procedure statements=non-uniform 2697 2698 2699 2700 2701 ; line_number = 250 2702 ;info 250, 296 2703 ; procedure analog_set 2704 0128 : analog_set: 2705 ; Last argument is sitting in W; save into argument variable 2706 0128 00a9 movwf analog_set__analog 2707 ; delay=4294967295 2708 ; line_number = 251 2709 ; argument analog byte 2710 00000029 = analog_set__analog equ globals___0+9 2711 ; line_number = 252 2712 ; returns_nothing 2713 2714 ; # This procedure will set the analog inputs to be equal to {analog}. 2715 2716 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2717 ; line_number = 256 2718 ; if analog@0 start 2719 ;info 256, 297 2720 00000029 = analog_set__select__2___byte equ analog_set__analog 2721 00000000 = analog_set__select__2___bit equ 0 2722 ; =>bit_code_emit@symbol(): sym=analog_set__select__2 2723 ; 1TEST: Single test with code in skip slot 2724 0129 1829 btfsc analog_set__select__2___byte, analog_set__select__2___bit 2725 ; line_number = 257 2726 ; _ansel@0 := _true 2727 ;info 257, 298 2728 00000091 = analog_set__select__1___byte equ _ansel 2729 00000000 = analog_set__select__1___bit equ 0 2730 012a 1411 bsf analog_set__select__1___byte, analog_set__select__1___bit 2731 ; Recombine size1 = 0 || size2 = 0 2732 ; line_number = 256 2733 ; if analog@0 done 2734 ; line_number = 258 2735 ; if analog@1 start 2736 ;info 258, 299 2737 00000029 = analog_set__select__4___byte equ analog_set__analog 2738 00000001 = analog_set__select__4___bit equ 1 2739 ; =>bit_code_emit@symbol(): sym=analog_set__select__4 2740 ; 1TEST: Single test with code in skip slot 2741 012b 18a9 btfsc analog_set__select__4___byte, analog_set__select__4___bit 2742 ; line_number = 259 2743 ; _ansel@1 := _true 2744 ;info 259, 300 2745 00000091 = analog_set__select__3___byte equ _ansel 2746 00000001 = analog_set__select__3___bit equ 1 2747 012c 1491 bsf analog_set__select__3___byte, analog_set__select__3___bit 2748 ; Recombine size1 = 0 || size2 = 0 2749 ; line_number = 258 2750 ; if analog@1 done 2751 ; line_number = 260 2752 ; if analog@2 start 2753 ;info 260, 301 2754 00000029 = analog_set__select__6___byte equ analog_set__analog 2755 00000002 = analog_set__select__6___bit equ 2 2756 ; =>bit_code_emit@symbol(): sym=analog_set__select__6 2757 ; 1TEST: Single test with code in skip slot 2758 012d 1929 btfsc analog_set__select__6___byte, analog_set__select__6___bit 2759 ; line_number = 261 2760 ; _ansel@2 := _true 2761 ;info 261, 302 2762 00000091 = analog_set__select__5___byte equ _ansel 2763 00000002 = analog_set__select__5___bit equ 2 2764 012e 1511 bsf analog_set__select__5___byte, analog_set__select__5___bit 2765 ; Recombine size1 = 0 || size2 = 0 2766 ; line_number = 260 2767 ; if analog@2 done 2768 ; line_number = 262 2769 ; if analog@3 start 2770 ;info 262, 303 2771 00000029 = analog_set__select__8___byte equ analog_set__analog 2772 00000003 = analog_set__select__8___bit equ 3 2773 ; =>bit_code_emit@symbol(): sym=analog_set__select__8 2774 ; 1TEST: Single test with code in skip slot 2775 012f 19a9 btfsc analog_set__select__8___byte, analog_set__select__8___bit 2776 ; line_number = 263 2777 ; _ansel@3 := _true 2778 ;info 263, 304 2779 00000091 = analog_set__select__7___byte equ _ansel 2780 00000003 = analog_set__select__7___bit equ 3 2781 0130 1591 bsf analog_set__select__7___byte, analog_set__select__7___bit 2782 ; Recombine size1 = 0 || size2 = 0 2783 ; line_number = 262 2784 ; if analog@3 done 2785 ; line_number = 264 2786 ; if analog@4 start 2787 ;info 264, 305 2788 00000029 = analog_set__select__10___byte equ analog_set__analog 2789 00000004 = analog_set__select__10___bit equ 4 2790 ; =>bit_code_emit@symbol(): sym=analog_set__select__10 2791 ; 1TEST: Single test with code in skip slot 2792 0131 1a29 btfsc analog_set__select__10___byte, analog_set__select__10___bit 2793 ; line_number = 265 2794 ; _ansel@4 := _true 2795 ;info 265, 306 2796 00000091 = analog_set__select__9___byte equ _ansel 2797 00000004 = analog_set__select__9___bit equ 4 2798 0132 1611 bsf analog_set__select__9___byte, analog_set__select__9___bit 2799 ; Recombine size1 = 0 || size2 = 0 2800 ; line_number = 264 2801 ; if analog@4 done 2802 ; line_number = 266 2803 ; if analog@5 start 2804 ;info 266, 307 2805 00000029 = analog_set__select__12___byte equ analog_set__analog 2806 00000005 = analog_set__select__12___bit equ 5 2807 ; =>bit_code_emit@symbol(): sym=analog_set__select__12 2808 ; 1TEST: Single test with code in skip slot 2809 0133 1aa9 btfsc analog_set__select__12___byte, analog_set__select__12___bit 2810 ; line_number = 267 2811 ; _ansel@5 := _true 2812 ;info 267, 308 2813 00000091 = analog_set__select__11___byte equ _ansel 2814 00000005 = analog_set__select__11___bit equ 5 2815 0134 1691 bsf analog_set__select__11___byte, analog_set__select__11___bit 2816 ; Recombine size1 = 0 || size2 = 0 2817 ; line_number = 266 2818 ; if analog@5 done 2819 ; line_number = 268 2820 ; if analog@6 start 2821 ;info 268, 309 2822 00000029 = analog_set__select__14___byte equ analog_set__analog 2823 00000006 = analog_set__select__14___bit equ 6 2824 ; =>bit_code_emit@symbol(): sym=analog_set__select__14 2825 ; 1TEST: Single test with code in skip slot 2826 0135 1b29 btfsc analog_set__select__14___byte, analog_set__select__14___bit 2827 ; line_number = 269 2828 ; _ansel@6 := _true 2829 ;info 269, 310 2830 00000091 = analog_set__select__13___byte equ _ansel 2831 00000006 = analog_set__select__13___bit equ 6 2832 0136 1711 bsf analog_set__select__13___byte, analog_set__select__13___bit 2833 ; Recombine size1 = 0 || size2 = 0 2834 ; line_number = 268 2835 ; if analog@6 done 2836 ; line_number = 270 2837 ; if analog@7 start 2838 ;info 270, 311 2839 00000029 = analog_set__select__16___byte equ analog_set__analog 2840 00000007 = analog_set__select__16___bit equ 7 2841 ; =>bit_code_emit@symbol(): sym=analog_set__select__16 2842 ; 1TEST: Single test with code in skip slot 2843 0137 1ba9 btfsc analog_set__select__16___byte, analog_set__select__16___bit 2844 ; line_number = 271 2845 ; _ansel@7 := _true 2846 ;info 271, 312 2847 00000091 = analog_set__select__15___byte equ _ansel 2848 00000007 = analog_set__select__15___bit equ 7 2849 0138 1791 bsf analog_set__select__15___byte, analog_set__select__15___bit 2850 2851 2852 ; Recombine size1 = 0 || size2 = 0 2853 ; line_number = 270 2854 ; if analog@7 done 2855 ; delay after procedure statements=non-uniform 2856 ; Implied return 2857 0139 3400 retlw 0 2858 2859 2860 2861 2862 ; line_number = 274 2863 ;info 274, 314 2864 ; procedure digital_read 2865 013a : digital_read: 2866 ; arguments_none 2867 ; line_number = 276 2868 ; returns byte 2869 2870 ; # This procedure will return the digital bits corresponding to 2871 ; # the 8 digital data inputs. 2872 2873 ; line_number = 281 2874 ; local ra byte 2875 0000002a = digital_read__ra equ globals___0+10 2876 ; line_number = 282 2877 ; local rc byte 2878 0000002b = digital_read__rc equ globals___0+11 2879 ; line_number = 283 2880 ; local digital byte 2881 0000002c = digital_read__digital equ globals___0+12 2882 2883 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2884 ; line_number = 285 2885 ; ra := _porta 2886 ;info 285, 314 2887 013a 0805 movf _porta,w 2888 013b 00aa movwf digital_read__ra 2889 ; line_number = 286 2890 ; rc := _portc 2891 ;info 286, 316 2892 013c 0807 movf _portc,w 2893 013d 00ab movwf digital_read__rc 2894 ; line_number = 287 2895 ; digital := 0 2896 ;info 287, 318 2897 013e 01ac clrf digital_read__digital 2898 2899 ; line_number = 289 2900 ; if ra@io0_bit start 2901 ;info 289, 319 2902 0000002a = digital_read__select__2___byte equ digital_read__ra 2903 00000000 = digital_read__select__2___bit equ 0 2904 ; =>bit_code_emit@symbol(): sym=digital_read__select__2 2905 ; 1TEST: Single test with code in skip slot 2906 013f 182a btfsc digital_read__select__2___byte, digital_read__select__2___bit 2907 ; line_number = 290 2908 ; digital@0 := _true 2909 ;info 290, 320 2910 0000002c = digital_read__select__1___byte equ digital_read__digital 2911 00000000 = digital_read__select__1___bit equ 0 2912 0140 142c bsf digital_read__select__1___byte, digital_read__select__1___bit 2913 ; Recombine size1 = 0 || size2 = 0 2914 ; line_number = 289 2915 ; if ra@io0_bit done 2916 ; line_number = 291 2917 ; if ra@io1_bit start 2918 ;info 291, 321 2919 0000002a = digital_read__select__4___byte equ digital_read__ra 2920 00000004 = digital_read__select__4___bit equ 4 2921 ; =>bit_code_emit@symbol(): sym=digital_read__select__4 2922 ; 1TEST: Single test with code in skip slot 2923 0141 1a2a btfsc digital_read__select__4___byte, digital_read__select__4___bit 2924 ; line_number = 292 2925 ; digital@1 := _true 2926 ;info 292, 322 2927 0000002c = digital_read__select__3___byte equ digital_read__digital 2928 00000001 = digital_read__select__3___bit equ 1 2929 0142 14ac bsf digital_read__select__3___byte, digital_read__select__3___bit 2930 ; Recombine size1 = 0 || size2 = 0 2931 ; line_number = 291 2932 ; if ra@io1_bit done 2933 ; line_number = 293 2934 ; if ra@io2_bit start 2935 ;info 293, 323 2936 0000002a = digital_read__select__6___byte equ digital_read__ra 2937 00000001 = digital_read__select__6___bit equ 1 2938 ; =>bit_code_emit@symbol(): sym=digital_read__select__6 2939 ; 1TEST: Single test with code in skip slot 2940 0143 18aa btfsc digital_read__select__6___byte, digital_read__select__6___bit 2941 ; line_number = 294 2942 ; digital@2 := _true 2943 ;info 294, 324 2944 0000002c = digital_read__select__5___byte equ digital_read__digital 2945 00000002 = digital_read__select__5___bit equ 2 2946 0144 152c bsf digital_read__select__5___byte, digital_read__select__5___bit 2947 ; Recombine size1 = 0 || size2 = 0 2948 ; line_number = 293 2949 ; if ra@io2_bit done 2950 ; line_number = 295 2951 ; if ra@io3_bit start 2952 ;info 295, 325 2953 0000002a = digital_read__select__8___byte equ digital_read__ra 2954 00000002 = digital_read__select__8___bit equ 2 2955 ; =>bit_code_emit@symbol(): sym=digital_read__select__8 2956 ; 1TEST: Single test with code in skip slot 2957 0145 192a btfsc digital_read__select__8___byte, digital_read__select__8___bit 2958 ; line_number = 296 2959 ; digital@3 := _true 2960 ;info 296, 326 2961 0000002c = digital_read__select__7___byte equ digital_read__digital 2962 00000003 = digital_read__select__7___bit equ 3 2963 0146 15ac bsf digital_read__select__7___byte, digital_read__select__7___bit 2964 ; Recombine size1 = 0 || size2 = 0 2965 ; line_number = 295 2966 ; if ra@io3_bit done 2967 ; line_number = 297 2968 ; if rc@io4_bit start 2969 ;info 297, 327 2970 0000002b = digital_read__select__10___byte equ digital_read__rc 2971 00000000 = digital_read__select__10___bit equ 0 2972 ; =>bit_code_emit@symbol(): sym=digital_read__select__10 2973 ; 1TEST: Single test with code in skip slot 2974 0147 182b btfsc digital_read__select__10___byte, digital_read__select__10___bit 2975 ; line_number = 298 2976 ; digital@4 := _true 2977 ;info 298, 328 2978 0000002c = digital_read__select__9___byte equ digital_read__digital 2979 00000004 = digital_read__select__9___bit equ 4 2980 0148 162c bsf digital_read__select__9___byte, digital_read__select__9___bit 2981 ; Recombine size1 = 0 || size2 = 0 2982 ; line_number = 297 2983 ; if rc@io4_bit done 2984 ; line_number = 299 2985 ; if rc@io5_bit start 2986 ;info 299, 329 2987 0000002b = digital_read__select__12___byte equ digital_read__rc 2988 00000001 = digital_read__select__12___bit equ 1 2989 ; =>bit_code_emit@symbol(): sym=digital_read__select__12 2990 ; 1TEST: Single test with code in skip slot 2991 0149 18ab btfsc digital_read__select__12___byte, digital_read__select__12___bit 2992 ; line_number = 300 2993 ; digital@5 := _true 2994 ;info 300, 330 2995 0000002c = digital_read__select__11___byte equ digital_read__digital 2996 00000005 = digital_read__select__11___bit equ 5 2997 014a 16ac bsf digital_read__select__11___byte, digital_read__select__11___bit 2998 ; Recombine size1 = 0 || size2 = 0 2999 ; line_number = 299 3000 ; if rc@io5_bit done 3001 ; line_number = 301 3002 ; if rc@io6_bit start 3003 ;info 301, 331 3004 0000002b = digital_read__select__14___byte equ digital_read__rc 3005 00000002 = digital_read__select__14___bit equ 2 3006 ; =>bit_code_emit@symbol(): sym=digital_read__select__14 3007 ; 1TEST: Single test with code in skip slot 3008 014b 192b btfsc digital_read__select__14___byte, digital_read__select__14___bit 3009 ; line_number = 302 3010 ; digital@6 := _true 3011 ;info 302, 332 3012 0000002c = digital_read__select__13___byte equ digital_read__digital 3013 00000006 = digital_read__select__13___bit equ 6 3014 014c 172c bsf digital_read__select__13___byte, digital_read__select__13___bit 3015 ; Recombine size1 = 0 || size2 = 0 3016 ; line_number = 301 3017 ; if rc@io6_bit done 3018 ; line_number = 303 3019 ; if rc@io7_bit start 3020 ;info 303, 333 3021 0000002b = digital_read__select__16___byte equ digital_read__rc 3022 00000003 = digital_read__select__16___bit equ 3 3023 ; =>bit_code_emit@symbol(): sym=digital_read__select__16 3024 ; 1TEST: Single test with code in skip slot 3025 014d 19ab btfsc digital_read__select__16___byte, digital_read__select__16___bit 3026 ; line_number = 304 3027 ; digital@7 := _true 3028 ;info 304, 334 3029 0000002c = digital_read__select__15___byte equ digital_read__digital 3030 00000007 = digital_read__select__15___bit equ 7 3031 014e 17ac bsf digital_read__select__15___byte, digital_read__select__15___bit 3032 ; Recombine size1 = 0 || size2 = 0 3033 ; line_number = 303 3034 ; if rc@io7_bit done 3035 ; line_number = 305 3036 ; return digital start 3037 ; line_number = 305 3038 ;info 305, 335 3039 014f 082c movf digital_read__digital,w 3040 0150 0008 return 3041 ; line_number = 305 3042 ; return digital done 3043 3044 3045 ; delay after procedure statements=non-uniform 3046 3047 3048 3049 3050 ; line_number = 308 3051 ;info 308, 337 3052 ; procedure digital_set 3053 0151 : digital_set: 3054 ; Last argument is sitting in W; save into argument variable 3055 0151 00af movwf digital_set__digital 3056 ; delay=4294967295 3057 ; line_number = 309 3058 ; argument digital byte 3059 0000002f = digital_set__digital equ globals___0+15 3060 ; line_number = 310 3061 ; returns_nothing 3062 3063 ; # This procedure will set the digital outputs to be equal to {digital}. 3064 3065 ; line_number = 314 3066 ; local ra byte 3067 0000002d = digital_set__ra equ globals___0+13 3068 ; line_number = 315 3069 ; local rc byte 3070 0000002e = digital_set__rc equ globals___0+14 3071 3072 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3073 ; line_number = 317 3074 ; ra := 0 3075 ;info 317, 338 3076 0152 01ad clrf digital_set__ra 3077 ; line_number = 318 3078 ; rc := 0 3079 ;info 318, 339 3080 0153 01ae clrf digital_set__rc 3081 ; line_number = 319 3082 ; if digital@0 start 3083 ;info 319, 340 3084 0000002f = digital_set__select__2___byte equ digital_set__digital 3085 00000000 = digital_set__select__2___bit equ 0 3086 ; =>bit_code_emit@symbol(): sym=digital_set__select__2 3087 ; 1TEST: Single test with code in skip slot 3088 0154 182f btfsc digital_set__select__2___byte, digital_set__select__2___bit 3089 ; line_number = 320 3090 ; ra@io0_bit := _true 3091 ;info 320, 341 3092 0000002d = digital_set__select__1___byte equ digital_set__ra 3093 00000000 = digital_set__select__1___bit equ 0 3094 0155 142d bsf digital_set__select__1___byte, digital_set__select__1___bit 3095 ; Recombine size1 = 0 || size2 = 0 3096 ; line_number = 319 3097 ; if digital@0 done 3098 ; line_number = 321 3099 ; if digital@1 start 3100 ;info 321, 342 3101 0000002f = digital_set__select__4___byte equ digital_set__digital 3102 00000001 = digital_set__select__4___bit equ 1 3103 ; =>bit_code_emit@symbol(): sym=digital_set__select__4 3104 ; 1TEST: Single test with code in skip slot 3105 0156 18af btfsc digital_set__select__4___byte, digital_set__select__4___bit 3106 ; line_number = 322 3107 ; ra@io1_bit := _true 3108 ;info 322, 343 3109 0000002d = digital_set__select__3___byte equ digital_set__ra 3110 00000004 = digital_set__select__3___bit equ 4 3111 0157 162d bsf digital_set__select__3___byte, digital_set__select__3___bit 3112 ; Recombine size1 = 0 || size2 = 0 3113 ; line_number = 321 3114 ; if digital@1 done 3115 ; line_number = 323 3116 ; if digital@2 start 3117 ;info 323, 344 3118 0000002f = digital_set__select__6___byte equ digital_set__digital 3119 00000002 = digital_set__select__6___bit equ 2 3120 ; =>bit_code_emit@symbol(): sym=digital_set__select__6 3121 ; 1TEST: Single test with code in skip slot 3122 0158 192f btfsc digital_set__select__6___byte, digital_set__select__6___bit 3123 ; line_number = 324 3124 ; ra@io2_bit := _true 3125 ;info 324, 345 3126 0000002d = digital_set__select__5___byte equ digital_set__ra 3127 00000001 = digital_set__select__5___bit equ 1 3128 0159 14ad bsf digital_set__select__5___byte, digital_set__select__5___bit 3129 ; Recombine size1 = 0 || size2 = 0 3130 ; line_number = 323 3131 ; if digital@2 done 3132 ; line_number = 325 3133 ; if digital@3 start 3134 ;info 325, 346 3135 0000002f = digital_set__select__8___byte equ digital_set__digital 3136 00000003 = digital_set__select__8___bit equ 3 3137 ; =>bit_code_emit@symbol(): sym=digital_set__select__8 3138 ; 1TEST: Single test with code in skip slot 3139 015a 19af btfsc digital_set__select__8___byte, digital_set__select__8___bit 3140 ; line_number = 326 3141 ; ra@io3_bit := _true 3142 ;info 326, 347 3143 0000002d = digital_set__select__7___byte equ digital_set__ra 3144 00000002 = digital_set__select__7___bit equ 2 3145 015b 152d bsf digital_set__select__7___byte, digital_set__select__7___bit 3146 ; Recombine size1 = 0 || size2 = 0 3147 ; line_number = 325 3148 ; if digital@3 done 3149 ; line_number = 327 3150 ; if digital@4 start 3151 ;info 327, 348 3152 0000002f = digital_set__select__10___byte equ digital_set__digital 3153 00000004 = digital_set__select__10___bit equ 4 3154 ; =>bit_code_emit@symbol(): sym=digital_set__select__10 3155 ; 1TEST: Single test with code in skip slot 3156 015c 1a2f btfsc digital_set__select__10___byte, digital_set__select__10___bit 3157 ; line_number = 328 3158 ; rc@io4_bit := _true 3159 ;info 328, 349 3160 0000002e = digital_set__select__9___byte equ digital_set__rc 3161 00000000 = digital_set__select__9___bit equ 0 3162 015d 142e bsf digital_set__select__9___byte, digital_set__select__9___bit 3163 ; Recombine size1 = 0 || size2 = 0 3164 ; line_number = 327 3165 ; if digital@4 done 3166 ; line_number = 329 3167 ; if digital@5 start 3168 ;info 329, 350 3169 0000002f = digital_set__select__12___byte equ digital_set__digital 3170 00000005 = digital_set__select__12___bit equ 5 3171 ; =>bit_code_emit@symbol(): sym=digital_set__select__12 3172 ; 1TEST: Single test with code in skip slot 3173 015e 1aaf btfsc digital_set__select__12___byte, digital_set__select__12___bit 3174 ; line_number = 330 3175 ; rc@io5_bit := _true 3176 ;info 330, 351 3177 0000002e = digital_set__select__11___byte equ digital_set__rc 3178 00000001 = digital_set__select__11___bit equ 1 3179 015f 14ae bsf digital_set__select__11___byte, digital_set__select__11___bit 3180 ; Recombine size1 = 0 || size2 = 0 3181 ; line_number = 329 3182 ; if digital@5 done 3183 ; line_number = 331 3184 ; if digital@6 start 3185 ;info 331, 352 3186 0000002f = digital_set__select__14___byte equ digital_set__digital 3187 00000006 = digital_set__select__14___bit equ 6 3188 ; =>bit_code_emit@symbol(): sym=digital_set__select__14 3189 ; 1TEST: Single test with code in skip slot 3190 0160 1b2f btfsc digital_set__select__14___byte, digital_set__select__14___bit 3191 ; line_number = 332 3192 ; rc@io6_bit := _true 3193 ;info 332, 353 3194 0000002e = digital_set__select__13___byte equ digital_set__rc 3195 00000002 = digital_set__select__13___bit equ 2 3196 0161 152e bsf digital_set__select__13___byte, digital_set__select__13___bit 3197 ; Recombine size1 = 0 || size2 = 0 3198 ; line_number = 331 3199 ; if digital@6 done 3200 ; line_number = 333 3201 ; if digital@7 start 3202 ;info 333, 354 3203 0000002f = digital_set__select__16___byte equ digital_set__digital 3204 00000007 = digital_set__select__16___bit equ 7 3205 ; =>bit_code_emit@symbol(): sym=digital_set__select__16 3206 ; 1TEST: Single test with code in skip slot 3207 0162 1baf btfsc digital_set__select__16___byte, digital_set__select__16___bit 3208 ; line_number = 334 3209 ; rc@io7_bit := _true 3210 ;info 334, 355 3211 0000002e = digital_set__select__15___byte equ digital_set__rc 3212 00000003 = digital_set__select__15___bit equ 3 3213 0163 15ae bsf digital_set__select__15___byte, digital_set__select__15___bit 3214 ; Recombine size1 = 0 || size2 = 0 3215 ; line_number = 333 3216 ; if digital@7 done 3217 ; line_number = 335 3218 ; _porta := ra 3219 ;info 335, 356 3220 0164 082d movf digital_set__ra,w 3221 0165 0085 movwf _porta 3222 ; line_number = 336 3223 ; _portc := rc 3224 ;info 336, 358 3225 0166 082e movf digital_set__rc,w 3226 0167 0087 movwf _portc 3227 3228 3229 ; delay after procedure statements=non-uniform 3230 ; Implied return 3231 0168 3400 retlw 0 3232 3233 3234 3235 3236 ; line_number = 339 3237 ;info 339, 361 3238 ; procedure direction_read 3239 0169 : direction_read: 3240 ; arguments_none 3241 ; line_number = 341 3242 ; returns byte 3243 3244 ; # This procedure will return the digital bits corresponding to 3245 ; # the 8 digital data inputs. 3246 3247 ; line_number = 346 3248 ; local trisa byte 3249 00000030 = direction_read__trisa equ globals___0+16 3250 ; line_number = 347 3251 ; local trisc byte 3252 00000031 = direction_read__trisc equ globals___0+17 3253 ; line_number = 348 3254 ; local direction byte 3255 00000032 = direction_read__direction equ globals___0+18 3256 3257 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3258 ; line_number = 350 3259 ; direction := 0 3260 ;info 350, 361 3261 0169 01b2 clrf direction_read__direction 3262 ; # Get all data into data bank 0: 3263 ; line_number = 352 3264 ; trisa := _trisa 3265 ;info 352, 362 3266 016a 1683 bsf __rp0___byte, __rp0___bit 3267 016b 0805 movf _trisa,w 3268 016c 1283 bcf __rp0___byte, __rp0___bit 3269 016d 00b0 movwf direction_read__trisa 3270 ; line_number = 353 3271 ; trisc := _trisc 3272 ;info 353, 366 3273 016e 1683 bsf __rp0___byte, __rp0___bit 3274 016f 0807 movf _trisc,w 3275 0170 1283 bcf __rp0___byte, __rp0___bit 3276 0171 00b1 movwf direction_read__trisc 3277 3278 ; line_number = 355 3279 ; if trisa@io0_bit start 3280 ;info 355, 370 3281 00000030 = direction_read__select__2___byte equ direction_read__trisa 3282 00000000 = direction_read__select__2___bit equ 0 3283 ; =>bit_code_emit@symbol(): sym=direction_read__select__2 3284 ; 1TEST: Single test with code in skip slot 3285 0172 1830 btfsc direction_read__select__2___byte, direction_read__select__2___bit 3286 ; line_number = 356 3287 ; direction@0 := _true 3288 ;info 356, 371 3289 00000032 = direction_read__select__1___byte equ direction_read__direction 3290 00000000 = direction_read__select__1___bit equ 0 3291 0173 1432 bsf direction_read__select__1___byte, direction_read__select__1___bit 3292 ; Recombine size1 = 0 || size2 = 0 3293 ; line_number = 355 3294 ; if trisa@io0_bit done 3295 ; line_number = 357 3296 ; if trisa@io1_bit start 3297 ;info 357, 372 3298 00000030 = direction_read__select__4___byte equ direction_read__trisa 3299 00000004 = direction_read__select__4___bit equ 4 3300 ; =>bit_code_emit@symbol(): sym=direction_read__select__4 3301 ; 1TEST: Single test with code in skip slot 3302 0174 1a30 btfsc direction_read__select__4___byte, direction_read__select__4___bit 3303 ; line_number = 358 3304 ; direction@1 := _true 3305 ;info 358, 373 3306 00000032 = direction_read__select__3___byte equ direction_read__direction 3307 00000001 = direction_read__select__3___bit equ 1 3308 0175 14b2 bsf direction_read__select__3___byte, direction_read__select__3___bit 3309 ; Recombine size1 = 0 || size2 = 0 3310 ; line_number = 357 3311 ; if trisa@io1_bit done 3312 ; line_number = 359 3313 ; if trisa@io2_bit start 3314 ;info 359, 374 3315 00000030 = direction_read__select__6___byte equ direction_read__trisa 3316 00000001 = direction_read__select__6___bit equ 1 3317 ; =>bit_code_emit@symbol(): sym=direction_read__select__6 3318 ; 1TEST: Single test with code in skip slot 3319 0176 18b0 btfsc direction_read__select__6___byte, direction_read__select__6___bit 3320 ; line_number = 360 3321 ; direction@2 := _true 3322 ;info 360, 375 3323 00000032 = direction_read__select__5___byte equ direction_read__direction 3324 00000002 = direction_read__select__5___bit equ 2 3325 0177 1532 bsf direction_read__select__5___byte, direction_read__select__5___bit 3326 ; Recombine size1 = 0 || size2 = 0 3327 ; line_number = 359 3328 ; if trisa@io2_bit done 3329 ; line_number = 361 3330 ; if trisa@io3_bit start 3331 ;info 361, 376 3332 00000030 = direction_read__select__8___byte equ direction_read__trisa 3333 00000002 = direction_read__select__8___bit equ 2 3334 ; =>bit_code_emit@symbol(): sym=direction_read__select__8 3335 ; 1TEST: Single test with code in skip slot 3336 0178 1930 btfsc direction_read__select__8___byte, direction_read__select__8___bit 3337 ; line_number = 362 3338 ; direction@3 := _true 3339 ;info 362, 377 3340 00000032 = direction_read__select__7___byte equ direction_read__direction 3341 00000003 = direction_read__select__7___bit equ 3 3342 0179 15b2 bsf direction_read__select__7___byte, direction_read__select__7___bit 3343 ; Recombine size1 = 0 || size2 = 0 3344 ; line_number = 361 3345 ; if trisa@io3_bit done 3346 ; line_number = 363 3347 ; if trisc@io4_bit start 3348 ;info 363, 378 3349 00000031 = direction_read__select__10___byte equ direction_read__trisc 3350 00000000 = direction_read__select__10___bit equ 0 3351 ; =>bit_code_emit@symbol(): sym=direction_read__select__10 3352 ; 1TEST: Single test with code in skip slot 3353 017a 1831 btfsc direction_read__select__10___byte, direction_read__select__10___bit 3354 ; line_number = 364 3355 ; direction@4 := _true 3356 ;info 364, 379 3357 00000032 = direction_read__select__9___byte equ direction_read__direction 3358 00000004 = direction_read__select__9___bit equ 4 3359 017b 1632 bsf direction_read__select__9___byte, direction_read__select__9___bit 3360 ; Recombine size1 = 0 || size2 = 0 3361 ; line_number = 363 3362 ; if trisc@io4_bit done 3363 ; line_number = 365 3364 ; if trisc@io5_bit start 3365 ;info 365, 380 3366 00000031 = direction_read__select__12___byte equ direction_read__trisc 3367 00000001 = direction_read__select__12___bit equ 1 3368 ; =>bit_code_emit@symbol(): sym=direction_read__select__12 3369 ; 1TEST: Single test with code in skip slot 3370 017c 18b1 btfsc direction_read__select__12___byte, direction_read__select__12___bit 3371 ; line_number = 366 3372 ; direction@5 := _true 3373 ;info 366, 381 3374 00000032 = direction_read__select__11___byte equ direction_read__direction 3375 00000005 = direction_read__select__11___bit equ 5 3376 017d 16b2 bsf direction_read__select__11___byte, direction_read__select__11___bit 3377 ; Recombine size1 = 0 || size2 = 0 3378 ; line_number = 365 3379 ; if trisc@io5_bit done 3380 ; line_number = 367 3381 ; if trisc@io6_bit start 3382 ;info 367, 382 3383 00000031 = direction_read__select__14___byte equ direction_read__trisc 3384 00000002 = direction_read__select__14___bit equ 2 3385 ; =>bit_code_emit@symbol(): sym=direction_read__select__14 3386 ; 1TEST: Single test with code in skip slot 3387 017e 1931 btfsc direction_read__select__14___byte, direction_read__select__14___bit 3388 ; line_number = 368 3389 ; direction@6 := _true 3390 ;info 368, 383 3391 00000032 = direction_read__select__13___byte equ direction_read__direction 3392 00000006 = direction_read__select__13___bit equ 6 3393 017f 1732 bsf direction_read__select__13___byte, direction_read__select__13___bit 3394 ; Recombine size1 = 0 || size2 = 0 3395 ; line_number = 367 3396 ; if trisc@io6_bit done 3397 ; line_number = 369 3398 ; if trisc@io7_bit start 3399 ;info 369, 384 3400 00000031 = direction_read__select__16___byte equ direction_read__trisc 3401 00000003 = direction_read__select__16___bit equ 3 3402 ; =>bit_code_emit@symbol(): sym=direction_read__select__16 3403 ; 1TEST: Single test with code in skip slot 3404 0180 19b1 btfsc direction_read__select__16___byte, direction_read__select__16___bit 3405 ; line_number = 370 3406 ; direction@7 := _true 3407 ;info 370, 385 3408 00000032 = direction_read__select__15___byte equ direction_read__direction 3409 00000007 = direction_read__select__15___bit equ 7 3410 0181 17b2 bsf direction_read__select__15___byte, direction_read__select__15___bit 3411 ; Recombine size1 = 0 || size2 = 0 3412 ; line_number = 369 3413 ; if trisc@io7_bit done 3414 ; line_number = 371 3415 ; return direction start 3416 ; line_number = 371 3417 ;info 371, 386 3418 0182 0832 movf direction_read__direction,w 3419 0183 0008 return 3420 ; line_number = 371 3421 ; return direction done 3422 3423 3424 ; delay after procedure statements=non-uniform 3425 3426 3427 3428 3429 ; line_number = 374 3430 ;info 374, 388 3431 ; procedure direction_set 3432 0184 : direction_set: 3433 ; Last argument is sitting in W; save into argument variable 3434 0184 00b5 movwf direction_set__direction 3435 ; delay=4294967295 3436 ; line_number = 375 3437 ; argument direction byte 3438 00000035 = direction_set__direction equ globals___0+21 3439 ; line_number = 376 3440 ; returns_nothing 3441 3442 ; # This procedure will set the direction outputs to be equal to {direction}. 3443 3444 ; line_number = 380 3445 ; local trisa byte 3446 00000033 = direction_set__trisa equ globals___0+19 3447 ; line_number = 381 3448 ; local trisc byte 3449 00000034 = direction_set__trisc equ globals___0+20 3450 3451 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3452 ; line_number = 383 3453 ; trisa := 0xc0 3454 ;info 383, 389 3455 0185 30c0 movlw 192 3456 0186 00b3 movwf direction_set__trisa 3457 ; line_number = 384 3458 ; trisc := 0xc0 3459 ;info 384, 391 3460 0187 30c0 movlw 192 3461 0188 00b4 movwf direction_set__trisc 3462 ; line_number = 385 3463 ; if direction@0 start 3464 ;info 385, 393 3465 00000035 = direction_set__select__2___byte equ direction_set__direction 3466 00000000 = direction_set__select__2___bit equ 0 3467 ; =>bit_code_emit@symbol(): sym=direction_set__select__2 3468 ; 1TEST: Single test with code in skip slot 3469 0189 1835 btfsc direction_set__select__2___byte, direction_set__select__2___bit 3470 ; line_number = 386 3471 ; trisa@io0_bit := _true 3472 ;info 386, 394 3473 00000033 = direction_set__select__1___byte equ direction_set__trisa 3474 00000000 = direction_set__select__1___bit equ 0 3475 018a 1433 bsf direction_set__select__1___byte, direction_set__select__1___bit 3476 ; Recombine size1 = 0 || size2 = 0 3477 ; line_number = 385 3478 ; if direction@0 done 3479 ; line_number = 387 3480 ; if direction@1 start 3481 ;info 387, 395 3482 00000035 = direction_set__select__4___byte equ direction_set__direction 3483 00000001 = direction_set__select__4___bit equ 1 3484 ; =>bit_code_emit@symbol(): sym=direction_set__select__4 3485 ; 1TEST: Single test with code in skip slot 3486 018b 18b5 btfsc direction_set__select__4___byte, direction_set__select__4___bit 3487 ; line_number = 388 3488 ; trisa@io1_bit := _true 3489 ;info 388, 396 3490 00000033 = direction_set__select__3___byte equ direction_set__trisa 3491 00000004 = direction_set__select__3___bit equ 4 3492 018c 1633 bsf direction_set__select__3___byte, direction_set__select__3___bit 3493 ; Recombine size1 = 0 || size2 = 0 3494 ; line_number = 387 3495 ; if direction@1 done 3496 ; line_number = 389 3497 ; if direction@2 start 3498 ;info 389, 397 3499 00000035 = direction_set__select__6___byte equ direction_set__direction 3500 00000002 = direction_set__select__6___bit equ 2 3501 ; =>bit_code_emit@symbol(): sym=direction_set__select__6 3502 ; 1TEST: Single test with code in skip slot 3503 018d 1935 btfsc direction_set__select__6___byte, direction_set__select__6___bit 3504 ; line_number = 390 3505 ; trisa@io2_bit := _true 3506 ;info 390, 398 3507 00000033 = direction_set__select__5___byte equ direction_set__trisa 3508 00000001 = direction_set__select__5___bit equ 1 3509 018e 14b3 bsf direction_set__select__5___byte, direction_set__select__5___bit 3510 ; Recombine size1 = 0 || size2 = 0 3511 ; line_number = 389 3512 ; if direction@2 done 3513 ; line_number = 391 3514 ; if direction@3 start 3515 ;info 391, 399 3516 00000035 = direction_set__select__8___byte equ direction_set__direction 3517 00000003 = direction_set__select__8___bit equ 3 3518 ; =>bit_code_emit@symbol(): sym=direction_set__select__8 3519 ; 1TEST: Single test with code in skip slot 3520 018f 19b5 btfsc direction_set__select__8___byte, direction_set__select__8___bit 3521 ; line_number = 392 3522 ; trisa@io3_bit := _true 3523 ;info 392, 400 3524 00000033 = direction_set__select__7___byte equ direction_set__trisa 3525 00000002 = direction_set__select__7___bit equ 2 3526 0190 1533 bsf direction_set__select__7___byte, direction_set__select__7___bit 3527 ; Recombine size1 = 0 || size2 = 0 3528 ; line_number = 391 3529 ; if direction@3 done 3530 ; line_number = 393 3531 ; if direction@4 start 3532 ;info 393, 401 3533 00000035 = direction_set__select__10___byte equ direction_set__direction 3534 00000004 = direction_set__select__10___bit equ 4 3535 ; =>bit_code_emit@symbol(): sym=direction_set__select__10 3536 ; 1TEST: Single test with code in skip slot 3537 0191 1a35 btfsc direction_set__select__10___byte, direction_set__select__10___bit 3538 ; line_number = 394 3539 ; trisc@io4_bit := _true 3540 ;info 394, 402 3541 00000034 = direction_set__select__9___byte equ direction_set__trisc 3542 00000000 = direction_set__select__9___bit equ 0 3543 0192 1434 bsf direction_set__select__9___byte, direction_set__select__9___bit 3544 ; Recombine size1 = 0 || size2 = 0 3545 ; line_number = 393 3546 ; if direction@4 done 3547 ; line_number = 395 3548 ; if direction@5 start 3549 ;info 395, 403 3550 00000035 = direction_set__select__12___byte equ direction_set__direction 3551 00000005 = direction_set__select__12___bit equ 5 3552 ; =>bit_code_emit@symbol(): sym=direction_set__select__12 3553 ; 1TEST: Single test with code in skip slot 3554 0193 1ab5 btfsc direction_set__select__12___byte, direction_set__select__12___bit 3555 ; line_number = 396 3556 ; trisc@io5_bit := _true 3557 ;info 396, 404 3558 00000034 = direction_set__select__11___byte equ direction_set__trisc 3559 00000001 = direction_set__select__11___bit equ 1 3560 0194 14b4 bsf direction_set__select__11___byte, direction_set__select__11___bit 3561 ; Recombine size1 = 0 || size2 = 0 3562 ; line_number = 395 3563 ; if direction@5 done 3564 ; line_number = 397 3565 ; if direction@6 start 3566 ;info 397, 405 3567 00000035 = direction_set__select__14___byte equ direction_set__direction 3568 00000006 = direction_set__select__14___bit equ 6 3569 ; =>bit_code_emit@symbol(): sym=direction_set__select__14 3570 ; 1TEST: Single test with code in skip slot 3571 0195 1b35 btfsc direction_set__select__14___byte, direction_set__select__14___bit 3572 ; line_number = 398 3573 ; trisc@io6_bit := _true 3574 ;info 398, 406 3575 00000034 = direction_set__select__13___byte equ direction_set__trisc 3576 00000002 = direction_set__select__13___bit equ 2 3577 0196 1534 bsf direction_set__select__13___byte, direction_set__select__13___bit 3578 ; Recombine size1 = 0 || size2 = 0 3579 ; line_number = 397 3580 ; if direction@6 done 3581 ; line_number = 399 3582 ; if direction@7 start 3583 ;info 399, 407 3584 00000035 = direction_set__select__16___byte equ direction_set__direction 3585 00000007 = direction_set__select__16___bit equ 7 3586 ; =>bit_code_emit@symbol(): sym=direction_set__select__16 3587 ; 1TEST: Single test with code in skip slot 3588 0197 1bb5 btfsc direction_set__select__16___byte, direction_set__select__16___bit 3589 ; line_number = 400 3590 ; trisc@io7_bit := _true 3591 ;info 400, 408 3592 00000034 = direction_set__select__15___byte equ direction_set__trisc 3593 00000003 = direction_set__select__15___bit equ 3 3594 0198 15b4 bsf direction_set__select__15___byte, direction_set__select__15___bit 3595 ; Recombine size1 = 0 || size2 = 0 3596 ; line_number = 399 3597 ; if direction@7 done 3598 ; line_number = 401 3599 ; trisc@rx_bit := _true 3600 ;info 401, 409 3601 00000034 = direction_set__select__17___byte equ direction_set__trisc 3602 00000005 = direction_set__select__17___bit equ 5 3603 0199 16b4 bsf direction_set__select__17___byte, direction_set__select__17___bit 3604 ; line_number = 402 3605 ; trisc@tx_bit := _true 3606 ;info 402, 410 3607 00000034 = direction_set__select__18___byte equ direction_set__trisc 3608 00000004 = direction_set__select__18___bit equ 4 3609 019a 1634 bsf direction_set__select__18___byte, direction_set__select__18___bit 3610 ; line_number = 403 3611 ; _trisa := trisa 3612 ;info 403, 411 3613 019b 0833 movf direction_set__trisa,w 3614 019c 1683 bsf __rp0___byte, __rp0___bit 3615 019d 0085 movwf _trisa 3616 ; line_number = 404 3617 ; _trisc := trisc 3618 ;info 404, 414 3619 019e 1283 bcf __rp0___byte, __rp0___bit 3620 019f 0834 movf direction_set__trisc,w 3621 01a0 1683 bsf __rp0___byte, __rp0___bit 3622 01a1 0087 movwf _trisc 3623 3624 3625 ; delay after procedure statements=non-uniform 3626 01a2 1283 bcf __rp0___byte, __rp0___bit 3627 ; Implied return 3628 01a3 3400 retlw 0 3629 3630 3631 3632 3633 ; #procedure byte_put 3634 ; # argument response byte 3635 ; # returns_nothing 3636 ; # 3637 ; # # This procedure will send {response} back to the requestor. 3638 ; # 3639 ; # echo_discard := _true 3640 ; # while !_txif 3641 ; # do_nothing 3642 ; # _tx9d := _false 3643 ; # _txreg := response 3644 ; # 3645 ; # 3646 ; #procedure byte_get 3647 ; # arguments_none 3648 ; # returns byte 3649 ; # 3650 ; # # This procedure returns the next byte from the bus that is 3651 ; # # directed to this module. This procedure handles all address 3652 ; # # change (9th bit set) commands that come in. Thus, any byte 3653 ; # # returned from this procedure is a command byte that is directed 3654 ; # # at this module. 3655 ; # 3656 ; # local address byte 3657 ; # 3658 ; # # Keep processing bytes until we've got a command byte for us: 3659 ; # loop_forever 3660 ; # # Wait for a 9-bit "byte": 3661 ; # while !_rcif 3662 ; # do_nothing 3663 ; # if _rx9d 3664 ; # # We have an address byte; read the address: 3665 ; # if _rcreg = module_address 3666 ; # # We have been selected; start receiving all bytes: 3667 ; # _adden := _false 3668 ; # # Send a null byte to indicate that we alive and well: 3669 ; # _tx9d := _false 3670 ; # _txreg := _false 3671 ; # echo_discard := _true 3672 ; # else 3673 ; # # We have a command or echo byte: 3674 ; # if echo_discard 3675 ; # # We have an echo: 3676 ; # echo_discard := _false 3677 ; # _fsr := _rcreg 3678 ; # else 3679 ; # # We have a real command: 3680 ; # return _rcreg 3681 3682 3683 ; Appending 7 delayed procedures to code bank 0 3684 ; buffer = '_uart' 3685 ; line_number = 7 3686 ;info 7, 420 3687 ; procedure _uart_byte_safe_get 3688 01a4 : _uart_byte_safe_get: 3689 ; arguments_none 3690 ; line_number = 9 3691 ; returns byte 3692 3693 ; # This procedure will the next byte from UART. If no byte 3694 ; # received in a reasonable time, 0xfc is returned. 3695 3696 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3697 ; line_number = 14 3698 ; loop_exactly 255 start 3699 ;info 14, 420 3700 00000038 = _uart_byte_safe_get__1 equ globals___0+24 3701 01a4 30ff movlw 255 3702 01a5 00b8 movwf _uart_byte_safe_get__1 3703 01a6 : _uart_byte_safe_get__2: 3704 ; line_number = 15 3705 ; loop_exactly 255 start 3706 ;info 15, 422 3707 00000039 = _uart_byte_safe_get__3 equ globals___0+25 3708 01a6 30ff movlw 255 3709 01a7 00b9 movwf _uart_byte_safe_get__3 3710 01a8 : _uart_byte_safe_get__4: 3711 ; line_number = 16 3712 ; if _rcif start 3713 ;info 16, 424 3714 ; =>bit_code_emit@symbol(): sym=_rcif 3715 ; No 1TEST: true.size=2 false.size=0 3716 ; No 2TEST: true.size=2 false.size=0 3717 ; 1GOTO: Single test with GOTO 3718 01a8 1e8c btfss _rcif___byte, _rcif___bit 3719 01a9 29ac goto _uart_byte_safe_get__5 3720 ; line_number = 17 3721 ; return _rcreg start 3722 ; line_number = 17 3723 ;info 17, 426 3724 01aa 0814 movf _rcreg,w 3725 01ab 0008 return 3726 ; line_number = 17 3727 ; return _rcreg done 3728 ; Recombine size1 = 0 || size2 = 0 3729 01ac : _uart_byte_safe_get__5: 3730 ; line_number = 16 3731 ; if _rcif done 3732 ; line_number = 15 3733 ; loop_exactly 255 wrap-up 3734 01ac 0bb9 decfsz _uart_byte_safe_get__3,f 3735 01ad 29a8 goto _uart_byte_safe_get__4 3736 ; line_number = 15 3737 ; loop_exactly 255 done 3738 ; line_number = 14 3739 ; loop_exactly 255 wrap-up 3740 01ae 0bb8 decfsz _uart_byte_safe_get__1,f 3741 01af 29a6 goto _uart_byte_safe_get__2 3742 ; line_number = 14 3743 ; loop_exactly 255 done 3744 ; line_number = 18 3745 ; return 0xfc start 3746 ; line_number = 18 3747 ;info 18, 432 3748 01b0 34fc retlw 252 3749 ; line_number = 18 3750 ; return 0xfc done 3751 3752 3753 ; delay after procedure statements=non-uniform 3754 3755 3756 3757 3758 ; line_number = 21 3759 ;info 21, 433 3760 ; procedure _uart_byte_get 3761 01b1 : _uart_byte_get: 3762 ; arguments_none 3763 ; line_number = 23 3764 ; returns byte 3765 3766 ; # This procedure will return the next byte from the UART. 3767 3768 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3769 ; line_number = 27 3770 ; while !_rcif start 3771 01b1 : _uart_byte_get__1: 3772 ;info 27, 433 3773 ; =>bit_code_emit@symbol(): sym=_rcif 3774 ; 1TEST: Single test with code in skip slot 3775 01b1 1e8c btfss _rcif___byte, _rcif___bit 3776 ; line_number = 28 3777 ; do_nothing 3778 ;info 28, 434 3779 01b2 29b1 goto _uart_byte_get__1 3780 ; Recombine size1 = 0 || size2 = 0 3781 ; line_number = 27 3782 ; while !_rcif done 3783 ; line_number = 29 3784 ; return _rcreg start 3785 ; line_number = 29 3786 ;info 29, 435 3787 01b3 0814 movf _rcreg,w 3788 01b4 0008 return 3789 ; line_number = 29 3790 ; return _rcreg done 3791 3792 3793 ; delay after procedure statements=non-uniform 3794 3795 3796 3797 3798 ; line_number = 32 3799 ;info 32, 437 3800 ; procedure _uart_hex_put 3801 01b5 : _uart_hex_put: 3802 ; Last argument is sitting in W; save into argument variable 3803 01b5 00a0 movwf _uart_hex_put__value 3804 ; delay=4294967295 3805 ; line_number = 33 3806 ; argument value byte 3807 00000020 = _uart_hex_put__value equ globals___0 3808 ; line_number = 34 3809 ; returns_nothing 3810 3811 ; # This procedure will output {value} to the UART as a 2-digit 3812 ; # hexadecimal number. 3813 3814 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3815 ; line_number = 39 3816 ; call _uart_nibble_put(value >> 4) 3817 ;info 39, 438 3818 0000003a = _uart_hex_put__1 equ globals___0+26 3819 01b6 0e20 swapf _uart_hex_put__value,w 3820 01b7 390f andlw 15 3821 01b8 21bd call _uart_nibble_put 3822 ; line_number = 40 3823 ; call _uart_nibble_put(value & 0xf) 3824 ;info 40, 441 3825 01b9 300f movlw 15 3826 01ba 0520 andwf _uart_hex_put__value,w 3827 01bb 21bd call _uart_nibble_put 3828 3829 3830 ; delay after procedure statements=non-uniform 3831 ; Implied return 3832 01bc 3400 retlw 0 3833 3834 3835 3836 3837 ; line_number = 43 3838 ;info 43, 445 3839 ; procedure _uart_nibble_put 3840 01bd : _uart_nibble_put: 3841 ; Last argument is sitting in W; save into argument variable 3842 01bd 00a1 movwf _uart_nibble_put__nibble 3843 ; delay=4294967295 3844 ; line_number = 44 3845 ; argument nibble byte 3846 00000021 = _uart_nibble_put__nibble equ globals___0+1 3847 ; line_number = 45 3848 ; returns_nothing 3849 3850 ; # This procedure will output {value} to UART as a 1 digit 3851 ; # hexadecimal number. 3852 3853 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3854 ; line_number = 50 3855 ; if nibble < 10 start 3856 ;info 50, 446 3857 01be 300a movlw 10 3858 01bf 0221 subwf _uart_nibble_put__nibble,w 3859 ; =>bit_code_emit@symbol(): sym=__c 3860 ; No 1TEST: true.size=1 false.size=1 3861 ; 2TEST: two tests with code in both delay slots 3862 01c0 1803 btfsc __c___byte, __c___bit 3863 ; line_number = 53 3864 ; nibble := nibble - 10 + 'A' 3865 ;info 53, 449 3866 01c1 3037 movlw 55 3867 01c2 1c03 btfss __c___byte, __c___bit 3868 ; line_number = 51 3869 ; nibble := nibble + '0' 3870 ;info 51, 451 3871 01c3 3030 movlw 48 3872 01c4 07a1 addwf _uart_nibble_put__nibble,f 3873 ; line_number = 50 3874 ; if nibble < 10 done 3875 ; line_number = 54 3876 ; call _uart_byte_put(nibble) 3877 ;info 54, 453 3878 01c5 0821 movf _uart_nibble_put__nibble,w 3879 01c6 21d0 call _uart_byte_put 3880 3881 3882 ; delay after procedure statements=non-uniform 3883 ; Implied return 3884 01c7 3400 retlw 0 3885 3886 3887 3888 3889 ; line_number = 57 3890 ;info 57, 456 3891 ; procedure _uart_space_put 3892 01c8 : _uart_space_put: 3893 ; arguments_none 3894 ; line_number = 59 3895 ; returns_nothing 3896 3897 ; # This procedure will output a space to the UART. 3898 3899 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3900 ; line_number = 63 3901 ; call _uart_byte_put(' ') 3902 ;info 63, 456 3903 01c8 3020 movlw 32 3904 01c9 21d0 call _uart_byte_put 3905 3906 3907 ; delay after procedure statements=non-uniform 3908 ; Implied return 3909 01ca 3400 retlw 0 3910 3911 3912 3913 3914 ; line_number = 66 3915 ;info 66, 459 3916 ; procedure _uart_crlf_put 3917 01cb : _uart_crlf_put: 3918 ; arguments_none 3919 ; line_number = 68 3920 ; returns_nothing 3921 3922 ; # This procedure will output a carriage return line feed sequecne to 3923 ; # the UART. 3924 3925 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3926 ; line_number = 73 3927 ; call _uart_byte_put('\cr\') 3928 ;info 73, 459 3929 01cb 300d movlw 13 3930 01cc 21d0 call _uart_byte_put 3931 ; line_number = 74 3932 ; call _uart_byte_put('\lf\') 3933 ;info 74, 461 3934 01cd 300a movlw 10 3935 01ce 21d0 call _uart_byte_put 3936 3937 3938 ; delay after procedure statements=non-uniform 3939 ; Implied return 3940 01cf 3400 retlw 0 3941 3942 3943 3944 3945 ; line_number = 77 3946 ;info 77, 464 3947 ; procedure _uart_byte_put 3948 01d0 : _uart_byte_put: 3949 ; Last argument is sitting in W; save into argument variable 3950 01d0 00a2 movwf _uart_byte_put__byte 3951 ; delay=4294967295 3952 ; line_number = 78 3953 ; argument byte byte 3954 00000022 = _uart_byte_put__byte equ globals___0+2 3955 ; line_number = 79 3956 ; returns_nothing 3957 3958 ; # This procedure will send {byte} out using to the UART. 3959 3960 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3961 ; line_number = 83 3962 ; while !_txif start 3963 01d1 : _uart_byte_put__1: 3964 ;info 83, 465 3965 ; =>bit_code_emit@symbol(): sym=_txif 3966 ; 1TEST: Single test with code in skip slot 3967 01d1 1c8c btfss _txif___byte, _txif___bit 3968 ; line_number = 84 3969 ; do_nothing 3970 ;info 84, 466 3971 01d2 29d1 goto _uart_byte_put__1 3972 ; Recombine size1 = 0 || size2 = 0 3973 ; line_number = 83 3974 ; while !_txif done 3975 ; line_number = 85 3976 ; _txreg := byte 3977 ;info 85, 467 3978 01d3 0822 movf _uart_byte_put__byte,w 3979 01d4 0095 movwf _txreg 3980 3981 3982 ; delay after procedure statements=non-uniform 3983 ; Implied return 3984 01d5 3400 retlw 0 3985 3986 3987 3988 3989 ; Configuration bits 3990 ; address = 0x2007, fill = 0x3000 3991 ; fcmen = off (0x0) 3992 ; ieso = off (0x0) 3993 ; boden = off (0x0) 3994 ; cpd = off (0x80) 3995 ; cp = off (0x40) 3996 ; mclre = off (0x0) 3997 ; pwrte = off (0x10) 3998 ; wdte = off (0x0) 3999 ; fosc = hs (0x2) 4000 ; 12498 = 0x30d2 4001 30d2 = __config 12498 4002 ; Define start addresses for data regions 4003 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4004 ; Region="globals___0" Address=32" Size=80 Bytes=27 Bits=3 Available=52 4005 ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80 4006 ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80 4007 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4008 end