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-2006 by Wayne C. Gramlich 31 ; # All rights reserved. 32 33 ; buffer = 'bus' 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 = 'bus' 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 = 'bus' 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 = 'bus' 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 = osc2 1626 ; line_number = 19 1627 ; pin 4 = ra3_in, name=p6 1628 00000005 = p6___byte equ _porta 1629 00000003 = p6___bit equ 3 1630 ; line_number = 20 1631 ; pin 5 = rx, name=rx 1632 00000007 = rx___byte equ _portc 1633 00000005 = rx___bit equ 5 1634 ; line_number = 21 1635 ; pin 6 = tx, name=tx 1636 00000007 = tx___byte equ _portc 1637 00000004 = tx___bit equ 4 1638 ; line_number = 22 1639 ; pin 7 = rc3_in, name=p3 1640 00000007 = p3___byte equ _portc 1641 00000003 = p3___bit equ 3 1642 ; line_number = 23 1643 ; pin 8 = rc2_in, name=p2 1644 00000007 = p2___byte equ _portc 1645 00000002 = p2___bit equ 2 1646 ; line_number = 24 1647 ; pin 9 = rc1_out, name=p1 1648 00000007 = p1___byte equ _portc 1649 00000001 = p1___bit equ 1 1650 ; line_number = 25 1651 ; pin 10 = rc0_out, name=p0 1652 00000007 = p0___byte equ _portc 1653 00000000 = p0___bit equ 0 1654 ; line_number = 26 1655 ; pin 11 = ra2_out, name=reset 1656 00000005 = reset___byte equ _porta 1657 00000002 = reset___bit equ 2 1658 ; line_number = 27 1659 ; pin 12 = ra1_out, name=p5 1660 00000005 = p5___byte equ _porta 1661 00000001 = p5___bit equ 1 1662 ; line_number = 28 1663 ; pin 13 = ra0_in, name=p4 1664 00000005 = p4___byte equ _porta 1665 00000000 = p4___bit equ 0 1666 ; line_number = 29 1667 ; pin 14 = ground 1668 1669 ; line_number = 31 1670 ; origin 0 1671 0000 : org 0 1672 1673 ; line_number = 33 1674 ; constant microsecond = clocks_per_instruction / 1000000 1675 00000000 = microsecond equ 0 1676 1677 ; line_number = 35 1678 ; constant buffer_power = 5 1679 00000005 = buffer_power equ 5 1680 ; line_number = 36 1681 ; constant buffer_size = 1 << buffer_power 1682 00000020 = buffer_size equ 32 1683 ; line_number = 37 1684 ; constant buffer_mask = buffer_size - 1 1685 0000001f = buffer_mask equ 31 1686 1687 ; line_number = 39 1688 ; global lows[buffer_size] array[byte] 1689 00000023 = lows equ globals___0+3 1690 ; line_number = 40 1691 ; global highs[buffer_size] array[byte] 1692 00000043 = highs equ globals___0+35 1693 ; line_number = 41 1694 ; global buffer_in byte 1695 00000063 = buffer_in equ globals___0+67 1696 ; line_number = 42 1697 ; global buffer_out byte 1698 00000064 = buffer_out equ globals___0+68 1699 ; line_number = 43 1700 ; global buffer_amount byte 1701 00000065 = buffer_amount equ globals___0+69 1702 1703 ; line_number = 45 1704 ; global command byte 1705 00000066 = command equ globals___0+70 1706 ; line_number = 46 1707 ; global response byte 1708 00000067 = response equ globals___0+71 1709 1710 ; line_number = 48 1711 ;info 48, 0 1712 ; procedure main 1713 0000 : main: 1714 ; Initialize some registers 1715 0000 019f clrf _adcon0 1716 0001 1683 bsf __rp0___byte, __rp0___bit 1717 0002 0191 clrf _ansel 1718 0003 3007 movlw 7 1719 0004 1283 bcf __rp0___byte, __rp0___bit 1720 0005 0099 movwf _cmcon0 1721 0006 3039 movlw 57 1722 0007 1683 bsf __rp0___byte, __rp0___bit 1723 0008 0085 movwf _trisa 1724 0009 303c movlw 60 1725 000a 0087 movwf _trisc 1726 ; arguments_none 1727 ; line_number = 50 1728 ; returns_nothing 1729 1730 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX) 1731 ; line_number = 52 1732 ; p0 := _false 1733 ;info 52, 11 1734 000b 1283 bcf __rp0___byte, __rp0___bit 1735 000c 1007 bcf p0___byte, p0___bit 1736 ; line_number = 53 1737 ; p1 := _false 1738 ;info 53, 13 1739 000d 1087 bcf p1___byte, p1___bit 1740 ; line_number = 54 1741 ; p5 := _false 1742 ;info 54, 14 1743 000e 1085 bcf p5___byte, p5___bit 1744 ; line_number = 55 1745 ; command := 0 1746 ;info 55, 15 1747 000f 01e6 clrf command 1748 ; line_number = 56 1749 ; response := 0 1750 ;info 56, 16 1751 0010 01e7 clrf response 1752 1753 ; line_number = 58 1754 ; buffer_in := 0 1755 ;info 58, 17 1756 0011 01e3 clrf buffer_in 1757 ; line_number = 59 1758 ; buffer_out := 0 1759 ;info 59, 18 1760 0012 01e4 clrf buffer_out 1761 ; line_number = 60 1762 ; buffer_amount := 0 1763 ;info 60, 19 1764 0013 01e5 clrf buffer_amount 1765 1766 ; # Warm up the UART: 1767 ; line_number = 63 1768 ; _trisc@5 := _true 1769 ;info 63, 20 1770 00000087 = main__select__1___byte equ _trisc 1771 00000005 = main__select__1___bit equ 5 1772 0014 1683 bsf __rp0___byte, __rp0___bit 1773 0015 1687 bsf main__select__1___byte, main__select__1___bit 1774 ; line_number = 64 1775 ; _trisc@4 := _true 1776 ;info 64, 22 1777 00000087 = main__select__2___byte equ _trisc 1778 00000004 = main__select__2___bit equ 4 1779 0016 1607 bsf main__select__2___byte, main__select__2___bit 1780 1781 ; line_number = 66 1782 ; _txsta := 0 1783 ;info 66, 23 1784 0017 1283 bcf __rp0___byte, __rp0___bit 1785 0018 0196 clrf _txsta 1786 ; line_number = 67 1787 ; _tx9 := _true 1788 ;info 67, 25 1789 0019 1716 bsf _tx9___byte, _tx9___bit 1790 ; #_tx9 := _false 1791 ; line_number = 69 1792 ; _txen := _true 1793 ;info 69, 26 1794 001a 1696 bsf _txen___byte, _txen___bit 1795 ; line_number = 70 1796 ; _brgh := _true 1797 ;info 70, 27 1798 001b 1516 bsf _brgh___byte, _brgh___bit 1799 1800 ; line_number = 72 1801 ; _rcsta := 0 1802 ;info 72, 28 1803 001c 0197 clrf _rcsta 1804 ; line_number = 73 1805 ; _spen := _true 1806 ;info 73, 29 1807 001d 1797 bsf _spen___byte, _spen___bit 1808 ; line_number = 74 1809 ; _rx9 := _true 1810 ;info 74, 30 1811 001e 1717 bsf _rx9___byte, _rx9___bit 1812 ; #_rx9 := _false 1813 ; line_number = 76 1814 ; _cren := _true 1815 ;info 76, 31 1816 001f 1617 bsf _cren___byte, _cren___bit 1817 ; #_adden := _true 1818 ; line_number = 78 1819 ; _adden := _false 1820 ;info 78, 32 1821 0020 1197 bcf _adden___byte, _adden___bit 1822 1823 ; line_number = 80 1824 ; _baudctl := 0 1825 ;info 80, 33 1826 0021 0191 clrf _baudctl 1827 ; line_number = 81 1828 ; _brg16 := _true 1829 ;info 81, 34 1830 0022 1591 bsf _brg16___byte, _brg16___bit 1831 1832 ; #_spbrg := _eusart_19200_low 1833 ; #_spbrgh := _eusart_19200_high 1834 ; #_spbrg := _eusart_115200_low 1835 ; #_spbrgh := _eusart_115200_high 1836 ; #_spbrg := _eusart_230400_low 1837 ; #_spbrgh := _eusart_230400_high 1838 ; #_spbrg := _eusart_406800_low 1839 ; #_spbrgh := _eusart_406800_high 1840 ; line_number = 91 1841 ; _spbrg := _eusart_625000_low 1842 ;info 91, 35 1843 0023 3007 movlw 7 1844 0024 0093 movwf _spbrg 1845 ; line_number = 92 1846 ; _spbrgh := _eusart_625000_high 1847 ;info 92, 37 1848 0025 0192 clrf _spbrgh 1849 ; #_spbrg := _eusart_833333_low 1850 ; #_spbrgh := _eusart_833333_high 1851 1852 ; # For debugging only -- Just output pulses on {reset}: 1853 ; #loop_forever 1854 ; # reset := _false 1855 ; # reset := _true 1856 1857 ; # For debugging only -- Just output pulses on {reset}: 1858 ; #loop_forever 1859 ; # p5 := _false 1860 ; # p5 := _true 1861 1862 ; #loop_forever 1863 ; # if p6 1864 ; # p5 := _true 1865 ; # reset := _true 1866 ; # else 1867 ; # p5 := _false 1868 ; # reset := _false 1869 1870 ; line_number = 114 1871 ; loop_forever start 1872 0026 : main__3: 1873 ; line_number = 115 1874 ; if p6 start 1875 ;info 115, 38 1876 ; =>bit_code_emit@symbol(): sym=p6 1877 ; No 1TEST: true.size=7 false.size=7 1878 ; No 2TEST: true.size=7 false.size=7 1879 ; 2GOTO: Single test with two GOTO's 1880 0026 1d85 btfss p6___byte, p6___bit 1881 0027 2830 goto main__8 1882 ; # P6=1; wait for it to go low: 1883 ; line_number = 117 1884 ; while p6 start 1885 0028 : main__6: 1886 ;info 117, 40 1887 ; =>bit_code_emit@symbol(): sym=p6 1888 ; No 1TEST: true.size=3 false.size=0 1889 ; No 2TEST: true.size=3 false.size=0 1890 ; 1GOTO: Single test with GOTO 1891 0028 1d85 btfss p6___byte, p6___bit 1892 0029 282d goto main__7 1893 ; line_number = 118 1894 ; if _rcif start 1895 ;info 118, 42 1896 ; =>bit_code_emit@symbol(): sym=_rcif 1897 ; 1TEST: Single test with code in skip slot 1898 002a 1a8c btfsc _rcif___byte, _rcif___bit 1899 ; line_number = 119 1900 ; call byte_receive() 1901 ;info 119, 43 1902 002b 2073 call byte_receive 1903 ; Recombine size1 = 0 || size2 = 0 1904 ; line_number = 118 1905 ; if _rcif done 1906 002c 2828 goto main__6 1907 ; Recombine size1 = 0 || size2 = 0 1908 002d : main__7: 1909 ; line_number = 117 1910 ; while p6 done 1911 ; line_number = 120 1912 ; call process() 1913 ;info 120, 45 1914 002d 2039 call process 1915 ; line_number = 121 1916 ; p5 := _false 1917 ;info 121, 46 1918 002e 1085 bcf p5___byte, p5___bit 1919 002f 2838 goto main__9 1920 ; 2GOTO: Starting code 2 1921 0030 : main__8: 1922 0030 1303 bcf __rp1___byte, __rp1___bit 1923 ; # P6=0; wait for it to go high: 1924 ; line_number = 124 1925 ; while !p6 start 1926 0031 : main__4: 1927 ;info 124, 49 1928 ; =>bit_code_emit@symbol(): sym=p6 1929 ; No 1TEST: true.size=0 false.size=3 1930 ; No 2TEST: true.size=0 false.size=3 1931 ; 1GOTO: Single test with GOTO 1932 0031 1985 btfsc p6___byte, p6___bit 1933 0032 2836 goto main__5 1934 ; line_number = 125 1935 ; if _rcif start 1936 ;info 125, 51 1937 ; =>bit_code_emit@symbol(): sym=_rcif 1938 ; 1TEST: Single test with code in skip slot 1939 0033 1a8c btfsc _rcif___byte, _rcif___bit 1940 ; line_number = 126 1941 ; call byte_receive() 1942 ;info 126, 52 1943 0034 2073 call byte_receive 1944 ; Recombine size1 = 0 || size2 = 0 1945 ; line_number = 125 1946 ; if _rcif done 1947 0035 2831 goto main__4 1948 0036 : main__5: 1949 ; Recombine size1 = 0 || size2 = 0 1950 ; line_number = 124 1951 ; while !p6 done 1952 ; line_number = 127 1953 ; call process() 1954 ;info 127, 54 1955 0036 2039 call process 1956 ; line_number = 128 1957 ; p5 := _true 1958 ;info 128, 55 1959 0037 1485 bsf p5___byte, p5___bit 1960 1961 0038 : main__9: 1962 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1963 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1964 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1965 ; line_number = 115 1966 ; if p6 done 1967 ; line_number = 114 1968 ; loop_forever wrap-up 1969 0038 2826 goto main__3 1970 ; line_number = 114 1971 ; loop_forever done 1972 ; delay after procedure statements=non-uniform 1973 1974 1975 1976 1977 ; # # Process commands: 1978 ; # loop_forever 1979 ; # # Wait for some data from the host: 1980 ; # while !p6 1981 ; # if _rcif 1982 ; # call byte_receive() 1983 ; # call process() 1984 ; # 1985 ; # # Wait for some data from the host: 1986 ; # while p6 1987 ; # if _rcif 1988 ; # call byte_receive() 1989 ; # call process() 1990 1991 1992 ; line_number = 145 1993 ;info 145, 57 1994 ; procedure process 1995 0039 : process: 1996 ; arguments_none 1997 ; line_number = 147 1998 ; returns_nothing 1999 2000 ; # This procedure will process the bits coming in on P4:2 and 2001 ; # respond with two bits on P1:0. 2002 2003 ; line_number = 152 2004 ; local low byte 2005 00000068 = process__low equ globals___0+72 2006 ; line_number = 153 2007 ; local high byte 2008 00000069 = process__high equ globals___0+73 2009 2010 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2011 ; line_number = 155 2012 ; p1 := _false 2013 ;info 155, 57 2014 0039 1087 bcf p1___byte, p1___bit 2015 ; line_number = 156 2016 ; p0 := _false 2017 ;info 156, 58 2018 003a 1007 bcf p0___byte, p0___bit 2019 2020 ; line_number = 158 2021 ; if p4 start 2022 ;info 158, 59 2023 ; =>bit_code_emit@symbol(): sym=p4 2024 ; No 1TEST: true.size=36 false.size=16 2025 ; No 2TEST: true.size=36 false.size=16 2026 ; 2GOTO: Single test with two GOTO's 2027 003b 1c05 btfss p4___byte, p4___bit 2028 003c 2862 goto process__12 2029 ; # We have a command to process: 2030 ; line_number = 160 2031 ; if p3 start 2032 ;info 160, 61 2033 ; =>bit_code_emit@symbol(): sym=p3 2034 ; No 1TEST: true.size=26 false.size=6 2035 ; No 2TEST: true.size=26 false.size=6 2036 ; 2GOTO: Single test with two GOTO's 2037 003d 1d87 btfss p3___byte, p3___bit 2038 003e 285a goto process__10 2039 ; # Command 1x: 2040 ; line_number = 162 2041 ; if p2 start 2042 ;info 162, 63 2043 ; =>bit_code_emit@symbol(): sym=p2 2044 ; No 1TEST: true.size=2 false.size=21 2045 ; No 2TEST: true.size=2 false.size=21 2046 ; 2GOTO: Single test with two GOTO's 2047 003f 1d07 btfss p2___byte, p2___bit 2048 0040 2844 goto process__8 2049 ; # Command 11 (Reset): 2050 ; line_number = 164 2051 ; reset := _false 2052 ;info 164, 65 2053 0041 1105 bcf reset___byte, reset___bit 2054 ; line_number = 165 2055 ; delay 10 * microsecond start 2056 ;info 165, 66 2057 ; Delay expression evaluates to 0 2058 ; line_number = 166 2059 ; do_nothing 2060 ;info 166, 66 2061 ; line_number = 165 2062 ; delay 10 * microsecond done 2063 ; line_number = 167 2064 ; reset := _true 2065 ;info 167, 66 2066 0042 1505 bsf reset___byte, reset___bit 2067 ; Recombine code1_bit_states != code2_bit_states 2068 0043 2859 goto process__9 2069 ; 2GOTO: Starting code 2 2070 0044 : process__8: 2071 ; # Command 10 (Receive Byte): 2072 ; line_number = 170 2073 ; if buffer_amount = 0 start 2074 ;info 170, 68 2075 ; Left minus Right 2076 0044 0865 movf buffer_amount,w 2077 ; =>bit_code_emit@symbol(): sym=__z 2078 ; No 1TEST: true.size=1 false.size=16 2079 ; No 2TEST: true.size=1 false.size=16 2080 ; 2GOTO: Single test with two GOTO's 2081 0045 1d03 btfss __z___byte, __z___bit 2082 0046 2849 goto process__6 2083 ; # Empty buffer: 2084 ; line_number = 172 2085 ; p1 := _true 2086 ;info 172, 71 2087 0047 1487 bsf p1___byte, p1___bit 2088 ; Recombine code1_bit_states != code2_bit_states 2089 0048 2859 goto process__7 2090 ; 2GOTO: Starting code 2 2091 0049 : process__6: 2092 ; # We've got one: 2093 ; line_number = 175 2094 ; high := highs[buffer_out & buffer_mask] 2095 ;info 175, 73 2096 0049 301f movlw 31 2097 004a 0564 andwf buffer_out,w 2098 004b 3e43 addlw highs 2099 004c 0084 movwf __fsr 2100 004d 0800 movf __indf,w 2101 004e 00e9 movwf process__high 2102 ; line_number = 176 2103 ; if high@0 start 2104 ;info 176, 79 2105 00000069 = process__select__5___byte equ process__high 2106 00000000 = process__select__5___bit equ 0 2107 ; =>bit_code_emit@symbol(): sym=process__select__5 2108 ; 1TEST: Single test with code in skip slot 2109 004f 1869 btfsc process__select__5___byte, process__select__5___bit 2110 ; line_number = 177 2111 ; p0 := _true 2112 ;info 177, 80 2113 0050 1407 bsf p0___byte, p0___bit 2114 ; Recombine size1 = 0 || size2 = 0 2115 ; line_number = 176 2116 ; if high@0 done 2117 ; line_number = 178 2118 ; response := lows[buffer_out & buffer_mask] 2119 ;info 178, 81 2120 0051 301f movlw 31 2121 0052 0564 andwf buffer_out,w 2122 0053 3e23 addlw lows 2123 0054 0084 movwf __fsr 2124 0055 0800 movf __indf,w 2125 0056 00e7 movwf response 2126 ; line_number = 179 2127 ; buffer_out := buffer_out + 1 2128 ;info 179, 87 2129 0057 0ae4 incf buffer_out,f 2130 ; line_number = 180 2131 ; buffer_amount := buffer_amount - 1 2132 ;info 180, 88 2133 0058 03e5 decf buffer_amount,f 2134 0059 : process__7: 2135 ; 2GOTO: code1 final bitstates:(data:X0=cu=>X0 code:XX=cc=>XX) 2136 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2137 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2138 ; line_number = 170 2139 ; if buffer_amount = 0 done 2140 0059 : process__9: 2141 ; 2GOTO: code1 final bitstates:(data:X0=cu=>X0 code:XX=cc=>XX) 2142 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2143 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2144 ; line_number = 162 2145 ; if p2 done 2146 0059 2861 goto process__11 2147 ; 2GOTO: Starting code 2 2148 005a : process__10: 2149 005a 1303 bcf __rp1___byte, __rp1___bit 2150 ; # Command 0x (Send a byte): 2151 ; line_number = 183 2152 ; _tx9d := _false 2153 ;info 183, 91 2154 005b 1016 bcf _tx9d___byte, _tx9d___bit 2155 ; line_number = 184 2156 ; if p2 start 2157 ;info 184, 92 2158 ; =>bit_code_emit@symbol(): sym=p2 2159 ; 1TEST: Single test with code in skip slot 2160 005c 1907 btfsc p2___byte, p2___bit 2161 ; line_number = 185 2162 ; _tx9d := _true 2163 ;info 185, 93 2164 005d 1416 bsf _tx9d___byte, _tx9d___bit 2165 ; Recombine size1 = 0 || size2 = 0 2166 ; line_number = 184 2167 ; if p2 done 2168 ; line_number = 186 2169 ; _txreg := command 2170 ;info 186, 94 2171 005e 0866 movf command,w 2172 005f 0095 movwf _txreg 2173 ; line_number = 187 2174 ; p1 := _true 2175 ;info 187, 96 2176 0060 1487 bsf p1___byte, p1___bit 2177 0061 : process__11: 2178 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2179 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2180 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2181 ; line_number = 160 2182 ; if p3 done 2183 0061 2872 goto process__13 2184 ; 2GOTO: Starting code 2 2185 0062 : process__12: 2186 ; # We just need to shift command data in and the response data out: 2187 ; line_number = 190 2188 ; command := command >> 2 2189 ;info 190, 98 2190 ; Assignment of variable to self (no code needed) 2191 0062 0ce6 rrf command,f 2192 0063 0ce6 rrf command,f 2193 0064 303f movlw 63 2194 0065 05e6 andwf command,f 2195 ; line_number = 191 2196 ; if p3 start 2197 ;info 191, 102 2198 ; =>bit_code_emit@symbol(): sym=p3 2199 ; 1TEST: Single test with code in skip slot 2200 0066 1987 btfsc p3___byte, p3___bit 2201 ; line_number = 192 2202 ; command@7 := _true 2203 ;info 192, 103 2204 00000066 = process__select__1___byte equ command 2205 00000007 = process__select__1___bit equ 7 2206 0067 17e6 bsf process__select__1___byte, process__select__1___bit 2207 ; Recombine size1 = 0 || size2 = 0 2208 ; line_number = 191 2209 ; if p3 done 2210 ; line_number = 193 2211 ; if p2 start 2212 ;info 193, 104 2213 ; =>bit_code_emit@symbol(): sym=p2 2214 ; 1TEST: Single test with code in skip slot 2215 0068 1907 btfsc p2___byte, p2___bit 2216 ; line_number = 194 2217 ; command@6 := _true 2218 ;info 194, 105 2219 00000066 = process__select__2___byte equ command 2220 00000006 = process__select__2___bit equ 6 2221 0069 1766 bsf process__select__2___byte, process__select__2___bit 2222 2223 ; Recombine size1 = 0 || size2 = 0 2224 ; line_number = 193 2225 ; if p2 done 2226 ; line_number = 196 2227 ; if response@7 start 2228 ;info 196, 106 2229 00000067 = process__select__3___byte equ response 2230 00000007 = process__select__3___bit equ 7 2231 ; =>bit_code_emit@symbol(): sym=process__select__3 2232 ; 1TEST: Single test with code in skip slot 2233 006a 1be7 btfsc process__select__3___byte, process__select__3___bit 2234 ; line_number = 197 2235 ; p1 := _true 2236 ;info 197, 107 2237 006b 1487 bsf p1___byte, p1___bit 2238 ; Recombine size1 = 0 || size2 = 0 2239 ; line_number = 196 2240 ; if response@7 done 2241 ; line_number = 198 2242 ; if response@6 start 2243 ;info 198, 108 2244 00000067 = process__select__4___byte equ response 2245 00000006 = process__select__4___bit equ 6 2246 ; =>bit_code_emit@symbol(): sym=process__select__4 2247 ; 1TEST: Single test with code in skip slot 2248 006c 1b67 btfsc process__select__4___byte, process__select__4___bit 2249 ; line_number = 199 2250 ; p0 := _true 2251 ;info 199, 109 2252 006d 1407 bsf p0___byte, p0___bit 2253 ; Recombine size1 = 0 || size2 = 0 2254 ; line_number = 198 2255 ; if response@6 done 2256 ; line_number = 200 2257 ; response := response << 2 2258 ;info 200, 110 2259 ; Assignment of variable to self (no code needed) 2260 006e 0de7 rlf response,f 2261 006f 0de7 rlf response,f 2262 0070 30fc movlw 252 2263 0071 05e7 andwf response,f 2264 2265 2266 0072 : process__13: 2267 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2268 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2269 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2270 ; line_number = 158 2271 ; if p4 done 2272 ; delay after procedure statements=non-uniform 2273 ; Implied return 2274 0072 3400 retlw 0 2275 2276 2277 2278 2279 ; line_number = 203 2280 ;info 203, 115 2281 ; procedure byte_receive 2282 0073 : byte_receive: 2283 ; arguments_none 2284 ; line_number = 205 2285 ; returns_nothing 2286 2287 ; # This procedure will receive a 9-bit "byte" from the UART 2288 ; # and store the result into the {highs} and {lows} buffers. 2289 2290 ; line_number = 210 2291 ; local high byte 2292 0000006a = byte_receive__high equ globals___0+74 2293 ; line_number = 211 2294 ; local low byte 2295 0000006b = byte_receive__low equ globals___0+75 2296 2297 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2298 ; line_number = 213 2299 ; high := 0 2300 ;info 213, 115 2301 0073 01ea clrf byte_receive__high 2302 ; line_number = 214 2303 ; if _rx9 start 2304 ;info 214, 116 2305 ; =>bit_code_emit@symbol(): sym=_rx9 2306 ; 1TEST: Single test with code in skip slot 2307 0074 1b17 btfsc _rx9___byte, _rx9___bit 2308 ; line_number = 215 2309 ; high := high + 1 2310 ;info 215, 117 2311 0075 0aea incf byte_receive__high,f 2312 ; Recombine size1 = 0 || size2 = 0 2313 ; line_number = 214 2314 ; if _rx9 done 2315 ; line_number = 216 2316 ; highs[buffer_in & buffer_mask] := high 2317 ;info 216, 118 2318 ; index_fsr_first 2319 0076 301f movlw 31 2320 0077 0563 andwf buffer_in,w 2321 0078 3e43 addlw highs 2322 0079 0084 movwf __fsr 2323 007a 086a movf byte_receive__high,w 2324 007b 0080 movwf __indf 2325 ; line_number = 217 2326 ; lows[buffer_in & buffer_mask] := _rcreg 2327 ;info 217, 124 2328 ; index_fsr_first 2329 007c 301f movlw 31 2330 007d 0563 andwf buffer_in,w 2331 007e 3e23 addlw lows 2332 007f 0084 movwf __fsr 2333 0080 0814 movf _rcreg,w 2334 0081 0080 movwf __indf 2335 ; line_number = 218 2336 ; buffer_in := buffer_in + 1 2337 ;info 218, 130 2338 0082 0ae3 incf buffer_in,f 2339 ; line_number = 219 2340 ; buffer_amount := buffer_amount + 1 2341 ;info 219, 131 2342 0083 0ae5 incf buffer_amount,f 2343 2344 2345 2346 2347 2348 ; delay after procedure statements=non-uniform 2349 ; Implied return 2350 0084 3400 retlw 0 2351 2352 2353 2354 2355 2356 ; Appending 7 delayed procedures to code bank 0 2357 ; buffer = '_uart' 2358 ; line_number = 7 2359 ;info 7, 133 2360 ; procedure _uart_byte_safe_get 2361 0085 : _uart_byte_safe_get: 2362 ; arguments_none 2363 ; line_number = 9 2364 ; returns byte 2365 2366 ; # This procedure will the next byte from UART. If no byte 2367 ; # received in a reasonable time, 0xfc is returned. 2368 2369 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2370 ; line_number = 14 2371 ; loop_exactly 255 start 2372 ;info 14, 133 2373 0000006c = _uart_byte_safe_get__1 equ globals___0+76 2374 0085 30ff movlw 255 2375 0086 00ec movwf _uart_byte_safe_get__1 2376 0087 : _uart_byte_safe_get__2: 2377 ; line_number = 15 2378 ; loop_exactly 255 start 2379 ;info 15, 135 2380 0000006d = _uart_byte_safe_get__3 equ globals___0+77 2381 0087 30ff movlw 255 2382 0088 00ed movwf _uart_byte_safe_get__3 2383 0089 : _uart_byte_safe_get__4: 2384 ; line_number = 16 2385 ; if _rcif start 2386 ;info 16, 137 2387 ; =>bit_code_emit@symbol(): sym=_rcif 2388 ; No 1TEST: true.size=2 false.size=0 2389 ; No 2TEST: true.size=2 false.size=0 2390 ; 1GOTO: Single test with GOTO 2391 0089 1e8c btfss _rcif___byte, _rcif___bit 2392 008a 288d goto _uart_byte_safe_get__5 2393 ; line_number = 17 2394 ; return _rcreg start 2395 ; line_number = 17 2396 ;info 17, 139 2397 008b 0814 movf _rcreg,w 2398 008c 0008 return 2399 ; line_number = 17 2400 ; return _rcreg done 2401 ; Recombine size1 = 0 || size2 = 0 2402 008d : _uart_byte_safe_get__5: 2403 ; line_number = 16 2404 ; if _rcif done 2405 ; line_number = 15 2406 ; loop_exactly 255 wrap-up 2407 008d 0bed decfsz _uart_byte_safe_get__3,f 2408 008e 2889 goto _uart_byte_safe_get__4 2409 ; line_number = 15 2410 ; loop_exactly 255 done 2411 ; line_number = 14 2412 ; loop_exactly 255 wrap-up 2413 008f 0bec decfsz _uart_byte_safe_get__1,f 2414 0090 2887 goto _uart_byte_safe_get__2 2415 ; line_number = 14 2416 ; loop_exactly 255 done 2417 ; line_number = 18 2418 ; return 0xfc start 2419 ; line_number = 18 2420 ;info 18, 145 2421 0091 34fc retlw 252 2422 ; line_number = 18 2423 ; return 0xfc done 2424 2425 2426 ; delay after procedure statements=non-uniform 2427 2428 2429 2430 2431 ; line_number = 21 2432 ;info 21, 146 2433 ; procedure _uart_byte_get 2434 0092 : _uart_byte_get: 2435 ; arguments_none 2436 ; line_number = 23 2437 ; returns byte 2438 2439 ; # This procedure will return the next byte from the UART. 2440 2441 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2442 ; line_number = 27 2443 ; while !_rcif start 2444 0092 : _uart_byte_get__1: 2445 ;info 27, 146 2446 ; =>bit_code_emit@symbol(): sym=_rcif 2447 ; 1TEST: Single test with code in skip slot 2448 0092 1e8c btfss _rcif___byte, _rcif___bit 2449 ; line_number = 28 2450 ; do_nothing 2451 ;info 28, 147 2452 0093 2892 goto _uart_byte_get__1 2453 ; Recombine size1 = 0 || size2 = 0 2454 ; line_number = 27 2455 ; while !_rcif done 2456 ; line_number = 29 2457 ; return _rcreg start 2458 ; line_number = 29 2459 ;info 29, 148 2460 0094 0814 movf _rcreg,w 2461 0095 0008 return 2462 ; line_number = 29 2463 ; return _rcreg done 2464 2465 2466 ; delay after procedure statements=non-uniform 2467 2468 2469 2470 2471 ; line_number = 32 2472 ;info 32, 150 2473 ; procedure _uart_hex_put 2474 0096 : _uart_hex_put: 2475 ; Last argument is sitting in W; save into argument variable 2476 0096 00a0 movwf _uart_hex_put__value 2477 ; delay=4294967295 2478 ; line_number = 33 2479 ; argument value byte 2480 00000020 = _uart_hex_put__value equ globals___0 2481 ; line_number = 34 2482 ; returns_nothing 2483 2484 ; # This procedure will output {value} to the UART as a 2-digit 2485 ; # hexadecimal number. 2486 2487 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2488 ; line_number = 39 2489 ; call _uart_nibble_put(value >> 4) 2490 ;info 39, 151 2491 0000006e = _uart_hex_put__1 equ globals___0+78 2492 0097 0e20 swapf _uart_hex_put__value,w 2493 0098 390f andlw 15 2494 0099 209e call _uart_nibble_put 2495 ; line_number = 40 2496 ; call _uart_nibble_put(value & 0xf) 2497 ;info 40, 154 2498 009a 300f movlw 15 2499 009b 0520 andwf _uart_hex_put__value,w 2500 009c 209e call _uart_nibble_put 2501 2502 2503 ; delay after procedure statements=non-uniform 2504 ; Implied return 2505 009d 3400 retlw 0 2506 2507 2508 2509 2510 ; line_number = 43 2511 ;info 43, 158 2512 ; procedure _uart_nibble_put 2513 009e : _uart_nibble_put: 2514 ; Last argument is sitting in W; save into argument variable 2515 009e 00a1 movwf _uart_nibble_put__nibble 2516 ; delay=4294967295 2517 ; line_number = 44 2518 ; argument nibble byte 2519 00000021 = _uart_nibble_put__nibble equ globals___0+1 2520 ; line_number = 45 2521 ; returns_nothing 2522 2523 ; # This procedure will output {value} to UART as a 1 digit 2524 ; # hexadecimal number. 2525 2526 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2527 ; line_number = 50 2528 ; if nibble < 10 start 2529 ;info 50, 159 2530 009f 300a movlw 10 2531 00a0 0221 subwf _uart_nibble_put__nibble,w 2532 ; =>bit_code_emit@symbol(): sym=__c 2533 ; No 1TEST: true.size=1 false.size=1 2534 ; 2TEST: two tests with code in both delay slots 2535 00a1 1803 btfsc __c___byte, __c___bit 2536 ; line_number = 53 2537 ; nibble := nibble - 10 + 'A' 2538 ;info 53, 162 2539 00a2 3037 movlw 55 2540 00a3 1c03 btfss __c___byte, __c___bit 2541 ; line_number = 51 2542 ; nibble := nibble + '0' 2543 ;info 51, 164 2544 00a4 3030 movlw 48 2545 00a5 07a1 addwf _uart_nibble_put__nibble,f 2546 ; line_number = 50 2547 ; if nibble < 10 done 2548 ; line_number = 54 2549 ; call _uart_byte_put(nibble) 2550 ;info 54, 166 2551 00a6 0821 movf _uart_nibble_put__nibble,w 2552 00a7 20b1 call _uart_byte_put 2553 2554 2555 ; delay after procedure statements=non-uniform 2556 ; Implied return 2557 00a8 3400 retlw 0 2558 2559 2560 2561 2562 ; line_number = 57 2563 ;info 57, 169 2564 ; procedure _uart_space_put 2565 00a9 : _uart_space_put: 2566 ; arguments_none 2567 ; line_number = 59 2568 ; returns_nothing 2569 2570 ; # This procedure will output a space to the UART. 2571 2572 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2573 ; line_number = 63 2574 ; call _uart_byte_put(' ') 2575 ;info 63, 169 2576 00a9 3020 movlw 32 2577 00aa 20b1 call _uart_byte_put 2578 2579 2580 ; delay after procedure statements=non-uniform 2581 ; Implied return 2582 00ab 3400 retlw 0 2583 2584 2585 2586 2587 ; line_number = 66 2588 ;info 66, 172 2589 ; procedure _uart_crlf_put 2590 00ac : _uart_crlf_put: 2591 ; arguments_none 2592 ; line_number = 68 2593 ; returns_nothing 2594 2595 ; # This procedure will output a carriage return line feed sequecne to 2596 ; # the UART. 2597 2598 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2599 ; line_number = 73 2600 ; call _uart_byte_put('\cr\') 2601 ;info 73, 172 2602 00ac 300d movlw 13 2603 00ad 20b1 call _uart_byte_put 2604 ; line_number = 74 2605 ; call _uart_byte_put('\lf\') 2606 ;info 74, 174 2607 00ae 300a movlw 10 2608 00af 20b1 call _uart_byte_put 2609 2610 2611 ; delay after procedure statements=non-uniform 2612 ; Implied return 2613 00b0 3400 retlw 0 2614 2615 2616 2617 2618 ; line_number = 77 2619 ;info 77, 177 2620 ; procedure _uart_byte_put 2621 00b1 : _uart_byte_put: 2622 ; Last argument is sitting in W; save into argument variable 2623 00b1 00a2 movwf _uart_byte_put__byte 2624 ; delay=4294967295 2625 ; line_number = 78 2626 ; argument byte byte 2627 00000022 = _uart_byte_put__byte equ globals___0+2 2628 ; line_number = 79 2629 ; returns_nothing 2630 2631 ; # This procedure will send {byte} out using to the UART. 2632 2633 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2634 ; line_number = 83 2635 ; while !_txif start 2636 00b2 : _uart_byte_put__1: 2637 ;info 83, 178 2638 ; =>bit_code_emit@symbol(): sym=_txif 2639 ; 1TEST: Single test with code in skip slot 2640 00b2 1c8c btfss _txif___byte, _txif___bit 2641 ; line_number = 84 2642 ; do_nothing 2643 ;info 84, 179 2644 00b3 28b2 goto _uart_byte_put__1 2645 ; Recombine size1 = 0 || size2 = 0 2646 ; line_number = 83 2647 ; while !_txif done 2648 ; line_number = 85 2649 ; _txreg := byte 2650 ;info 85, 180 2651 00b4 0822 movf _uart_byte_put__byte,w 2652 00b5 0095 movwf _txreg 2653 2654 2655 ; delay after procedure statements=non-uniform 2656 ; Implied return 2657 00b6 3400 retlw 0 2658 2659 2660 2661 2662 ; Configuration bits 2663 ; address = 0x2007, fill = 0x3000 2664 ; fcmen = off (0x0) 2665 ; ieso = off (0x0) 2666 ; boden = off (0x0) 2667 ; cpd = off (0x80) 2668 ; cp = off (0x40) 2669 ; mclre = off (0x0) 2670 ; pwrte = off (0x10) 2671 ; wdte = off (0x0) 2672 ; fosc = hs (0x2) 2673 ; 12498 = 0x30d2 2674 30d2 = __config 12498 2675 ; Define start addresses for data regions 2676 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 2677 ; Region="globals___0" Address=32" Size=80 Bytes=79 Bits=0 Available=1 2678 ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80 2679 ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80 2680 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 2681 end