1 radix dec 2 ; Code bank 0; Start address: 0; End address: 2047 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 00000110 = globals___2 equ 272 10 00000190 = globals___3 equ 400 11 00000000 = __indf equ 0 12 00000002 = __pcl equ 2 13 00000003 = __status equ 3 14 00000004 = __fsr equ 4 15 00000003 = __c___byte equ 3 16 00000000 = __c___bit equ 0 17 00000003 = __z___byte equ 3 18 00000002 = __z___bit equ 2 19 00000003 = __rp0___byte equ 3 20 00000005 = __rp0___bit equ 5 21 00000003 = __rp1___byte equ 3 22 00000006 = __rp1___bit equ 6 23 00000003 = __irp___byte equ 3 24 00000007 = __irp___bit equ 7 25 0000000a = __pclath equ 10 26 0000000a = __cb0___byte equ 10 27 00000003 = __cb0___bit equ 3 28 0000000a = __cb1___byte equ 10 29 00000004 = __cb1___bit equ 4 30 31 ; # Copyright (c) 2006 by Wayne C. Gramlich. 32 ; # All rights reserved. 33 34 ; buffer = 'shaft2' 35 ; line_number = 6 36 ; library _pic16f767 entered 37 38 ; # Copyright (c) 2004-2007 by Wayne C. Gramlich 39 ; # All rights reserved. 40 41 ; buffer = '_pic16f767' 42 ; line_number = 6 43 ; processor pic16f767 44 ; line_number = 7 45 ; configure_address 0x2007 46 ; line_number = 8 47 ; configure_fill 0x0600 48 ; line_number = 9 49 ; configure_option cp: off = 0x2000 50 ; line_number = 10 51 ; configure_option cp: on = 0x0000 52 ; line_number = 11 53 ; configure_option cpmx: rc1 = 0x1000 54 ; line_number = 12 55 ; configure_option cpmx: rb3 = 0x0000 56 ; line_number = 13 57 ; configure_option debug: off = 0x0800 58 ; line_number = 14 59 ; configure_option debug: on = 0x0000 60 ; line_number = 15 61 ; configure_option borv: borv11 = 0x0180 62 ; line_number = 16 63 ; configure_option borv: borv10 = 0x0100 64 ; line_number = 17 65 ; configure_option borv: borv01 = 0x0080 66 ; line_number = 18 67 ; configure_option borv: borv00 = 0x0000 68 ; line_number = 19 69 ; configure_option boren: on = 0x40 70 ; line_number = 20 71 ; configure_option boren: off = 0x00 72 ; line_number = 21 73 ; configure_option mclre: on = 0x20 74 ; line_number = 22 75 ; configure_option mclre: off = 0x00 76 ; line_number = 23 77 ; configure_option pwrten: off = 8 78 ; line_number = 24 79 ; configure_option pwrten: on = 0 80 ; line_number = 25 81 ; configure_option wdten: on = 4 82 ; line_number = 26 83 ; configure_option wdten: off = 0 84 ; line_number = 27 85 ; configure_option fosc: rc_clk = 0x13 86 ; line_number = 28 87 ; configure_option fosc: rc_no_clk = 0x12 88 ; line_number = 29 89 ; configure_option fosc: int_clk = 0x11 90 ; line_number = 30 91 ; configure_option fosc: int_no_clk = 0x10 92 ; line_number = 31 93 ; configure_option fosc: extclk = 3 94 ; line_number = 32 95 ; configure_option fosc: hs = 2 96 ; line_number = 33 97 ; configure_option fosc: xt = 1 98 ; line_number = 34 99 ; configure_option fosc: lp = 0 100 101 ; line_number = 36 102 ; configure_address 0x2008 103 ; line_number = 37 104 ; configure_fill 0x3fbc 105 ; line_number = 38 106 ; configure_option borsen: on = 0x0040 107 ; line_number = 39 108 ; configure_option borsen: off = 0x0000 109 ; line_number = 40 110 ; configure_option ieso: on = 0x0002 111 ; line_number = 41 112 ; configure_option ieso: off = 0x0000 113 ; line_number = 42 114 ; configure_option fcmen: on = 0x0001 115 ; line_number = 43 116 ; configure_option fcmen: off = 0x0000 117 118 ; line_number = 45 119 ; code_bank 0x0 : 0x7ff 120 ; line_number = 46 121 ; code_bank 0x800 : 0xfff 122 ; line_number = 47 123 ; code_bank 0x1000 : 0x17ff 124 ; line_number = 48 125 ; code_bank 0x1800 : 0x1fff 126 ; line_number = 49 127 ; data_bank 0x0 : 0x7f 128 ; line_number = 50 129 ; data_bank 0x80 : 0xff 130 ; line_number = 51 131 ; data_bank 0x100 : 0x17f 132 ; line_number = 52 133 ; data_bank 0x180 : 0x1ff 134 ; line_number = 53 135 ; global_region 0x20 : 0x6f 136 ; line_number = 54 137 ; global_region 0xa0 : 0xef 138 ; line_number = 55 139 ; global_region 0x110 : 0x16f 140 ; line_number = 56 141 ; global_region 0x190 : 0x1ff 142 ; line_number = 57 143 ; shared_region 0x70 : 0x7f 144 145 ; line_number = 59 146 ; interrupts_possible 147 ; line_number = 60 148 ; packages pdip = 28 149 ; line_number = 61 150 ; pin mclr, vpp, thv, mclr_unused 151 ; line_number = 62 152 ; pin_bindings pdip = 1 153 ; line_number = 63 154 ; pin ra0_in, ra0_out, an0, ra0_unused 155 ; line_number = 64 156 ; pin_bindings pdip = 2 157 ; line_number = 65 158 ; bind_to _porta@0 159 ; line_number = 66 160 ; or_if ra0_in _trisa 1 161 ; line_number = 67 162 ; or_if ra0_in _adcon1 15 163 ; line_number = 68 164 ; or_if ra0_in _adcon0 0 165 ; line_number = 69 166 ; or_if ra0_out _trisa 0 167 ; line_number = 70 168 ; or_if ra0_out _adcon1 15 169 ; line_number = 71 170 ; or_if ra0_out _adcon0 0 171 ; line_number = 72 172 ; pin ra1_in, ra1_out, an1, ra1_unused 173 ; line_number = 73 174 ; pin_bindings pdip = 3 175 ; line_number = 74 176 ; bind_to _porta@1 177 ; line_number = 75 178 ; or_if ra1_in _trisa 2 179 ; line_number = 76 180 ; or_if ra1_in _adcon1 15 181 ; line_number = 77 182 ; or_if ra1_in _adcon0 0 183 ; line_number = 78 184 ; or_if ra1_out _trisa 0 185 ; line_number = 79 186 ; or_if ra1_out _adcon1 15 187 ; line_number = 80 188 ; or_if ra1_out _adcon0 0 189 ; line_number = 81 190 ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused 191 ; line_number = 82 192 ; pin_bindings pdip = 4 193 ; line_number = 83 194 ; bind_to _porta@2 195 ; line_number = 84 196 ; or_if ra2_in _trisa 4 197 ; line_number = 85 198 ; or_if ra2_in _adcon1 15 199 ; line_number = 86 200 ; or_if ra2_in _adcon0 0 201 ; line_number = 87 202 ; or_if ra2_out _trisa 0 203 ; line_number = 88 204 ; or_if ra2_out _adcon1 15 205 ; line_number = 89 206 ; or_if ra2_out _adcon0 0 207 ; line_number = 90 208 ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused 209 ; line_number = 91 210 ; pin_bindings pdip = 5 211 ; line_number = 92 212 ; bind_to _porta@3 213 ; line_number = 93 214 ; or_if ra3_in _trisa 8 215 ; line_number = 94 216 ; or_if ra3_in _adcon1 15 217 ; line_number = 95 218 ; or_if ra3_in _adcon0 0 219 ; line_number = 96 220 ; or_if ra3_out _trisa 0 221 ; line_number = 97 222 ; or_if ra3_out _adcon1 15 223 ; line_number = 98 224 ; or_if ra3_out _adcon0 0 225 ; line_number = 99 226 ; pin ra4_in, ra4_out, t0cki, ra4_unused 227 ; line_number = 100 228 ; pin_bindings pdip = 6 229 ; line_number = 101 230 ; bind_to _porta@4 231 ; line_number = 102 232 ; or_if ra4_in _trisa 16 233 ; line_number = 103 234 ; or_if ra4_in _adcon1 15 235 ; line_number = 104 236 ; or_if ra4_in _adcon0 0 237 ; line_number = 105 238 ; or_if ra4_out _trisa 0 239 ; line_number = 106 240 ; or_if ra4_out _adcon1 15 241 ; line_number = 107 242 ; or_if ra4_out _adcon0 0 243 ; line_number = 108 244 ; pin ra5_in, ra5_out, an4, ra5_unused 245 ; line_number = 109 246 ; pin_bindings pdip = 7 247 ; line_number = 110 248 ; bind_to _porta@5 249 ; line_number = 111 250 ; or_if ra5_in _trisa 32 251 ; line_number = 112 252 ; or_if ra5_in _adcon1 15 253 ; line_number = 113 254 ; or_if ra5_in _adcon1 0 255 ; line_number = 114 256 ; or_if ra5_out _trisa 0 257 ; line_number = 115 258 ; or_if ra5_out _adcon1 15 259 ; line_number = 116 260 ; or_if ra5_out _adcon0 0 261 ; line_number = 117 262 ; pin vss, ground 263 ; line_number = 118 264 ; pin_bindings pdip = 8 265 ; line_number = 119 266 ; pin osc1, clkin 267 ; line_number = 120 268 ; pin_bindings pdip = 9 269 ; line_number = 121 270 ; pin osc2, clkout 271 ; line_number = 122 272 ; pin_bindings pdip = 10 273 ; line_number = 123 274 ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused 275 ; line_number = 124 276 ; pin_bindings pdip = 11 277 ; line_number = 125 278 ; bind_to _portc@0 279 ; line_number = 126 280 ; or_if rc0_in _trisc 1 281 ; line_number = 127 282 ; or_if rc0_in _adcon1 15 283 ; line_number = 128 284 ; or_if rc0_in _adcon0 0 285 ; line_number = 129 286 ; or_if rc0_out _trisc 0 287 ; line_number = 130 288 ; or_if rc0_out _adcon1 15 289 ; line_number = 131 290 ; or_if rc0_out _adcon0 0 291 ; line_number = 132 292 ; or_if rc0_unused _trisc 1 293 ; line_number = 133 294 ; or_if rc0_unused _adcon1 15 295 ; line_number = 134 296 ; or_if rc0_unused _adcon0 0 297 ; line_number = 135 298 ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused 299 ; line_number = 136 300 ; pin_bindings pdip = 12 301 ; line_number = 137 302 ; bind_to _portc@1 303 ; line_number = 138 304 ; or_if rc1_in _trisc 2 305 ; line_number = 139 306 ; or_if rc1_in _adcon1 15 307 ; line_number = 140 308 ; or_if rc1_in _adcon0 0 309 ; line_number = 141 310 ; or_if rc1_out _trisc 0 311 ; line_number = 142 312 ; or_if rc1_out _adcon1 15 313 ; line_number = 143 314 ; or_if rc1_out _adcon0 0 315 ; line_number = 144 316 ; or_if rc1_unused _trisc 2 317 ; line_number = 145 318 ; or_if rc1_unused _adcon1 15 319 ; line_number = 146 320 ; or_if rc1_unused _adcon0 0 321 ; line_number = 147 322 ; pin rc2_in, rc2_out, ccp1, rc2_unused 323 ; line_number = 148 324 ; pin_bindings pdip = 13 325 ; line_number = 149 326 ; bind_to _portc@2 327 ; line_number = 150 328 ; or_if rc2_in _trisc 4 329 ; line_number = 151 330 ; or_if rc2_in _adcon1 15 331 ; line_number = 152 332 ; or_if rc2_in _adcon0 0 333 ; line_number = 153 334 ; or_if rc2_out _trisc 0 335 ; line_number = 154 336 ; or_if rc2_out _adcon1 15 337 ; line_number = 155 338 ; or_if rc2_out _adcon0 0 339 ; line_number = 156 340 ; or_if rc2_unused _trisc 4 341 ; line_number = 157 342 ; or_if rc2_unused _adcon1 15 343 ; line_number = 158 344 ; or_if rc2_unused _adcon0 0 345 ; line_number = 159 346 ; pin rc3_in, rc3_out, sck_master, sck_slave, scl, rc3_unused 347 ; line_number = 160 348 ; pin_bindings pdip = 14 349 ; line_number = 161 350 ; bind_to _portc@3 351 ; line_number = 162 352 ; or_if rc3_in _trisc 8 353 ; line_number = 163 354 ; or_if rc3_in _adcon1 15 355 ; line_number = 164 356 ; or_if rc3_in _adcon0 0 357 ; line_number = 165 358 ; or_if rc3_out _trisc 0 359 ; line_number = 166 360 ; or_if rc3_out _adcon1 15 361 ; line_number = 167 362 ; or_if rc3_out _adcon0 0 363 ; line_number = 168 364 ; or_if sck_master _trisc 0 365 ; line_number = 169 366 ; or_if sck_master _adcon1 15 367 ; line_number = 170 368 ; or_if sck_master _adcon0 0 369 ; line_number = 171 370 ; or_if sck_slave _trisc 8 371 ; line_number = 172 372 ; or_if sck_slave _adcon1 15 373 ; line_number = 173 374 ; or_if sck_slave _adcon0 0 375 ; line_number = 174 376 ; or_if rc3_unused _trisc 8 377 ; line_number = 175 378 ; or_if rc3_unused _adcon1 15 379 ; line_number = 176 380 ; or_if rc3_unused _adcon0 0 381 ; line_number = 177 382 ; pin rc4_in, rc4_out, sdi, sda, rc4_unused 383 ; line_number = 178 384 ; pin_bindings pdip = 15 385 ; line_number = 179 386 ; bind_to _portc@4 387 ; line_number = 180 388 ; or_if rc4_in _trisc 16 389 ; line_number = 181 390 ; or_if rc4_in _adcon1 15 391 ; line_number = 182 392 ; or_if rc4_in _adcon0 0 393 ; line_number = 183 394 ; or_if rc4_out _trisc 0 395 ; line_number = 184 396 ; or_if rc4_out _adcon1 15 397 ; line_number = 185 398 ; or_if rc4_out _adcon0 0 399 ; line_number = 186 400 ; or_if sdi _trisc 16 401 ; line_number = 187 402 ; or_if sdi _adcon1 15 403 ; line_number = 188 404 ; or_if sdi _adcon0 0 405 ; line_number = 189 406 ; or_if rc4_unused _trisc 16 407 ; line_number = 190 408 ; or_if rc4_unused _adcon1 15 409 ; line_number = 191 410 ; or_if rc4_unused _adcon0 0 411 ; line_number = 192 412 ; pin rc5_in, rc5_out, sdo, rc5_unused 413 ; line_number = 193 414 ; pin_bindings pdip = 16 415 ; line_number = 194 416 ; bind_to _portc@5 417 ; line_number = 195 418 ; or_if rc5_in _trisc 32 419 ; line_number = 196 420 ; or_if rc5_in _adcon1 15 421 ; line_number = 197 422 ; or_if rc5_in _adcon0 0 423 ; line_number = 198 424 ; or_if rc5_out _trisc 0 425 ; line_number = 199 426 ; or_if rc5_out _adcon1 15 427 ; line_number = 200 428 ; or_if rc5_out _adcon0 0 429 ; line_number = 201 430 ; or_if sdo _trisc 0 431 ; line_number = 202 432 ; or_if sdo _adcon1 15 433 ; line_number = 203 434 ; or_if sdo _adcon0 0 435 ; line_number = 204 436 ; or_if rc5_unused _trisc 32 437 ; line_number = 205 438 ; or_if rc5_unused _adcon1 15 439 ; line_number = 206 440 ; or_if rc5_unused _adcon0 0 441 ; line_number = 207 442 ; pin rc6_in, rc6_out, tx, ck, rc6_unused 443 ; line_number = 208 444 ; pin_bindings pdip = 17 445 ; line_number = 209 446 ; bind_to _portc@6 447 ; line_number = 210 448 ; or_if rc6_in _trisc 64 449 ; line_number = 211 450 ; or_if rc6_in _adcon1 15 451 ; line_number = 212 452 ; or_if rc6_in _adcon0 0 453 ; line_number = 213 454 ; or_if rc6_out _trisc 0 455 ; line_number = 214 456 ; or_if rc6_out _adcon1 15 457 ; line_number = 215 458 ; or_if rc6_out _adcon0 0 459 ; # Note: for TX, configure {_trisc} as input (as per spec. sheet): 460 ; line_number = 217 461 ; or_if tx _trisc 0 462 ; line_number = 218 463 ; or_if tx _adcon1 15 464 ; line_number = 219 465 ; or_if tx _adcon0 0 466 ; line_number = 220 467 ; or_if rc6_unused _trisc 64 468 ; line_number = 221 469 ; or_if rc6_unused _adcon1 15 470 ; line_number = 222 471 ; or_if rc6_unused _adcon0 0 472 ; line_number = 223 473 ; pin rc7_in, rc7_out, rx, dt, rc7_unused 474 ; line_number = 224 475 ; pin_bindings pdip = 18 476 ; line_number = 225 477 ; bind_to _portc@7 478 ; line_number = 226 479 ; or_if rc7_in _trisc 128 480 ; line_number = 227 481 ; or_if rc7_in _adcon1 15 482 ; line_number = 228 483 ; or_if rc7_in _adcon0 0 484 ; line_number = 229 485 ; or_if rx _trisc 128 486 ; line_number = 230 487 ; or_if rx _adcon1 15 488 ; line_number = 231 489 ; or_if rx _adcon0 0 490 ; line_number = 232 491 ; or_if rc7_out _trisc 0 492 ; line_number = 233 493 ; or_if rc7_out _adcon1 15 494 ; line_number = 234 495 ; or_if rc7_out _adcon0 0 496 ; line_number = 235 497 ; or_if rc7_unused _trisc 128 498 ; line_number = 236 499 ; or_if rc7_unused _adcon1 15 500 ; line_number = 237 501 ; or_if rc7_unused _adcon0 0 502 ; line_number = 238 503 ; pin vss2, ground2 504 ; line_number = 239 505 ; pin_bindings pdip = 19 506 ; line_number = 240 507 ; pin vdd, power_supply 508 ; line_number = 241 509 ; pin_bindings pdip = 20 510 ; line_number = 242 511 ; pin rb0_in, rb0_out, int, rb0_unused 512 ; line_number = 243 513 ; pin_bindings pdip = 21 514 ; line_number = 244 515 ; bind_to _portb@0 516 ; line_number = 245 517 ; or_if rb0_in _trisb 1 518 ; line_number = 246 519 ; or_if rb0_in _adcon1 15 520 ; line_number = 247 521 ; or_if rb0_in _adcon0 0 522 ; line_number = 248 523 ; or_if rb0_out _trisb 0 524 ; line_number = 249 525 ; or_if rb0_out _adcon1 15 526 ; line_number = 250 527 ; or_if rb0_out _adcon0 0 528 ; line_number = 251 529 ; or_if rb0_unused _trisb 1 530 ; line_number = 252 531 ; or_if rb0_unused _adcon1 15 532 ; line_number = 253 533 ; or_if rb0_unused _adcon0 0 534 ; line_number = 254 535 ; pin rb1_in, rb1_out, rb1_unused 536 ; line_number = 255 537 ; pin_bindings pdip = 22 538 ; line_number = 256 539 ; bind_to _portb@1 540 ; line_number = 257 541 ; or_if rb1_in _trisb 2 542 ; line_number = 258 543 ; or_if rb1_in _adcon1 15 544 ; line_number = 259 545 ; or_if rb1_in _adcon0 0 546 ; line_number = 260 547 ; or_if rb1_out _trisb 0 548 ; line_number = 261 549 ; or_if rb1_out _adcon1 15 550 ; line_number = 262 551 ; or_if rb1_out _adcon0 0 552 ; line_number = 263 553 ; or_if rb1_unused _trisb 2 554 ; line_number = 264 555 ; or_if rb1_unused _adcon1 15 556 ; line_number = 265 557 ; or_if rb1_unused _adcon0 0 558 ; line_number = 266 559 ; pin rb2_in, rb2_out, rb2_unused 560 ; line_number = 267 561 ; pin_bindings pdip = 23 562 ; line_number = 268 563 ; bind_to _portb@2 564 ; line_number = 269 565 ; or_if rb2_in _trisb 4 566 ; line_number = 270 567 ; or_if rb2_in _adcon1 15 568 ; line_number = 271 569 ; or_if rb2_in _adcon0 0 570 ; line_number = 272 571 ; or_if rb2_out _trisb 0 572 ; line_number = 273 573 ; or_if rb2_out _adcon1 15 574 ; line_number = 274 575 ; or_if rb2_out _adcon0 0 576 ; line_number = 275 577 ; or_if rb2_unused _trisb 4 578 ; line_number = 276 579 ; or_if rb2_unused _adcon1 15 580 ; line_number = 277 581 ; or_if rb2_unused _adcon0 0 582 ; line_number = 278 583 ; pin rb3_in, rb3_out, pgm, rb3_unused 584 ; line_number = 279 585 ; pin_bindings pdip = 24 586 ; line_number = 280 587 ; bind_to _portb@3 588 ; line_number = 281 589 ; or_if rb3_in _trisb 8 590 ; line_number = 282 591 ; or_if rb3_in _adcon1 15 592 ; line_number = 283 593 ; or_if rb3_in _adcon0 0 594 ; line_number = 284 595 ; or_if rb3_out _trisb 0 596 ; line_number = 285 597 ; or_if rb3_out _adcon1 15 598 ; line_number = 286 599 ; or_if rb3_out _adcon0 0 600 ; line_number = 287 601 ; or_if rb3_unused _trisb 8 602 ; line_number = 288 603 ; or_if rb3_unused _adcon1 15 604 ; line_number = 289 605 ; or_if rb3_unused _adcon0 0 606 ; line_number = 290 607 ; pin rb4_in, rb4_out, rb4_unused 608 ; line_number = 291 609 ; pin_bindings pdip = 25 610 ; line_number = 292 611 ; bind_to _portb@4 612 ; line_number = 293 613 ; or_if rb4_in _trisb 16 614 ; line_number = 294 615 ; or_if rb4_in _adcon1 15 616 ; line_number = 295 617 ; or_if rb4_in _adcon0 0 618 ; line_number = 296 619 ; or_if rb4_out _trisb 0 620 ; line_number = 297 621 ; or_if rb4_out _adcon1 15 622 ; line_number = 298 623 ; or_if rb4_out _adcon0 0 624 ; line_number = 299 625 ; or_if rb4_unused _trisb 16 626 ; line_number = 300 627 ; or_if rb4_unused _adcon1 15 628 ; line_number = 301 629 ; or_if rb4_unused _adcon0 0 630 ; line_number = 302 631 ; pin rb5_in, rb5_out, rb5_unused 632 ; line_number = 303 633 ; pin_bindings pdip = 26 634 ; line_number = 304 635 ; bind_to _portb@5 636 ; line_number = 305 637 ; or_if rb5_in _trisb 32 638 ; line_number = 306 639 ; or_if rb5_in _adcon1 15 640 ; line_number = 307 641 ; or_if rb5_in _adcon0 0 642 ; line_number = 308 643 ; or_if rb5_out _trisb 0 644 ; line_number = 309 645 ; or_if rb5_out _adcon1 15 646 ; line_number = 310 647 ; or_if rb5_out _adcon0 0 648 ; line_number = 311 649 ; or_if rb5_unused _trisb 32 650 ; line_number = 312 651 ; or_if rb5_unused _adcon1 15 652 ; line_number = 313 653 ; or_if rb5_unused _adcon0 0 654 ; line_number = 314 655 ; pin rb6_in, rb6_out, pgc, rb6_unused 656 ; line_number = 315 657 ; pin_bindings pdip = 27 658 ; line_number = 316 659 ; bind_to _portb@6 660 ; line_number = 317 661 ; or_if rb6_in _trisb 64 662 ; line_number = 318 663 ; or_if rb6_in _adcon1 15 664 ; line_number = 319 665 ; or_if rb6_in _adcon0 0 666 ; line_number = 320 667 ; or_if rb6_out _trisb 0 668 ; line_number = 321 669 ; or_if rb6_out _adcon1 15 670 ; line_number = 322 671 ; or_if rb6_out _adcon0 0 672 ; line_number = 323 673 ; or_if rb6_unused _trisb 64 674 ; line_number = 324 675 ; or_if rb6_unused _adcon1 15 676 ; line_number = 325 677 ; or_if rb6_unused _adcon0 0 678 ; line_number = 326 679 ; pin rb7_in, rb7_out, pgd, rb7_unused 680 ; line_number = 327 681 ; pin_bindings pdip = 28 682 ; line_number = 328 683 ; bind_to _portb@7 684 ; line_number = 329 685 ; or_if rb7_in _trisb 128 686 ; line_number = 330 687 ; or_if rb7_in _adcon1 15 688 ; line_number = 331 689 ; or_if rb7_in _adcon0 0 690 ; line_number = 332 691 ; or_if rb7_out _trisb 0 692 ; line_number = 333 693 ; or_if rb7_out _adcon1 15 694 ; line_number = 334 695 ; or_if rb7_out _adcon0 0 696 ; line_number = 335 697 ; or_if rb7_unused _trisb 128 698 ; line_number = 336 699 ; or_if rb7_unused _adcon1 15 700 ; line_number = 337 701 ; or_if rb7_unused _adcon0 0 702 703 ; # Register and pin definitions: 704 705 ; line_number = 341 706 ; library _pic16f7x7 entered 707 708 ; # Copyright (c) 2004-2006 by Wayne C. Gramlich 709 ; # All rights reserved. 710 711 ; buffer = '_pic16f7x7' 712 ; line_number = 6 713 ; library _standard entered 714 715 ; # Copyright (c) 2006 by Wayne C. Gramlich 716 ; # All rights reserved. 717 718 ; # Standard definition for uCL: 719 720 ; buffer = '_standard' 721 ; line_number = 8 722 ; constant _true = (1 = 1) 723 00000001 = _true equ 1 724 ; line_number = 9 725 ; constant _false = (0 != 0) 726 00000000 = _false equ 0 727 728 729 ; buffer = '_pic16f7x7' 730 ; line_number = 6 731 ; library _standard exited 732 733 ; # Common declarations for PIC16F7x7 series microcontrollers: 734 735 ; # Register and pin definitions: 736 737 ; # Bank 0: 738 739 ; line_number = 14 740 ; register _indf = 741 00000000 = _indf equ 0 742 743 ; line_number = 16 744 ; register _tmr0 = 745 00000001 = _tmr0 equ 1 746 747 ; line_number = 18 748 ; register _pcl = 749 00000002 = _pcl equ 2 750 751 ; line_number = 20 752 ; register _status = 753 00000003 = _status equ 3 754 ; line_number = 21 755 ; bind _irp = _status@7 756 00000003 = _irp___byte equ _status 757 00000007 = _irp___bit equ 7 758 ; line_number = 22 759 ; bind _rp1 = _status@6 760 00000003 = _rp1___byte equ _status 761 00000006 = _rp1___bit equ 6 762 ; line_number = 23 763 ; bind _rp0 = _status@5 764 00000003 = _rp0___byte equ _status 765 00000005 = _rp0___bit equ 5 766 ; line_number = 24 767 ; bind _to = _status@4 768 00000003 = _to___byte equ _status 769 00000004 = _to___bit equ 4 770 ; line_number = 25 771 ; bind _pd = _status@3 772 00000003 = _pd___byte equ _status 773 00000003 = _pd___bit equ 3 774 ; line_number = 26 775 ; bind _z = _status@2 776 00000003 = _z___byte equ _status 777 00000002 = _z___bit equ 2 778 ; line_number = 27 779 ; bind _dc = _status@1 780 00000003 = _dc___byte equ _status 781 00000001 = _dc___bit equ 1 782 ; line_number = 28 783 ; bind _c = _status@0 784 00000003 = _c___byte equ _status 785 00000000 = _c___bit equ 0 786 787 ; line_number = 30 788 ; register _fsr = 789 00000004 = _fsr equ 4 790 791 ; line_number = 32 792 ; register _porta = 793 00000005 = _porta equ 5 794 795 ; line_number = 34 796 ; register _portb = 797 00000006 = _portb equ 6 798 799 ; line_number = 36 800 ; register _portc = 801 00000007 = _portc equ 7 802 803 ; line_number = 38 804 ; register _pclath = 805 0000000a = _pclath equ 10 806 807 ; line_number = 40 808 ; register _intcon = 809 0000000b = _intcon equ 11 810 ; line_number = 41 811 ; bind _gie = _intcon@7 812 0000000b = _gie___byte equ _intcon 813 00000007 = _gie___bit equ 7 814 ; line_number = 42 815 ; bind _peie = _intcon@6 816 0000000b = _peie___byte equ _intcon 817 00000006 = _peie___bit equ 6 818 ; line_number = 43 819 ; bind _tmr0ie = _intcon@5 820 0000000b = _tmr0ie___byte equ _intcon 821 00000005 = _tmr0ie___bit equ 5 822 ; line_number = 44 823 ; bind _int0ie = _intcon@4 824 0000000b = _int0ie___byte equ _intcon 825 00000004 = _int0ie___bit equ 4 826 ; line_number = 45 827 ; bind _rbie = _intcon@3 828 0000000b = _rbie___byte equ _intcon 829 00000003 = _rbie___bit equ 3 830 ; line_number = 46 831 ; bind _tmr0if = _intcon@2 832 0000000b = _tmr0if___byte equ _intcon 833 00000002 = _tmr0if___bit equ 2 834 ; line_number = 47 835 ; bind _int0if = _intcon@1 836 0000000b = _int0if___byte equ _intcon 837 00000001 = _int0if___bit equ 1 838 ; line_number = 48 839 ; bind _rbif = _intcon@0 840 0000000b = _rbif___byte equ _intcon 841 00000000 = _rbif___bit equ 0 842 843 ; line_number = 50 844 ; register _pir1 = 845 0000000c = _pir1 equ 12 846 ; line_number = 51 847 ; bind _pspif = _pir1@7 848 0000000c = _pspif___byte equ _pir1 849 00000007 = _pspif___bit equ 7 850 ; line_number = 52 851 ; bind _adif = _pir1@6 852 0000000c = _adif___byte equ _pir1 853 00000006 = _adif___bit equ 6 854 ; line_number = 53 855 ; bind _rcif = _pir1@5 856 0000000c = _rcif___byte equ _pir1 857 00000005 = _rcif___bit equ 5 858 ; line_number = 54 859 ; bind _txif = _pir1@4 860 0000000c = _txif___byte equ _pir1 861 00000004 = _txif___bit equ 4 862 ; line_number = 55 863 ; bind _sspif = _pir1@3 864 0000000c = _sspif___byte equ _pir1 865 00000003 = _sspif___bit equ 3 866 ; line_number = 56 867 ; bind _ccp1if = _pir1@2 868 0000000c = _ccp1if___byte equ _pir1 869 00000002 = _ccp1if___bit equ 2 870 ; line_number = 57 871 ; bind _tmr2if = _pir1@1 872 0000000c = _tmr2if___byte equ _pir1 873 00000001 = _tmr2if___bit equ 1 874 ; line_number = 58 875 ; bind _tmr1if = _pir1@0 876 0000000c = _tmr1if___byte equ _pir1 877 00000000 = _tmr1if___bit equ 0 878 879 ; line_number = 60 880 ; register _pir2 = 881 0000000d = _pir2 equ 13 882 ; line_number = 61 883 ; bind _osif = _pir2@7 884 0000000d = _osif___byte equ _pir2 885 00000007 = _osif___bit equ 7 886 ; line_number = 62 887 ; bind _cmif = _pir2@6 888 0000000d = _cmif___byte equ _pir2 889 00000006 = _cmif___bit equ 6 890 ; line_number = 63 891 ; bind _lvif = _pir2@5 892 0000000d = _lvif___byte equ _pir2 893 00000005 = _lvif___bit equ 5 894 ; line_number = 64 895 ; bind _bclif = _pir2@3 896 0000000d = _bclif___byte equ _pir2 897 00000003 = _bclif___bit equ 3 898 ; line_number = 65 899 ; bind _ccp3if = _pir2@1 900 0000000d = _ccp3if___byte equ _pir2 901 00000001 = _ccp3if___bit equ 1 902 ; line_number = 66 903 ; bind _ccp2if = _pir2@0 904 0000000d = _ccp2if___byte equ _pir2 905 00000000 = _ccp2if___bit equ 0 906 907 ; line_number = 68 908 ; register _tmr1l = 909 0000000e = _tmr1l equ 14 910 911 ; line_number = 70 912 ; register _tmr1h = 913 0000000f = _tmr1h equ 15 914 915 ; line_number = 72 916 ; register _t1con = 917 00000010 = _t1con equ 16 918 ; line_number = 73 919 ; bind _t1run = _t1con@6 920 00000010 = _t1run___byte equ _t1con 921 00000006 = _t1run___bit equ 6 922 ; line_number = 74 923 ; bind _t1ckps1 = _t1con@5 924 00000010 = _t1ckps1___byte equ _t1con 925 00000005 = _t1ckps1___bit equ 5 926 ; line_number = 75 927 ; bind _t1ckps0 = _t1con@4 928 00000010 = _t1ckps0___byte equ _t1con 929 00000004 = _t1ckps0___bit equ 4 930 ; line_number = 76 931 ; bind _t1oscen = _t1con@3 932 00000010 = _t1oscen___byte equ _t1con 933 00000003 = _t1oscen___bit equ 3 934 ; line_number = 77 935 ; bind _t1sync = _t1con@2 936 00000010 = _t1sync___byte equ _t1con 937 00000002 = _t1sync___bit equ 2 938 ; line_number = 78 939 ; bind _tmr1cs = _t1con@1 940 00000010 = _tmr1cs___byte equ _t1con 941 00000001 = _tmr1cs___bit equ 1 942 ; line_number = 79 943 ; bind _tmr1on = _t1con@0 944 00000010 = _tmr1on___byte equ _t1con 945 00000000 = _tmr1on___bit equ 0 946 947 ; line_number = 81 948 ; register _tmr2 = 949 00000011 = _tmr2 equ 17 950 951 ; line_number = 83 952 ; register _t2con = 953 00000012 = _t2con equ 18 954 ; line_number = 84 955 ; bind _toutps3 = _t2con@6 956 00000012 = _toutps3___byte equ _t2con 957 00000006 = _toutps3___bit equ 6 958 ; line_number = 85 959 ; bind _toutps2 = _t2con@5 960 00000012 = _toutps2___byte equ _t2con 961 00000005 = _toutps2___bit equ 5 962 ; line_number = 86 963 ; bind _toutps1 = _t2con@4 964 00000012 = _toutps1___byte equ _t2con 965 00000004 = _toutps1___bit equ 4 966 ; line_number = 87 967 ; bind _toutps0 = _t2con@3 968 00000012 = _toutps0___byte equ _t2con 969 00000003 = _toutps0___bit equ 3 970 ; line_number = 88 971 ; bind _tmr2on = _t2con@2 972 00000012 = _tmr2on___byte equ _t2con 973 00000002 = _tmr2on___bit equ 2 974 ; line_number = 89 975 ; bind _t2ckps1 = _t2con@1 976 00000012 = _t2ckps1___byte equ _t2con 977 00000001 = _t2ckps1___bit equ 1 978 ; line_number = 90 979 ; bind _t2ckps0 = _t2con@0 980 00000012 = _t2ckps0___byte equ _t2con 981 00000000 = _t2ckps0___bit equ 0 982 983 ; line_number = 92 984 ; register _sspbuf = 985 00000013 = _sspbuf equ 19 986 987 ; line_number = 94 988 ; register _sspcon = 989 00000014 = _sspcon equ 20 990 ; line_number = 95 991 ; bind _wcol = _sspcon@7 992 00000014 = _wcol___byte equ _sspcon 993 00000007 = _wcol___bit equ 7 994 ; line_number = 96 995 ; bind _sspov = _sspcon@6 996 00000014 = _sspov___byte equ _sspcon 997 00000006 = _sspov___bit equ 6 998 ; line_number = 97 999 ; bind _sspen = _sspcon@5 1000 00000014 = _sspen___byte equ _sspcon 1001 00000005 = _sspen___bit equ 5 1002 ; line_number = 98 1003 ; bind _ckp = _sspcon@4 1004 00000014 = _ckp___byte equ _sspcon 1005 00000004 = _ckp___bit equ 4 1006 ; line_number = 99 1007 ; bind _sspm3 = _sspcon@3 1008 00000014 = _sspm3___byte equ _sspcon 1009 00000003 = _sspm3___bit equ 3 1010 ; line_number = 100 1011 ; bind _sspm2 = _sspcon@2 1012 00000014 = _sspm2___byte equ _sspcon 1013 00000002 = _sspm2___bit equ 2 1014 ; line_number = 101 1015 ; bind _sspm1 = _sspcon@1 1016 00000014 = _sspm1___byte equ _sspcon 1017 00000001 = _sspm1___bit equ 1 1018 ; line_number = 102 1019 ; bind _sspm0 = _sspcon@0 1020 00000014 = _sspm0___byte equ _sspcon 1021 00000000 = _sspm0___bit equ 0 1022 1023 ; line_number = 104 1024 ; register _ccpr1l = 1025 00000015 = _ccpr1l equ 21 1026 1027 ; line_number = 106 1028 ; register _ccpr1h = 1029 00000016 = _ccpr1h equ 22 1030 1031 ; line_number = 108 1032 ; register _ccp1con = 1033 00000017 = _ccp1con equ 23 1034 ; line_number = 109 1035 ; bind _ccp1x = _ccp1con@5 1036 00000017 = _ccp1x___byte equ _ccp1con 1037 00000005 = _ccp1x___bit equ 5 1038 ; line_number = 110 1039 ; bind _ccp1y = _ccp1con@4 1040 00000017 = _ccp1y___byte equ _ccp1con 1041 00000004 = _ccp1y___bit equ 4 1042 ; line_number = 111 1043 ; bind _ccp1m3 = _ccp1con@3 1044 00000017 = _ccp1m3___byte equ _ccp1con 1045 00000003 = _ccp1m3___bit equ 3 1046 ; line_number = 112 1047 ; bind _ccp1m2 = _ccp1con@2 1048 00000017 = _ccp1m2___byte equ _ccp1con 1049 00000002 = _ccp1m2___bit equ 2 1050 ; line_number = 113 1051 ; bind _ccp1m1 = _ccp1con@1 1052 00000017 = _ccp1m1___byte equ _ccp1con 1053 00000001 = _ccp1m1___bit equ 1 1054 ; line_number = 114 1055 ; bind _ccp1m0 = _ccp1con@0 1056 00000017 = _ccp1m0___byte equ _ccp1con 1057 00000000 = _ccp1m0___bit equ 0 1058 1059 ; line_number = 116 1060 ; register _rcsta = 1061 00000018 = _rcsta equ 24 1062 ; line_number = 117 1063 ; bind _spen = _rcsta@7 1064 00000018 = _spen___byte equ _rcsta 1065 00000007 = _spen___bit equ 7 1066 ; line_number = 118 1067 ; bind _rx9 = _rcsta@6 1068 00000018 = _rx9___byte equ _rcsta 1069 00000006 = _rx9___bit equ 6 1070 ; line_number = 119 1071 ; bind _sren = _rcsta@5 1072 00000018 = _sren___byte equ _rcsta 1073 00000005 = _sren___bit equ 5 1074 ; line_number = 120 1075 ; bind _cren = _rcsta@4 1076 00000018 = _cren___byte equ _rcsta 1077 00000004 = _cren___bit equ 4 1078 ; line_number = 121 1079 ; bind _adden = _rcsta@3 1080 00000018 = _adden___byte equ _rcsta 1081 00000003 = _adden___bit equ 3 1082 ; line_number = 122 1083 ; bind _ferr = _rcsta@2 1084 00000018 = _ferr___byte equ _rcsta 1085 00000002 = _ferr___bit equ 2 1086 ; line_number = 123 1087 ; bind _oerr = _rcsta@1 1088 00000018 = _oerr___byte equ _rcsta 1089 00000001 = _oerr___bit equ 1 1090 ; line_number = 124 1091 ; bind _rx9d = _rcsta@0 1092 00000018 = _rx9d___byte equ _rcsta 1093 00000000 = _rx9d___bit equ 0 1094 1095 ; line_number = 126 1096 ; register _txreg = 1097 00000019 = _txreg equ 25 1098 1099 ; line_number = 128 1100 ; register _rcreg = 1101 0000001a = _rcreg equ 26 1102 1103 ; line_number = 130 1104 ; register _ccpr2l = 1105 0000001b = _ccpr2l equ 27 1106 1107 ; line_number = 132 1108 ; register _ccpr2h = 1109 0000001c = _ccpr2h equ 28 1110 1111 ; line_number = 134 1112 ; register _ccp2con = 1113 0000001d = _ccp2con equ 29 1114 ; line_number = 135 1115 ; bind _ccp2x = _ccp2con@5 1116 0000001d = _ccp2x___byte equ _ccp2con 1117 00000005 = _ccp2x___bit equ 5 1118 ; line_number = 136 1119 ; bind _ccp2y = _ccp2con@4 1120 0000001d = _ccp2y___byte equ _ccp2con 1121 00000004 = _ccp2y___bit equ 4 1122 ; line_number = 137 1123 ; bind _ccp2m3 = _ccp2con@3 1124 0000001d = _ccp2m3___byte equ _ccp2con 1125 00000003 = _ccp2m3___bit equ 3 1126 ; line_number = 138 1127 ; bind _ccp2m2 = _ccp2con@2 1128 0000001d = _ccp2m2___byte equ _ccp2con 1129 00000002 = _ccp2m2___bit equ 2 1130 ; line_number = 139 1131 ; bind _ccp2m1 = _ccp2con@1 1132 0000001d = _ccp2m1___byte equ _ccp2con 1133 00000001 = _ccp2m1___bit equ 1 1134 ; line_number = 140 1135 ; bind _ccp2m0 = _ccp2con@0 1136 0000001d = _ccp2m0___byte equ _ccp2con 1137 00000000 = _ccp2m0___bit equ 0 1138 1139 ; line_number = 142 1140 ; register _adresh = 1141 0000001e = _adresh equ 30 1142 1143 ; line_number = 144 1144 ; register _adcon0 = 1145 0000001f = _adcon0 equ 31 1146 ; line_number = 145 1147 ; bind _adcs1 = _adcon0@7 1148 0000001f = _adcs1___byte equ _adcon0 1149 00000007 = _adcs1___bit equ 7 1150 ; line_number = 146 1151 ; bind _adcs0 = _adcon0@6 1152 0000001f = _adcs0___byte equ _adcon0 1153 00000006 = _adcs0___bit equ 6 1154 ; line_number = 147 1155 ; bind _chs2 = _adcon0@5 1156 0000001f = _chs2___byte equ _adcon0 1157 00000005 = _chs2___bit equ 5 1158 ; line_number = 148 1159 ; bind _chs1 = _adcon0@4 1160 0000001f = _chs1___byte equ _adcon0 1161 00000004 = _chs1___bit equ 4 1162 ; line_number = 149 1163 ; bind _chs0 = _adcon0@3 1164 0000001f = _chs0___byte equ _adcon0 1165 00000003 = _chs0___bit equ 3 1166 ; line_number = 150 1167 ; bind _go_done = _adcon0@2 1168 0000001f = _go_done___byte equ _adcon0 1169 00000002 = _go_done___bit equ 2 1170 ; line_number = 151 1171 ; bind _adon = _adcon0@0 1172 0000001f = _adon___byte equ _adcon0 1173 00000000 = _adon___bit equ 0 1174 1175 ; # Bank 1: 1176 1177 ; line_number = 155 1178 ; register _option_reg = 1179 00000081 = _option_reg equ 129 1180 ; line_number = 156 1181 ; bind _rbpu = _option_reg@7 1182 00000081 = _rbpu___byte equ _option_reg 1183 00000007 = _rbpu___bit equ 7 1184 ; line_number = 157 1185 ; bind _intedg = _option_reg@6 1186 00000081 = _intedg___byte equ _option_reg 1187 00000006 = _intedg___bit equ 6 1188 ; line_number = 158 1189 ; bind _t0cs = _option_reg@5 1190 00000081 = _t0cs___byte equ _option_reg 1191 00000005 = _t0cs___bit equ 5 1192 ; line_number = 159 1193 ; bind _t0se = _option_reg@4 1194 00000081 = _t0se___byte equ _option_reg 1195 00000004 = _t0se___bit equ 4 1196 ; line_number = 160 1197 ; bind _psa = _option_reg@3 1198 00000081 = _psa___byte equ _option_reg 1199 00000003 = _psa___bit equ 3 1200 ; line_number = 161 1201 ; bind _ps2 = _option_reg@2 1202 00000081 = _ps2___byte equ _option_reg 1203 00000002 = _ps2___bit equ 2 1204 ; line_number = 162 1205 ; bind _ps1 = _option_reg@1 1206 00000081 = _ps1___byte equ _option_reg 1207 00000001 = _ps1___bit equ 1 1208 ; line_number = 163 1209 ; bind _ps0 = _option_reg@0 1210 00000081 = _ps0___byte equ _option_reg 1211 00000000 = _ps0___bit equ 0 1212 1213 ; line_number = 165 1214 ; register _trisa = 1215 00000085 = _trisa equ 133 1216 ; line_number = 166 1217 ; bind _trisa7 = _trisa@7 1218 00000085 = _trisa7___byte equ _trisa 1219 00000007 = _trisa7___bit equ 7 1220 ; line_number = 167 1221 ; bind _trisa6 = _trisa@6 1222 00000085 = _trisa6___byte equ _trisa 1223 00000006 = _trisa6___bit equ 6 1224 ; line_number = 168 1225 ; bind _trisa5 = _trisa@5 1226 00000085 = _trisa5___byte equ _trisa 1227 00000005 = _trisa5___bit equ 5 1228 ; line_number = 169 1229 ; bind _trisa4 = _trisa@4 1230 00000085 = _trisa4___byte equ _trisa 1231 00000004 = _trisa4___bit equ 4 1232 ; line_number = 170 1233 ; bind _trisa3 = _trisa@3 1234 00000085 = _trisa3___byte equ _trisa 1235 00000003 = _trisa3___bit equ 3 1236 ; line_number = 171 1237 ; bind _trisa2 = _trisa@2 1238 00000085 = _trisa2___byte equ _trisa 1239 00000002 = _trisa2___bit equ 2 1240 ; line_number = 172 1241 ; bind _trisa1 = _trisa@1 1242 00000085 = _trisa1___byte equ _trisa 1243 00000001 = _trisa1___bit equ 1 1244 ; line_number = 173 1245 ; bind _trisa0 = _trisa@0 1246 00000085 = _trisa0___byte equ _trisa 1247 00000000 = _trisa0___bit equ 0 1248 1249 ; line_number = 175 1250 ; register _trisb = 1251 00000086 = _trisb equ 134 1252 1253 ; line_number = 177 1254 ; register _trisc = 1255 00000087 = _trisc equ 135 1256 ; line_number = 178 1257 ; bind _trisc7 = _trisc@7 1258 00000087 = _trisc7___byte equ _trisc 1259 00000007 = _trisc7___bit equ 7 1260 ; line_number = 179 1261 ; bind _trisc6 = _trisc@6 1262 00000087 = _trisc6___byte equ _trisc 1263 00000006 = _trisc6___bit equ 6 1264 ; line_number = 180 1265 ; bind _trisc5 = _trisc@5 1266 00000087 = _trisc5___byte equ _trisc 1267 00000005 = _trisc5___bit equ 5 1268 ; line_number = 181 1269 ; bind _trisc4 = _trisc@4 1270 00000087 = _trisc4___byte equ _trisc 1271 00000004 = _trisc4___bit equ 4 1272 ; line_number = 182 1273 ; bind _trisc3 = _trisc@3 1274 00000087 = _trisc3___byte equ _trisc 1275 00000003 = _trisc3___bit equ 3 1276 ; line_number = 183 1277 ; bind _trisc2 = _trisc@2 1278 00000087 = _trisc2___byte equ _trisc 1279 00000002 = _trisc2___bit equ 2 1280 ; line_number = 184 1281 ; bind _trisc1 = _trisc@1 1282 00000087 = _trisc1___byte equ _trisc 1283 00000001 = _trisc1___bit equ 1 1284 ; line_number = 185 1285 ; bind _trisc0 = _trisc@0 1286 00000087 = _trisc0___byte equ _trisc 1287 00000000 = _trisc0___bit equ 0 1288 1289 ; line_number = 187 1290 ; register _pie1 = 1291 0000008c = _pie1 equ 140 1292 ; line_number = 188 1293 ; bind _pspie = _pie1@7 1294 0000008c = _pspie___byte equ _pie1 1295 00000007 = _pspie___bit equ 7 1296 ; line_number = 189 1297 ; bind _adie = _pie1@6 1298 0000008c = _adie___byte equ _pie1 1299 00000006 = _adie___bit equ 6 1300 ; line_number = 190 1301 ; bind _rcie = _pie1@5 1302 0000008c = _rcie___byte equ _pie1 1303 00000005 = _rcie___bit equ 5 1304 ; line_number = 191 1305 ; bind _txie = _pie1@4 1306 0000008c = _txie___byte equ _pie1 1307 00000004 = _txie___bit equ 4 1308 ; line_number = 192 1309 ; bind _sspie = _pie1@3 1310 0000008c = _sspie___byte equ _pie1 1311 00000003 = _sspie___bit equ 3 1312 ; line_number = 193 1313 ; bind _ccp1ie = _pie1@2 1314 0000008c = _ccp1ie___byte equ _pie1 1315 00000002 = _ccp1ie___bit equ 2 1316 ; line_number = 194 1317 ; bind _tmr2ie = _pie1@1 1318 0000008c = _tmr2ie___byte equ _pie1 1319 00000001 = _tmr2ie___bit equ 1 1320 ; line_number = 195 1321 ; bind _tmr1ie = _pie1@0 1322 0000008c = _tmr1ie___byte equ _pie1 1323 00000000 = _tmr1ie___bit equ 0 1324 1325 ; line_number = 197 1326 ; register _pie2 = 1327 0000008d = _pie2 equ 141 1328 ; line_number = 198 1329 ; bind _osfie = _pie2@7 1330 0000008d = _osfie___byte equ _pie2 1331 00000007 = _osfie___bit equ 7 1332 ; line_number = 199 1333 ; bind _cmie = _pie2@6 1334 0000008d = _cmie___byte equ _pie2 1335 00000006 = _cmie___bit equ 6 1336 ; line_number = 200 1337 ; bind _lvdie = _pie2@5 1338 0000008d = _lvdie___byte equ _pie2 1339 00000005 = _lvdie___bit equ 5 1340 ; line_number = 201 1341 ; bind _bclie = _pie2@3 1342 0000008d = _bclie___byte equ _pie2 1343 00000003 = _bclie___bit equ 3 1344 ; line_number = 202 1345 ; bind _ccp3ie = _pie2@1 1346 0000008d = _ccp3ie___byte equ _pie2 1347 00000001 = _ccp3ie___bit equ 1 1348 ; line_number = 203 1349 ; bind _ccp2ie = _pie2@0 1350 0000008d = _ccp2ie___byte equ _pie2 1351 00000000 = _ccp2ie___bit equ 0 1352 1353 ; line_number = 205 1354 ; register _pcon = 1355 0000008e = _pcon equ 142 1356 ; line_number = 206 1357 ; bind _sboren = _pcon@2 1358 0000008e = _sboren___byte equ _pcon 1359 00000002 = _sboren___bit equ 2 1360 ; line_number = 207 1361 ; bind _por = _pcon@1 1362 0000008e = _por___byte equ _pcon 1363 00000001 = _por___bit equ 1 1364 ; line_number = 208 1365 ; bind _bor = _pcon@0 1366 0000008e = _bor___byte equ _pcon 1367 00000000 = _bor___bit equ 0 1368 1369 ; line_number = 210 1370 ; register _osccon = 1371 0000008f = _osccon equ 143 1372 ; line_number = 211 1373 ; bind _ircf2 = _osccon@6 1374 0000008f = _ircf2___byte equ _osccon 1375 00000006 = _ircf2___bit equ 6 1376 ; line_number = 212 1377 ; bind _ircf1 = _osccon@5 1378 0000008f = _ircf1___byte equ _osccon 1379 00000005 = _ircf1___bit equ 5 1380 ; line_number = 213 1381 ; bind _ircf0 = _osccon@4 1382 0000008f = _ircf0___byte equ _osccon 1383 00000004 = _ircf0___bit equ 4 1384 ; line_number = 214 1385 ; bind _osts = _osccon@3 1386 0000008f = _osts___byte equ _osccon 1387 00000003 = _osts___bit equ 3 1388 ; line_number = 215 1389 ; bind _iofs = _osccon@2 1390 0000008f = _iofs___byte equ _osccon 1391 00000002 = _iofs___bit equ 2 1392 ; line_number = 216 1393 ; bind _scs1 = _osccon@1 1394 0000008f = _scs1___byte equ _osccon 1395 00000001 = _scs1___bit equ 1 1396 ; line_number = 217 1397 ; bind _scs0 = _osccon@0 1398 0000008f = _scs0___byte equ _osccon 1399 00000000 = _scs0___bit equ 0 1400 1401 ; line_number = 219 1402 ; register _osctune = 1403 00000090 = _osctune equ 144 1404 ; line_number = 220 1405 ; bind _tun5 = _osctune@5 1406 00000090 = _tun5___byte equ _osctune 1407 00000005 = _tun5___bit equ 5 1408 ; line_number = 221 1409 ; bind _tun4 = _osctune@4 1410 00000090 = _tun4___byte equ _osctune 1411 00000004 = _tun4___bit equ 4 1412 ; line_number = 222 1413 ; bind _tun3 = _osctune@3 1414 00000090 = _tun3___byte equ _osctune 1415 00000003 = _tun3___bit equ 3 1416 ; line_number = 223 1417 ; bind _tun2 = _osctune@2 1418 00000090 = _tun2___byte equ _osctune 1419 00000002 = _tun2___bit equ 2 1420 ; line_number = 224 1421 ; bind _tun1 = _osctune@1 1422 00000090 = _tun1___byte equ _osctune 1423 00000001 = _tun1___bit equ 1 1424 ; line_number = 225 1425 ; bind _tun0 = _osctune@0 1426 00000090 = _tun0___byte equ _osctune 1427 00000000 = _tun0___bit equ 0 1428 1429 ; line_number = 227 1430 ; register _sspcon2 = 1431 00000091 = _sspcon2 equ 145 1432 ; line_number = 228 1433 ; bind _gcen = _sspcon2@7 1434 00000091 = _gcen___byte equ _sspcon2 1435 00000007 = _gcen___bit equ 7 1436 ; line_number = 229 1437 ; bind _ackstat = _sspcon2@6 1438 00000091 = _ackstat___byte equ _sspcon2 1439 00000006 = _ackstat___bit equ 6 1440 ; line_number = 230 1441 ; bind _ackdt = _sspcon2@5 1442 00000091 = _ackdt___byte equ _sspcon2 1443 00000005 = _ackdt___bit equ 5 1444 ; line_number = 231 1445 ; bind _acken = _sspcon2@4 1446 00000091 = _acken___byte equ _sspcon2 1447 00000004 = _acken___bit equ 4 1448 ; line_number = 232 1449 ; bind _rcen = _sspcon2@3 1450 00000091 = _rcen___byte equ _sspcon2 1451 00000003 = _rcen___bit equ 3 1452 ; line_number = 233 1453 ; bind _pen = _sspcon2@2 1454 00000091 = _pen___byte equ _sspcon2 1455 00000002 = _pen___bit equ 2 1456 ; line_number = 234 1457 ; bind _rsen = _sspcon2@1 1458 00000091 = _rsen___byte equ _sspcon2 1459 00000001 = _rsen___bit equ 1 1460 ; line_number = 235 1461 ; bind _sen = _sspcon2@0 1462 00000091 = _sen___byte equ _sspcon2 1463 00000000 = _sen___bit equ 0 1464 1465 ; line_number = 237 1466 ; register _pr2 = 1467 00000092 = _pr2 equ 146 1468 1469 ; line_number = 239 1470 ; register _sspadd = 1471 00000093 = _sspadd equ 147 1472 1473 ; line_number = 241 1474 ; register _sspstat = 1475 00000094 = _sspstat equ 148 1476 ; line_number = 242 1477 ; bind _smp = _sspstat@7 1478 00000094 = _smp___byte equ _sspstat 1479 00000007 = _smp___bit equ 7 1480 ; line_number = 243 1481 ; bind _cke = _sspstat@6 1482 00000094 = _cke___byte equ _sspstat 1483 00000006 = _cke___bit equ 6 1484 ; line_number = 244 1485 ; bind _da = _sspstat@5 1486 00000094 = _da___byte equ _sspstat 1487 00000005 = _da___bit equ 5 1488 ; line_number = 245 1489 ; bind _p = _sspstat@4 1490 00000094 = _p___byte equ _sspstat 1491 00000004 = _p___bit equ 4 1492 ; line_number = 246 1493 ; bind _s = _sspstat@3 1494 00000094 = _s___byte equ _sspstat 1495 00000003 = _s___bit equ 3 1496 ; line_number = 247 1497 ; bind _rw = _sspstat@2 1498 00000094 = _rw___byte equ _sspstat 1499 00000002 = _rw___bit equ 2 1500 ; line_number = 248 1501 ; bind _ua = _sspstat@1 1502 00000094 = _ua___byte equ _sspstat 1503 00000001 = _ua___bit equ 1 1504 ; line_number = 249 1505 ; bind _bf = _sspstat@0 1506 00000094 = _bf___byte equ _sspstat 1507 00000000 = _bf___bit equ 0 1508 1509 ; line_number = 251 1510 ; register _ccpr3l = 1511 00000095 = _ccpr3l equ 149 1512 1513 ; line_number = 253 1514 ; register _ccpr3h = 1515 00000096 = _ccpr3h equ 150 1516 1517 ; line_number = 255 1518 ; register _ccp3con = 1519 00000096 = _ccp3con equ 150 1520 ; line_number = 256 1521 ; bind _ccp3x = _ccp3con@5 1522 00000096 = _ccp3x___byte equ _ccp3con 1523 00000005 = _ccp3x___bit equ 5 1524 ; line_number = 257 1525 ; bind _ccp3y = _ccp3con@4 1526 00000096 = _ccp3y___byte equ _ccp3con 1527 00000004 = _ccp3y___bit equ 4 1528 ; line_number = 258 1529 ; bind _ccp3m3 = _ccp3con@3 1530 00000096 = _ccp3m3___byte equ _ccp3con 1531 00000003 = _ccp3m3___bit equ 3 1532 ; line_number = 259 1533 ; bind _ccp3m2 = _ccp3con@2 1534 00000096 = _ccp3m2___byte equ _ccp3con 1535 00000002 = _ccp3m2___bit equ 2 1536 ; line_number = 260 1537 ; bind _ccp3m1 = _ccp3con@1 1538 00000096 = _ccp3m1___byte equ _ccp3con 1539 00000001 = _ccp3m1___bit equ 1 1540 ; line_number = 261 1541 ; bind _ccp3m0 = _ccp3con@0 1542 00000096 = _ccp3m0___byte equ _ccp3con 1543 00000000 = _ccp3m0___bit equ 0 1544 1545 ; line_number = 263 1546 ; register _txsta = 1547 00000098 = _txsta equ 152 1548 ; line_number = 264 1549 ; bind _csrc = _txsta@7 1550 00000098 = _csrc___byte equ _txsta 1551 00000007 = _csrc___bit equ 7 1552 ; line_number = 265 1553 ; bind _tx9 = _txsta@6 1554 00000098 = _tx9___byte equ _txsta 1555 00000006 = _tx9___bit equ 6 1556 ; line_number = 266 1557 ; bind _txen = _txsta@5 1558 00000098 = _txen___byte equ _txsta 1559 00000005 = _txen___bit equ 5 1560 ; line_number = 267 1561 ; bind _sync = _txsta@4 1562 00000098 = _sync___byte equ _txsta 1563 00000004 = _sync___bit equ 4 1564 ; line_number = 268 1565 ; bind _brgh = _txsta@2 1566 00000098 = _brgh___byte equ _txsta 1567 00000002 = _brgh___bit equ 2 1568 ; line_number = 269 1569 ; bind _trmt = _txsta@1 1570 00000098 = _trmt___byte equ _txsta 1571 00000001 = _trmt___bit equ 1 1572 ; line_number = 270 1573 ; bind _tx9d = _txsta@0 1574 00000098 = _tx9d___byte equ _txsta 1575 00000000 = _tx9d___bit equ 0 1576 1577 ; line_number = 272 1578 ; register _spbrg = 1579 00000099 = _spbrg equ 153 1580 1581 ; line_number = 274 1582 ; register _adcon2 = 1583 0000009b = _adcon2 equ 155 1584 ; line_number = 275 1585 ; bind _acqt2 = _adcon2@5 1586 0000009b = _acqt2___byte equ _adcon2 1587 00000005 = _acqt2___bit equ 5 1588 ; line_number = 276 1589 ; bind _acqt1 = _adcon2@4 1590 0000009b = _acqt1___byte equ _adcon2 1591 00000004 = _acqt1___bit equ 4 1592 ; line_number = 277 1593 ; bind _acqt0 = _adcon2@3 1594 0000009b = _acqt0___byte equ _adcon2 1595 00000003 = _acqt0___bit equ 3 1596 1597 ; line_number = 279 1598 ; register _cmcon = 1599 0000009c = _cmcon equ 156 1600 ; line_number = 280 1601 ; bind _c2out = _cmcon@7 1602 0000009c = _c2out___byte equ _cmcon 1603 00000007 = _c2out___bit equ 7 1604 ; line_number = 281 1605 ; bind _c1out = _cmcon@6 1606 0000009c = _c1out___byte equ _cmcon 1607 00000006 = _c1out___bit equ 6 1608 ; line_number = 282 1609 ; bind _c2inv = _cmcon@5 1610 0000009c = _c2inv___byte equ _cmcon 1611 00000005 = _c2inv___bit equ 5 1612 ; line_number = 283 1613 ; bind _c1inv = _cmcon@4 1614 0000009c = _c1inv___byte equ _cmcon 1615 00000004 = _c1inv___bit equ 4 1616 ; line_number = 284 1617 ; bind _cis = _cmcon@3 1618 0000009c = _cis___byte equ _cmcon 1619 00000003 = _cis___bit equ 3 1620 ; line_number = 285 1621 ; bind _cm2 = _cmcon@2 1622 0000009c = _cm2___byte equ _cmcon 1623 00000002 = _cm2___bit equ 2 1624 ; line_number = 286 1625 ; bind _cm1 = _cmcon@1 1626 0000009c = _cm1___byte equ _cmcon 1627 00000001 = _cm1___bit equ 1 1628 ; line_number = 287 1629 ; bind _cm0 = _cmcon@0 1630 0000009c = _cm0___byte equ _cmcon 1631 00000000 = _cm0___bit equ 0 1632 1633 ; line_number = 289 1634 ; register _cvrcon = 1635 0000009d = _cvrcon equ 157 1636 ; line_number = 290 1637 ; bind _cvren = _cvrcon@7 1638 0000009d = _cvren___byte equ _cvrcon 1639 00000007 = _cvren___bit equ 7 1640 ; line_number = 291 1641 ; bind _cvroe = _cvrcon@6 1642 0000009d = _cvroe___byte equ _cvrcon 1643 00000006 = _cvroe___bit equ 6 1644 ; line_number = 292 1645 ; bind _cvrr = _cvrcon@5 1646 0000009d = _cvrr___byte equ _cvrcon 1647 00000005 = _cvrr___bit equ 5 1648 ; line_number = 293 1649 ; bind _cvr3 = _cvrcon@3 1650 0000009d = _cvr3___byte equ _cvrcon 1651 00000003 = _cvr3___bit equ 3 1652 ; line_number = 294 1653 ; bind _cvr2 = _cvrcon@2 1654 0000009d = _cvr2___byte equ _cvrcon 1655 00000002 = _cvr2___bit equ 2 1656 ; line_number = 295 1657 ; bind _cvr1 = _cvrcon@1 1658 0000009d = _cvr1___byte equ _cvrcon 1659 00000001 = _cvr1___bit equ 1 1660 ; line_number = 296 1661 ; bind _cvr0 = _cvrcon@0 1662 0000009d = _cvr0___byte equ _cvrcon 1663 00000000 = _cvr0___bit equ 0 1664 1665 ; line_number = 298 1666 ; register _adresl = 1667 0000009e = _adresl equ 158 1668 1669 ; line_number = 300 1670 ; register _adcon1 = 1671 0000009f = _adcon1 equ 159 1672 ; line_number = 301 1673 ; bind _adfm = _adcon1@7 1674 0000009f = _adfm___byte equ _adcon1 1675 00000007 = _adfm___bit equ 7 1676 ; line_number = 302 1677 ; bind _adcs2 = _adcon1@6 1678 0000009f = _adcs2___byte equ _adcon1 1679 00000006 = _adcs2___bit equ 6 1680 ; line_number = 303 1681 ; bind _vfg1 = _adcon1@5 1682 0000009f = _vfg1___byte equ _adcon1 1683 00000005 = _vfg1___bit equ 5 1684 ; line_number = 304 1685 ; bind _vfg0 = _adcon1@4 1686 0000009f = _vfg0___byte equ _adcon1 1687 00000004 = _vfg0___bit equ 4 1688 ; line_number = 305 1689 ; bind _pcfg3 = _adcon1@3 1690 0000009f = _pcfg3___byte equ _adcon1 1691 00000003 = _pcfg3___bit equ 3 1692 ; line_number = 306 1693 ; bind _pcfg2 = _adcon1@2 1694 0000009f = _pcfg2___byte equ _adcon1 1695 00000002 = _pcfg2___bit equ 2 1696 ; line_number = 307 1697 ; bind _pcfg1 = _adcon1@1 1698 0000009f = _pcfg1___byte equ _adcon1 1699 00000001 = _pcfg1___bit equ 1 1700 ; line_number = 308 1701 ; bind _pcfg0 = _adcon1@0 1702 0000009f = _pcfg0___byte equ _adcon1 1703 00000000 = _pcfg0___bit equ 0 1704 1705 ; # Bank 2: 1706 1707 ; line_number = 312 1708 ; register _wdtcon = 1709 00000105 = _wdtcon equ 261 1710 ; line_number = 313 1711 ; bind _wdtps3 = _wdtcon@4 1712 00000105 = _wdtps3___byte equ _wdtcon 1713 00000004 = _wdtps3___bit equ 4 1714 ; line_number = 314 1715 ; bind _wdtps2 = _wdtcon@3 1716 00000105 = _wdtps2___byte equ _wdtcon 1717 00000003 = _wdtps2___bit equ 3 1718 ; line_number = 315 1719 ; bind _wdtps1 = _wdtcon@2 1720 00000105 = _wdtps1___byte equ _wdtcon 1721 00000002 = _wdtps1___bit equ 2 1722 ; line_number = 316 1723 ; bind _wdtps0 = _wdtcon@1 1724 00000105 = _wdtps0___byte equ _wdtcon 1725 00000001 = _wdtps0___bit equ 1 1726 ; line_number = 317 1727 ; bind _swdten = _wdtcon@0 1728 00000105 = _swdten___byte equ _wdtcon 1729 00000000 = _swdten___bit equ 0 1730 1731 ; line_number = 319 1732 ; register _lvdcon = 1733 00000109 = _lvdcon equ 265 1734 ; line_number = 320 1735 ; bind _irvst = _lvdcon@5 1736 00000109 = _irvst___byte equ _lvdcon 1737 00000005 = _irvst___bit equ 5 1738 ; line_number = 321 1739 ; bind _lvden = _lvdcon@4 1740 00000109 = _lvden___byte equ _lvdcon 1741 00000004 = _lvden___bit equ 4 1742 ; line_number = 322 1743 ; bind _lvdl3 = _lvdcon@3 1744 00000109 = _lvdl3___byte equ _lvdcon 1745 00000003 = _lvdl3___bit equ 3 1746 ; line_number = 323 1747 ; bind _lvdl2 = _lvdcon@2 1748 00000109 = _lvdl2___byte equ _lvdcon 1749 00000002 = _lvdl2___bit equ 2 1750 ; line_number = 324 1751 ; bind _lvdl1 = _lvdcon@1 1752 00000109 = _lvdl1___byte equ _lvdcon 1753 00000001 = _lvdl1___bit equ 1 1754 ; line_number = 325 1755 ; bind _lvdl0 = _lvdcon@0 1756 00000109 = _lvdl0___byte equ _lvdcon 1757 00000000 = _lvdl0___bit equ 0 1758 1759 ; line_number = 327 1760 ; register _pmdata = 1761 0000010c = _pmdata equ 268 1762 1763 ; line_number = 329 1764 ; register _pmadr = 1765 0000010d = _pmadr equ 269 1766 1767 ; line_number = 331 1768 ; register _pmdath = 1769 0000010e = _pmdath equ 270 1770 1771 ; line_number = 333 1772 ; register _pmadrh = 1773 0000010f = _pmadrh equ 271 1774 1775 ; # Bank 3: 1776 1777 ; line_number = 337 1778 ; register _pmcon1 = 1779 0000018c = _pmcon1 equ 396 1780 ; line_number = 338 1781 ; bind _rd = _pmcon1@0 1782 0000018c = _rd___byte equ _pmcon1 1783 00000000 = _rd___bit equ 0 1784 1785 1786 1787 ; buffer = '_pic16f767' 1788 ; line_number = 341 1789 ; library _pic16f7x7 exited 1790 1791 1792 ; buffer = 'shaft2' 1793 ; line_number = 6 1794 ; library _pic16f767 exited 1795 ; line_number = 7 1796 ; library clock20mhz entered 1797 ; # Copyright (c) 2004 by Wayne C. Gramlich 1798 ; # All rights reserved. 1799 1800 ; # This library defines the contstants {clock_rate}, {instruction_rate}, 1801 ; # and {clocks_per_instruction}. 1802 1803 ; # Define processor constants: 1804 ; buffer = 'clock20mhz' 1805 ; line_number = 9 1806 ; constant clock_rate = 20000000 1807 01312d00 = clock_rate equ 20000000 1808 ; line_number = 10 1809 ; constant clocks_per_instruction = 4 1810 00000004 = clocks_per_instruction equ 4 1811 ; line_number = 11 1812 ; constant instruction_rate = clock_rate / clocks_per_instruction 1813 004c4b40 = instruction_rate equ 5000000 1814 1815 1816 ; buffer = 'shaft2' 1817 ; line_number = 7 1818 ; library clock20mhz exited 1819 ; line_number = 8 1820 ; library _uart entered 1821 ; # Copyright (c) 2004 by Wayne C. Gramlich. 1822 ; # All rights reserved. 1823 1824 ; # This library contains some procedures for accessing the UART. 1825 1826 ; Delaying code generation for procedure _uart_byte_safe_get 1827 ; Delaying code generation for procedure _uart_byte_get 1828 ; Delaying code generation for procedure _uart_hex_put 1829 ; Delaying code generation for procedure _uart_nibble_put 1830 ; Delaying code generation for procedure _uart_space_put 1831 ; Delaying code generation for procedure _uart_crlf_put 1832 ; Delaying code generation for procedure _uart_byte_put 1833 1834 ; line_number = 8 1835 ; library _uart exited 1836 1837 ; # Pin definitions: 1838 1839 ; line_number = 12 1840 ; package pdip 1841 ; line_number = 13 1842 ; pin 1 = mclr 1843 ; line_number = 14 1844 ; pin 2 = ra0_unused 1845 ; line_number = 15 1846 ; pin 3 = ra1_unused 1847 ; line_number = 16 1848 ; pin 4 = ra2_unused 1849 ; line_number = 17 1850 ; pin 5 = ra3_unused 1851 ; line_number = 18 1852 ; pin 6 = ra4_unused 1853 ; line_number = 19 1854 ; pin 7 = ra5_unused 1855 ; line_number = 20 1856 ; pin 8 = ground 1857 ; line_number = 21 1858 ; pin 9 = osc1 1859 ; line_number = 22 1860 ; pin 10 = osc2 1861 ; line_number = 23 1862 ; pin 11 = rc0_unused 1863 ; line_number = 24 1864 ; pin 12 = rc1_unused 1865 ; line_number = 25 1866 ; pin 13 = rc2_unused 1867 ; line_number = 26 1868 ; pin 14 = rc3_unused 1869 ; line_number = 27 1870 ; pin 15 = rc4_unused 1871 ; line_number = 28 1872 ; pin 16 = rc5_unused 1873 ; line_number = 29 1874 ; pin 17 = tx 1875 ; line_number = 30 1876 ; pin 18 = rx 1877 ; line_number = 31 1878 ; pin 19 = ground2 1879 ; line_number = 32 1880 ; pin 20 = power_supply 1881 ; line_number = 33 1882 ; pin 21 = rb0_unused 1883 ; line_number = 34 1884 ; pin 22 = rb1_unused 1885 ; line_number = 35 1886 ; pin 23 = rb2_unused 1887 ; line_number = 36 1888 ; pin 24 = rb3_unused 1889 ; line_number = 37 1890 ; pin 25 = rb4_unused 1891 ; line_number = 38 1892 ; pin 26 = rb5_unused 1893 ; line_number = 39 1894 ; pin 27 = rb6_unused 1895 ; line_number = 40 1896 ; pin 28 = rb7_unused 1897 1898 ; line_number = 42 1899 ; global module_address byte 1900 00000023 = module_address equ globals___0+3 1901 ; line_number = 43 1902 ; global rx9d bit 1903 0000006f = rx9d___byte equ globals___0+79 1904 00000000 = rx9d___bit equ 0 1905 ; line_number = 44 1906 ; global id_index byte 1907 00000024 = id_index equ globals___0+4 1908 1909 ; line_number = 46 1910 ; origin 0 1911 0000 : org 0 1912 1913 ; line_number = 48 1914 ;info 48, 0 1915 ; procedure main 1916 0000 : main: 1917 ; Initialize some registers 1918 0000 019f clrf _adcon0 1919 0001 300f movlw 15 1920 0002 1683 bsf __rp0___byte, __rp0___bit 1921 0003 009f movwf _adcon1 1922 0004 30ff movlw 255 1923 0005 0086 movwf _trisb 1924 0006 30bf movlw 191 1925 0007 0087 movwf _trisc 1926 ; arguments_none 1927 ; line_number = 50 1928 ; returns_nothing 1929 1930 ; line_number = 52 1931 ; local command byte 1932 00000025 = main__command equ globals___0+5 1933 ; line_number = 53 1934 ; local transmit bit 1935 0000006f = main__transmit___byte equ globals___0+79 1936 00000001 = main__transmit___bit equ 1 1937 ; line_number = 54 1938 ; local result byte 1939 00000026 = main__result equ globals___0+6 1940 ; line_number = 55 1941 ; local mode byte 1942 00000027 = main__mode equ globals___0+7 1943 1944 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:00=uu=>00) 1945 ; line_number = 57 1946 ; module_address := 5 1947 ;info 57, 8 1948 0008 3005 movlw 5 1949 0009 1283 bcf __rp0___byte, __rp0___bit 1950 000a 00a3 movwf module_address 1951 1952 ; # Warm up the UART: 1953 ; line_number = 60 1954 ; _trisc@7 := _true 1955 ;info 60, 11 1956 00000087 = main__select__1___byte equ _trisc 1957 00000007 = main__select__1___bit equ 7 1958 000b 1683 bsf __rp0___byte, __rp0___bit 1959 000c 1787 bsf main__select__1___byte, main__select__1___bit 1960 ; line_number = 61 1961 ; _trisc@6 := _true 1962 ;info 61, 13 1963 00000087 = main__select__2___byte equ _trisc 1964 00000006 = main__select__2___bit equ 6 1965 000d 1707 bsf main__select__2___byte, main__select__2___bit 1966 1967 ; line_number = 63 1968 ; _txsta := 0 1969 ;info 63, 14 1970 000e 0198 clrf _txsta 1971 ; line_number = 64 1972 ; _tx9 := _true 1973 ;info 64, 15 1974 000f 1718 bsf _tx9___byte, _tx9___bit 1975 ; #_tx9 := _false 1976 ; line_number = 66 1977 ; _txen := _true 1978 ;info 66, 16 1979 0010 1698 bsf _txen___byte, _txen___bit 1980 ; line_number = 67 1981 ; _brgh := _true 1982 ;info 67, 17 1983 0011 1518 bsf _brgh___byte, _brgh___bit 1984 1985 ; line_number = 69 1986 ; _rcsta := 0 1987 ;info 69, 18 1988 0012 1283 bcf __rp0___byte, __rp0___bit 1989 0013 0198 clrf _rcsta 1990 ; line_number = 70 1991 ; _spen := _true 1992 ;info 70, 20 1993 0014 1798 bsf _spen___byte, _spen___bit 1994 ; line_number = 71 1995 ; _rx9 := _true 1996 ;info 71, 21 1997 0015 1718 bsf _rx9___byte, _rx9___bit 1998 ; #_rx9 := _false 1999 ; line_number = 73 2000 ; _cren := _true 2001 ;info 73, 22 2002 0016 1618 bsf _cren___byte, _cren___bit 2003 ; #_adden := _true 2004 ; line_number = 75 2005 ; _adden := _false 2006 ;info 75, 23 2007 0017 1198 bcf _adden___byte, _adden___bit 2008 2009 ; # Baud rate = 625000 @ 20MHz. 2010 ; line_number = 78 2011 ; _spbrg := 1 2012 ;info 78, 24 2013 0018 3001 movlw 1 2014 0019 1683 bsf __rp0___byte, __rp0___bit 2015 001a 0099 movwf _spbrg 2016 2017 ; line_number = 80 2018 ; mode := 0 2019 ;info 80, 27 2020 001b 1283 bcf __rp0___byte, __rp0___bit 2021 001c 01a7 clrf main__mode 2022 ; line_number = 81 2023 ; id_index := 0 2024 ;info 81, 29 2025 001d 01a4 clrf id_index 2026 2027 ; #loop_forever 2028 ; # call _uart_byte_put(command) 2029 ; # loop_exactly 100 2030 ; # delay 500 2031 ; # do_nothing 2032 ; # command := command + 1 2033 2034 ; #loop_forever 2035 ; # command := _uart_byte_get() 2036 ; # call _uart_byte_put(command + 1) 2037 ; # call _uart_byte_get() 2038 2039 ; line_number = 95 2040 ; loop_forever start 2041 001e : main__3: 2042 ; line_number = 96 2043 ; transmit := _false 2044 ;info 96, 30 2045 001e 10ef bcf main__transmit___byte, main__transmit___bit 2046 ; line_number = 97 2047 ; rx9d := _false 2048 ;info 97, 31 2049 001f 106f bcf rx9d___byte, rx9d___bit 2050 ; line_number = 98 2051 ; while !_rcif start 2052 0020 : main__4: 2053 ;info 98, 32 2054 ; =>bit_code_emit@symbol(): sym=_rcif 2055 ; 1TEST: Single test with code in skip slot 2056 0020 1e8c btfss _rcif___byte, _rcif___bit 2057 ; line_number = 99 2058 ; do_nothing 2059 ;info 99, 33 2060 0021 2820 goto main__4 2061 ; Recombine size1 = 0 || size2 = 0 2062 ; line_number = 98 2063 ; while !_rcif done 2064 ; line_number = 100 2065 ; if _rx9d start 2066 ;info 100, 34 2067 ; =>bit_code_emit@symbol(): sym=_rx9d 2068 ; 1TEST: Single test with code in skip slot 2069 0022 1818 btfsc _rx9d___byte, _rx9d___bit 2070 ; line_number = 101 2071 ; rx9d := _true 2072 ;info 101, 35 2073 0023 146f bsf rx9d___byte, rx9d___bit 2074 ; Recombine size1 = 0 || size2 = 0 2075 ; line_number = 100 2076 ; if _rx9d done 2077 ; line_number = 102 2078 ; command := _rcreg 2079 ;info 102, 36 2080 0024 081a movf _rcreg,w 2081 0025 00a5 movwf main__command 2082 2083 ; line_number = 104 2084 ; if rx9d start 2085 ;info 104, 38 2086 ; =>bit_code_emit@symbol(): sym=rx9d 2087 ; No 1TEST: true.size=11 false.size=69 2088 ; No 2TEST: true.size=11 false.size=69 2089 ; 2GOTO: Single test with two GOTO's 2090 0026 1c6f btfss rx9d___byte, rx9d___bit 2091 0027 2834 goto main__25 2092 ; # We have an address bit: 2093 ; line_number = 106 2094 ; if command = module_address start 2095 ;info 106, 40 2096 ; Left minus Right 2097 0028 0823 movf module_address,w 2098 0029 0225 subwf main__command,w 2099 ; =>bit_code_emit@symbol(): sym=__z 2100 ; No 1TEST: true.size=4 false.size=1 2101 ; No 2TEST: true.size=4 false.size=1 2102 ; 2GOTO: Single test with two GOTO's 2103 002a 1d03 btfss __z___byte, __z___bit 2104 002b 2831 goto main__23 2105 ; # We have a match: 2106 ; line_number = 108 2107 ; _adden := _false 2108 ;info 108, 44 2109 002c 1198 bcf _adden___byte, _adden___bit 2110 ; line_number = 109 2111 ; result := 0x5a 2112 ;info 109, 45 2113 002d 305a movlw 90 2114 002e 00a6 movwf main__result 2115 ; line_number = 110 2116 ; transmit := _true 2117 ;info 110, 47 2118 002f 14ef bsf main__transmit___byte, main__transmit___bit 2119 0030 2832 goto main__24 2120 ; 2GOTO: Starting code 2 2121 0031 : main__23: 2122 ; # We need to disable non-address reception: 2123 ; line_number = 113 2124 ; _adden := _true 2125 ;info 113, 49 2126 0031 1598 bsf _adden___byte, _adden___bit 2127 0032 : main__24: 2128 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2129 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2130 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00) 2131 ; line_number = 106 2132 ; if command = module_address done 2133 ; line_number = 114 2134 ; mode := 0 2135 ;info 114, 50 2136 0032 01a7 clrf main__mode 2137 0033 2879 goto main__26 2138 ; 2GOTO: Starting code 2 2139 0034 : main__25: 2140 ; # We have a command: 2141 ; line_number = 117 2142 ; switch mode start 2143 ;info 117, 52 2144 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2145 0034 3000 movlw main__21>>8 2146 0035 008a movwf __pclath 2147 0036 0827 movf main__mode,w 2148 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2149 0037 3e39 addlw main__21 2150 0038 0082 movwf __pcl 2151 ; page_group 1 2152 0039 : main__21: 2153 0039 283a goto main__20 2154 ; line_number = 118 2155 ; case 0 2156 003a : main__20: 2157 ; # Basic instruction decoding: 2158 ; line_number = 120 2159 ; switch command >> 6 start 2160 ;info 120, 58 2161 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2162 003a 3000 movlw main__17>>8 2163 003b 008a movwf __pclath 2164 00000028 = main__18 equ globals___0+8 2165 003c 0e25 swapf main__command,w 2166 003d 00a8 movwf main__18 2167 003e 0ca8 rrf main__18,f 2168 003f 0c28 rrf main__18,w 2169 0040 3903 andlw 3 2170 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2171 0041 3e43 addlw main__17 2172 0042 0082 movwf __pcl 2173 ; page_group 4 2174 0043 : main__17: 2175 0043 2879 goto main__19 2176 0044 2879 goto main__19 2177 0045 2879 goto main__19 2178 0046 2847 goto main__16 2179 ; line_number = 121 2180 ; case 3 2181 0047 : main__16: 2182 ; # 11xx xxxx: 2183 ; line_number = 123 2184 ; switch (command >> 3) & 7 start 2185 ;info 123, 71 2186 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2187 0047 3000 movlw main__13>>8 2188 0048 008a movwf __pclath 2189 00000028 = main__14 equ globals___0+8 2190 0049 0c25 rrf main__command,w 2191 004a 00a8 movwf main__14 2192 004b 0ca8 rrf main__14,f 2193 004c 0c28 rrf main__14,w 2194 004d 3907 andlw 7 2195 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2196 004e 3e50 addlw main__13 2197 004f 0082 movwf __pcl 2198 ; page_group 8 2199 0050 : main__13: 2200 0050 2879 goto main__15 2201 0051 2879 goto main__15 2202 0052 2879 goto main__15 2203 0053 2879 goto main__15 2204 0054 2879 goto main__15 2205 0055 2879 goto main__15 2206 0056 2879 goto main__15 2207 0057 2858 goto main__12 2208 ; line_number = 124 2209 ; case 7 2210 0058 : main__12: 2211 ; # 1111 1xxx: 2212 ; line_number = 126 2213 ; switch command & 7 start 2214 ;info 126, 88 2215 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2216 0058 3000 movlw main__10>>8 2217 0059 008a movwf __pclath 2218 005a 3007 movlw 7 2219 005b 0525 andwf main__command,w 2220 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2221 005c 3e5e addlw main__10 2222 005d 0082 movwf __pcl 2223 ; page_group 8 2224 005e : main__10: 2225 005e 2879 goto main__11 2226 005f 2879 goto main__11 2227 0060 2879 goto main__11 2228 0061 2879 goto main__11 2229 0062 2866 goto main__6 2230 0063 2867 goto main__7 2231 0064 2872 goto main__8 2232 0065 2876 goto main__9 2233 ; line_number = 127 2234 ; case 4 2235 0066 : main__6: 2236 ; # 1111 1100 (Address_Set) 2237 0066 2879 goto main__11 2238 ; line_number = 129 2239 ; case 5 2240 0067 : main__7: 2241 ; # 1111 1101 (Id_Next) 2242 ; line_number = 131 2243 ; transmit := _true 2244 ;info 131, 103 2245 0067 14ef bsf main__transmit___byte, main__transmit___bit 2246 ; line_number = 132 2247 ; result := 0 2248 ;info 132, 104 2249 0068 01a6 clrf main__result 2250 ; line_number = 133 2251 ; if id_index < id.size start 2252 ;info 133, 105 2253 0069 3016 movlw 22 2254 006a 0224 subwf id_index,w 2255 ; =>bit_code_emit@symbol(): sym=__c 2256 ; No 1TEST: true.size=0 false.size=4 2257 ; No 2TEST: true.size=0 false.size=4 2258 ; 1GOTO: Single test with GOTO 2259 006b 1803 btfsc __c___byte, __c___bit 2260 006c 2871 goto main__5 2261 ; line_number = 134 2262 ; result := id[id_index] 2263 ;info 134, 109 2264 006d 0824 movf id_index,w 2265 006e 207f call id 2266 006f 00a6 movwf main__result 2267 ; line_number = 135 2268 ; id_index := id_index + 1 2269 ;info 135, 112 2270 0070 0aa4 incf id_index,f 2271 0071 : main__5: 2272 ; Recombine size1 = 0 || size2 = 0 2273 ; line_number = 133 2274 ; if id_index < id.size done 2275 ; #result := id_index 2276 0071 2879 goto main__11 2277 ; line_number = 137 2278 ; case 6 2279 0072 : main__8: 2280 ; # 1111 1110 (Id_Start) 2281 ; line_number = 139 2282 ; id_index := 0 2283 ;info 139, 114 2284 0072 01a4 clrf id_index 2285 ; line_number = 140 2286 ; result := 0 2287 ;info 140, 115 2288 0073 01a6 clrf main__result 2289 ; line_number = 141 2290 ; transmit := _true 2291 ;info 141, 116 2292 0074 14ef bsf main__transmit___byte, main__transmit___bit 2293 0075 2879 goto main__11 2294 ; line_number = 142 2295 ; case 7 2296 0076 : main__9: 2297 ; # 1111 1111 (Deselect): 2298 ; line_number = 144 2299 ; result := 0 2300 ;info 144, 118 2301 0076 01a6 clrf main__result 2302 ; line_number = 145 2303 ; transmit := _true 2304 ;info 145, 119 2305 0077 14ef bsf main__transmit___byte, main__transmit___bit 2306 ; line_number = 146 2307 ; _adden := _true 2308 ;info 146, 120 2309 0078 1598 bsf _adden___byte, _adden___bit 2310 2311 0079 : main__11: 2312 ; line_number = 126 2313 ; switch command & 7 done 2314 0079 : main__15: 2315 ; line_number = 123 2316 ; switch (command >> 3) & 7 done 2317 0079 : main__19: 2318 ; line_number = 120 2319 ; switch command >> 6 done 2320 0079 : main__22: 2321 ; line_number = 117 2322 ; switch mode done 2323 0079 : main__26: 2324 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00) 2325 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00) 2326 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00) 2327 ; line_number = 104 2328 ; if rx9d done 2329 ; line_number = 148 2330 ; if transmit start 2331 ;info 148, 121 2332 ; =>bit_code_emit@symbol(): sym=main__transmit 2333 ; No 1TEST: true.size=3 false.size=0 2334 ; No 2TEST: true.size=3 false.size=0 2335 ; 1GOTO: Single test with GOTO 2336 0079 1cef btfss main__transmit___byte, main__transmit___bit 2337 007a 287e goto main__27 2338 ; line_number = 149 2339 ; call _uart_byte_put(result) 2340 ;info 149, 123 2341 007b 0826 movf main__result,w 2342 007c 20c7 call _uart_byte_put 2343 2344 ; # Dispose of echoed command in buffer: 2345 ; line_number = 152 2346 ; call _uart_byte_get() 2347 ;info 152, 125 2348 007d 20a8 call _uart_byte_get 2349 2350 2351 ; Recombine size1 = 0 || size2 = 0 2352 007e : main__27: 2353 ; line_number = 148 2354 ; if transmit done 2355 ; line_number = 95 2356 ; loop_forever wrap-up 2357 007e 281e goto main__3 2358 ; line_number = 95 2359 ; loop_forever done 2360 ; delay after procedure statements=non-uniform 2361 2362 2363 2364 2365 ; line_number = 155 2366 ; string id = "\16,0,5,1,3,8\Shaft2-A\7\Gramson" start 2367 ; id = '\16,0,5,1,3,8\Shaft2-A\7\Gramson' 2368 007f : id: 2369 ; Temporarily save index into FSR 2370 007f 0084 movwf __fsr 2371 ; Initialize PCLATH to point to this code page 2372 0080 3000 movlw id___base>>8 2373 0081 008a movwf __pclath 2374 ; Restore index from FSR 2375 0082 0804 movf __fsr,w 2376 0083 3e85 addlw id___base 2377 ; Index to the correct return value 2378 0084 0082 movwf __pcl 2379 ; page_group 22 2380 0085 : id___base: 2381 0085 3410 retlw 16 2382 0086 3400 retlw 0 2383 0087 3405 retlw 5 2384 0088 3401 retlw 1 2385 0089 3403 retlw 3 2386 008a 3408 retlw 8 2387 008b 3453 retlw 83 2388 008c 3468 retlw 104 2389 008d 3461 retlw 97 2390 008e 3466 retlw 102 2391 008f 3474 retlw 116 2392 0090 3432 retlw 50 2393 0091 342d retlw 45 2394 0092 3441 retlw 65 2395 0093 3407 retlw 7 2396 0094 3447 retlw 71 2397 0095 3472 retlw 114 2398 0096 3461 retlw 97 2399 0097 346d retlw 109 2400 0098 3473 retlw 115 2401 0099 346f retlw 111 2402 009a 346e retlw 110 2403 ; line_number = 155 2404 ; string id = "\16,0,5,1,3,8\Shaft2-A\7\Gramson" start 2405 2406 2407 2408 ; Appending 7 delayed procedures to code bank 0 2409 ; buffer = '_uart' 2410 ; line_number = 7 2411 ;info 7, 155 2412 ; procedure _uart_byte_safe_get 2413 009b : _uart_byte_safe_get: 2414 ; arguments_none 2415 ; line_number = 9 2416 ; returns byte 2417 2418 ; # This procedure will the next byte from UART. If no byte 2419 ; # received in a reasonable time, 0xfc is returned. 2420 2421 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2422 ; line_number = 14 2423 ; loop_exactly 255 start 2424 ;info 14, 155 2425 00000029 = _uart_byte_safe_get__1 equ globals___0+9 2426 009b 30ff movlw 255 2427 009c 00a9 movwf _uart_byte_safe_get__1 2428 009d : _uart_byte_safe_get__2: 2429 ; line_number = 15 2430 ; loop_exactly 255 start 2431 ;info 15, 157 2432 0000002a = _uart_byte_safe_get__3 equ globals___0+10 2433 009d 30ff movlw 255 2434 009e 00aa movwf _uart_byte_safe_get__3 2435 009f : _uart_byte_safe_get__4: 2436 ; line_number = 16 2437 ; if _rcif start 2438 ;info 16, 159 2439 ; =>bit_code_emit@symbol(): sym=_rcif 2440 ; No 1TEST: true.size=2 false.size=0 2441 ; No 2TEST: true.size=2 false.size=0 2442 ; 1GOTO: Single test with GOTO 2443 009f 1e8c btfss _rcif___byte, _rcif___bit 2444 00a0 28a3 goto _uart_byte_safe_get__5 2445 ; line_number = 17 2446 ; return _rcreg start 2447 ; line_number = 17 2448 ;info 17, 161 2449 00a1 081a movf _rcreg,w 2450 00a2 0008 return 2451 ; line_number = 17 2452 ; return _rcreg done 2453 ; Recombine size1 = 0 || size2 = 0 2454 00a3 : _uart_byte_safe_get__5: 2455 ; line_number = 16 2456 ; if _rcif done 2457 ; line_number = 15 2458 ; loop_exactly 255 wrap-up 2459 00a3 0baa decfsz _uart_byte_safe_get__3,f 2460 00a4 289f goto _uart_byte_safe_get__4 2461 ; line_number = 15 2462 ; loop_exactly 255 done 2463 ; line_number = 14 2464 ; loop_exactly 255 wrap-up 2465 00a5 0ba9 decfsz _uart_byte_safe_get__1,f 2466 00a6 289d goto _uart_byte_safe_get__2 2467 ; line_number = 14 2468 ; loop_exactly 255 done 2469 ; line_number = 18 2470 ; return 0xfc start 2471 ; line_number = 18 2472 ;info 18, 167 2473 00a7 34fc retlw 252 2474 ; line_number = 18 2475 ; return 0xfc done 2476 2477 2478 ; delay after procedure statements=non-uniform 2479 2480 2481 2482 2483 ; line_number = 21 2484 ;info 21, 168 2485 ; procedure _uart_byte_get 2486 00a8 : _uart_byte_get: 2487 ; arguments_none 2488 ; line_number = 23 2489 ; returns byte 2490 2491 ; # This procedure will return the next byte from the UART. 2492 2493 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2494 ; line_number = 27 2495 ; while !_rcif start 2496 00a8 : _uart_byte_get__1: 2497 ;info 27, 168 2498 ; =>bit_code_emit@symbol(): sym=_rcif 2499 ; 1TEST: Single test with code in skip slot 2500 00a8 1e8c btfss _rcif___byte, _rcif___bit 2501 ; line_number = 28 2502 ; do_nothing 2503 ;info 28, 169 2504 00a9 28a8 goto _uart_byte_get__1 2505 ; Recombine size1 = 0 || size2 = 0 2506 ; line_number = 27 2507 ; while !_rcif done 2508 ; line_number = 29 2509 ; return _rcreg start 2510 ; line_number = 29 2511 ;info 29, 170 2512 00aa 081a movf _rcreg,w 2513 00ab 0008 return 2514 ; line_number = 29 2515 ; return _rcreg done 2516 2517 2518 ; delay after procedure statements=non-uniform 2519 2520 2521 2522 2523 ; line_number = 32 2524 ;info 32, 172 2525 ; procedure _uart_hex_put 2526 00ac : _uart_hex_put: 2527 ; Last argument is sitting in W; save into argument variable 2528 00ac 00a0 movwf _uart_hex_put__value 2529 ; delay=4294967295 2530 ; line_number = 33 2531 ; argument value byte 2532 00000020 = _uart_hex_put__value equ globals___0 2533 ; line_number = 34 2534 ; returns_nothing 2535 2536 ; # This procedure will output {value} to the UART as a 2-digit 2537 ; # hexadecimal number. 2538 2539 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2540 ; line_number = 39 2541 ; call _uart_nibble_put(value >> 4) 2542 ;info 39, 173 2543 0000002b = _uart_hex_put__1 equ globals___0+11 2544 00ad 0e20 swapf _uart_hex_put__value,w 2545 00ae 390f andlw 15 2546 00af 20b4 call _uart_nibble_put 2547 ; line_number = 40 2548 ; call _uart_nibble_put(value & 0xf) 2549 ;info 40, 176 2550 00b0 300f movlw 15 2551 00b1 0520 andwf _uart_hex_put__value,w 2552 00b2 20b4 call _uart_nibble_put 2553 2554 2555 ; delay after procedure statements=non-uniform 2556 ; Implied return 2557 00b3 3400 retlw 0 2558 2559 2560 2561 2562 ; line_number = 43 2563 ;info 43, 180 2564 ; procedure _uart_nibble_put 2565 00b4 : _uart_nibble_put: 2566 ; Last argument is sitting in W; save into argument variable 2567 00b4 00a1 movwf _uart_nibble_put__nibble 2568 ; delay=4294967295 2569 ; line_number = 44 2570 ; argument nibble byte 2571 00000021 = _uart_nibble_put__nibble equ globals___0+1 2572 ; line_number = 45 2573 ; returns_nothing 2574 2575 ; # This procedure will output {value} to UART as a 1 digit 2576 ; # hexadecimal number. 2577 2578 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2579 ; line_number = 50 2580 ; if nibble < 10 start 2581 ;info 50, 181 2582 00b5 300a movlw 10 2583 00b6 0221 subwf _uart_nibble_put__nibble,w 2584 ; =>bit_code_emit@symbol(): sym=__c 2585 ; No 1TEST: true.size=1 false.size=1 2586 ; 2TEST: two tests with code in both delay slots 2587 00b7 1803 btfsc __c___byte, __c___bit 2588 ; line_number = 53 2589 ; nibble := nibble - 10 + 'A' 2590 ;info 53, 184 2591 00b8 3037 movlw 55 2592 00b9 1c03 btfss __c___byte, __c___bit 2593 ; line_number = 51 2594 ; nibble := nibble + '0' 2595 ;info 51, 186 2596 00ba 3030 movlw 48 2597 00bb 07a1 addwf _uart_nibble_put__nibble,f 2598 ; line_number = 50 2599 ; if nibble < 10 done 2600 ; line_number = 54 2601 ; call _uart_byte_put(nibble) 2602 ;info 54, 188 2603 00bc 0821 movf _uart_nibble_put__nibble,w 2604 00bd 20c7 call _uart_byte_put 2605 2606 2607 ; delay after procedure statements=non-uniform 2608 ; Implied return 2609 00be 3400 retlw 0 2610 2611 2612 2613 2614 ; line_number = 57 2615 ;info 57, 191 2616 ; procedure _uart_space_put 2617 00bf : _uart_space_put: 2618 ; arguments_none 2619 ; line_number = 59 2620 ; returns_nothing 2621 2622 ; # This procedure will output a space to the UART. 2623 2624 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2625 ; line_number = 63 2626 ; call _uart_byte_put(' ') 2627 ;info 63, 191 2628 00bf 3020 movlw 32 2629 00c0 20c7 call _uart_byte_put 2630 2631 2632 ; delay after procedure statements=non-uniform 2633 ; Implied return 2634 00c1 3400 retlw 0 2635 2636 2637 2638 2639 ; line_number = 66 2640 ;info 66, 194 2641 ; procedure _uart_crlf_put 2642 00c2 : _uart_crlf_put: 2643 ; arguments_none 2644 ; line_number = 68 2645 ; returns_nothing 2646 2647 ; # This procedure will output a carriage return line feed sequecne to 2648 ; # the UART. 2649 2650 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2651 ; line_number = 73 2652 ; call _uart_byte_put('\cr\') 2653 ;info 73, 194 2654 00c2 300d movlw 13 2655 00c3 20c7 call _uart_byte_put 2656 ; line_number = 74 2657 ; call _uart_byte_put('\lf\') 2658 ;info 74, 196 2659 00c4 300a movlw 10 2660 00c5 20c7 call _uart_byte_put 2661 2662 2663 ; delay after procedure statements=non-uniform 2664 ; Implied return 2665 00c6 3400 retlw 0 2666 2667 2668 2669 2670 ; line_number = 77 2671 ;info 77, 199 2672 ; procedure _uart_byte_put 2673 00c7 : _uart_byte_put: 2674 ; Last argument is sitting in W; save into argument variable 2675 00c7 00a2 movwf _uart_byte_put__byte 2676 ; delay=4294967295 2677 ; line_number = 78 2678 ; argument byte byte 2679 00000022 = _uart_byte_put__byte equ globals___0+2 2680 ; line_number = 79 2681 ; returns_nothing 2682 2683 ; # This procedure will send {byte} out using to the UART. 2684 2685 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00) 2686 ; line_number = 83 2687 ; while !_txif start 2688 00c8 : _uart_byte_put__1: 2689 ;info 83, 200 2690 ; =>bit_code_emit@symbol(): sym=_txif 2691 ; 1TEST: Single test with code in skip slot 2692 00c8 1e0c btfss _txif___byte, _txif___bit 2693 ; line_number = 84 2694 ; do_nothing 2695 ;info 84, 201 2696 00c9 28c8 goto _uart_byte_put__1 2697 ; Recombine size1 = 0 || size2 = 0 2698 ; line_number = 83 2699 ; while !_txif done 2700 ; line_number = 85 2701 ; _txreg := byte 2702 ;info 85, 202 2703 00ca 0822 movf _uart_byte_put__byte,w 2704 00cb 0099 movwf _txreg 2705 2706 2707 ; delay after procedure statements=non-uniform 2708 ; Implied return 2709 00cc 3400 retlw 0 2710 2711 2712 2713 2714 ; Code bank 1; Start address: 2048; End address: 4095 2715 0800 : org 2048 2716 ; Code bank 2; Start address: 4096; End address: 6143 2717 1000 : org 4096 2718 ; Code bank 3; Start address: 6144; End address: 8191 2719 1800 : org 6144 2720 ; Configuration bits 2721 ; address = 0x2007, fill = 0x600 2722 ; cp = off (0x2000) 2723 ; cpmx = rc1 (0x1000) 2724 ; debug = off (0x800) 2725 ; borv = borv00 (0x0) 2726 ; boren = off (0x0) 2727 ; mclre = off (0x0) 2728 ; pwrten = off (0x8) 2729 ; wdten = off (0x0) 2730 ; fosc = hs (0x2) 2731 ; 15882 = 0x3e0a 2732 ; 8199 = 0x2007 2733 3e0a = __config 8199, 15882 2734 ; Configuration bits 2735 ; address = 0x2008, fill = 0x3fbc 2736 ; borsen = off (0x0) 2737 ; ieso = off (0x0) 2738 ; fcmen = off (0x0) 2739 ; 16316 = 0x3fbc 2740 ; 8200 = 0x2008 2741 3fbc = __config 8200, 16316 2742 ; Define start addresses for data regions 2743 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 2744 ; Region="globals___0" Address=32" Size=80 Bytes=12 Bits=2 Available=67 2745 ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80 2746 ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96 2747 ; Region="globals___3" Address=400" Size=112 Bytes=0 Bits=0 Available=112 2748 end