1 /* 2 * This declarations of the PIC18F2539 MCU. 3 * 4 * This file is part of the GNU PIC library for SDCC, originally 5 * created by Molnar Karoly <molnarkaroly@users.sf.net> 2016. 6 * 7 * This file is generated automatically by the cinc2h.pl, 2016-04-13 17:23:44 UTC. 8 * 9 * SDCC is licensed under the GNU Public license (GPL) v2. Note that 10 * this license covers the code to the compiler and other executables, 11 * but explicitly does not cover any code or objects generated by sdcc. 12 * 13 * For pic device libraries and header files which are derived from 14 * Microchip header (.inc) and linker script (.lkr) files Microchip 15 * requires that "The header files should state that they are only to be 16 * used with authentic Microchip devices" which makes them incompatible 17 * with the GPL. Pic device libraries and header files are located at 18 * non-free/lib and non-free/include directories respectively. 19 * Sdcc should be run with the --use-non-free command line option in 20 * order to include non-free header files and libraries. 21 * 22 * See http://sdcc.sourceforge.net/ for the latest information on sdcc. 23 */ 24 25 #ifndef __PIC18F2539_H__ 26 #define __PIC18F2539_H__ 27 28 //============================================================================== 29 30 //============================================================================== 31 // 32 // Register Definitions 33 // 34 //============================================================================== 35 36 37 //============================================================================== 38 // PORTA Bits 39 40 extern __at(0x0F80) __sfr PORTA; 41 42 typedef union 43 { 44 struct 45 { 46 unsigned RA0 : 1; 47 unsigned RA1 : 1; 48 unsigned RA2 : 1; 49 unsigned RA3 : 1; 50 unsigned RA4 : 1; 51 unsigned RA5 : 1; 52 unsigned RA6 : 1; 53 unsigned : 1; 54 }; 55 56 struct 57 { 58 unsigned AN0 : 1; 59 unsigned AN1 : 1; 60 unsigned AN2 : 1; 61 unsigned AN3 : 1; 62 unsigned T0CKI : 1; 63 unsigned AN4 : 1; 64 unsigned OSC2 : 1; 65 unsigned : 1; 66 }; 67 68 struct 69 { 70 unsigned : 1; 71 unsigned : 1; 72 unsigned VREFM : 1; 73 unsigned VREFP : 1; 74 unsigned : 1; 75 unsigned SS : 1; 76 unsigned CLK0 : 1; 77 unsigned : 1; 78 }; 79 80 struct 81 { 82 unsigned : 1; 83 unsigned : 1; 84 unsigned : 1; 85 unsigned : 1; 86 unsigned : 1; 87 unsigned LVDIN : 1; 88 unsigned : 1; 89 unsigned : 1; 90 }; 91 92 struct 93 { 94 unsigned RA : 7; 95 unsigned : 1; 96 }; 97 } __PORTAbits_t; 98 99 extern __at(0x0F80) volatile __PORTAbits_t PORTAbits; 100 101 #define _PORTA_RA0 0x01 102 #define _PORTA_AN0 0x01 103 #define _PORTA_RA1 0x02 104 #define _PORTA_AN1 0x02 105 #define _PORTA_RA2 0x04 106 #define _PORTA_AN2 0x04 107 #define _PORTA_VREFM 0x04 108 #define _PORTA_RA3 0x08 109 #define _PORTA_AN3 0x08 110 #define _PORTA_VREFP 0x08 111 #define _PORTA_RA4 0x10 112 #define _PORTA_T0CKI 0x10 113 #define _PORTA_RA5 0x20 114 #define _PORTA_AN4 0x20 115 #define _PORTA_SS 0x20 116 #define _PORTA_LVDIN 0x20 117 #define _PORTA_RA6 0x40 118 #define _PORTA_OSC2 0x40 119 #define _PORTA_CLK0 0x40 120 121 //============================================================================== 122 123 124 //============================================================================== 125 // PORTB Bits 126 127 extern __at(0x0F81) __sfr PORTB; 128 129 typedef union 130 { 131 struct 132 { 133 unsigned RB0 : 1; 134 unsigned RB1 : 1; 135 unsigned RB2 : 1; 136 unsigned RB3 : 1; 137 unsigned RB4 : 1; 138 unsigned RB5 : 1; 139 unsigned RB6 : 1; 140 unsigned RB7 : 1; 141 }; 142 143 struct 144 { 145 unsigned INT0 : 1; 146 unsigned INT1 : 1; 147 unsigned INT2 : 1; 148 unsigned INT3 : 1; 149 unsigned : 1; 150 unsigned : 1; 151 unsigned : 1; 152 unsigned : 1; 153 }; 154 155 struct 156 { 157 unsigned INT : 4; 158 unsigned : 4; 159 }; 160 } __PORTBbits_t; 161 162 extern __at(0x0F81) volatile __PORTBbits_t PORTBbits; 163 164 #define _PORTB_RB0 0x01 165 #define _PORTB_INT0 0x01 166 #define _PORTB_RB1 0x02 167 #define _PORTB_INT1 0x02 168 #define _PORTB_RB2 0x04 169 #define _PORTB_INT2 0x04 170 #define _PORTB_RB3 0x08 171 #define _PORTB_INT3 0x08 172 #define _PORTB_RB4 0x10 173 #define _PORTB_RB5 0x20 174 #define _PORTB_RB6 0x40 175 #define _PORTB_RB7 0x80 176 177 //============================================================================== 178 179 180 //============================================================================== 181 // PORTC Bits 182 183 extern __at(0x0F82) __sfr PORTC; 184 185 typedef union 186 { 187 struct 188 { 189 unsigned RC0 : 1; 190 unsigned T1OSI : 1; 191 unsigned CCP1 : 1; 192 unsigned RC3 : 1; 193 unsigned RC4 : 1; 194 unsigned RC5 : 1; 195 unsigned RC6 : 1; 196 unsigned RC7 : 1; 197 }; 198 199 struct 200 { 201 unsigned T1OSO : 1; 202 unsigned CCP2 : 1; 203 unsigned RC2 : 1; 204 unsigned SCK : 1; 205 unsigned SDI : 1; 206 unsigned SDO : 1; 207 unsigned TX : 1; 208 unsigned RX : 1; 209 }; 210 211 struct 212 { 213 unsigned T1CKI : 1; 214 unsigned RC1 : 1; 215 unsigned : 1; 216 unsigned SCL : 1; 217 unsigned SDA : 1; 218 unsigned : 1; 219 unsigned CK : 1; 220 unsigned : 1; 221 }; 222 } __PORTCbits_t; 223 224 extern __at(0x0F82) volatile __PORTCbits_t PORTCbits; 225 226 #define _PORTC_RC0 0x01 227 #define _PORTC_T1OSO 0x01 228 #define _PORTC_T1CKI 0x01 229 #define _PORTC_T1OSI 0x02 230 #define _PORTC_CCP2 0x02 231 #define _PORTC_RC1 0x02 232 #define _PORTC_CCP1 0x04 233 #define _PORTC_RC2 0x04 234 #define _PORTC_RC3 0x08 235 #define _PORTC_SCK 0x08 236 #define _PORTC_SCL 0x08 237 #define _PORTC_RC4 0x10 238 #define _PORTC_SDI 0x10 239 #define _PORTC_SDA 0x10 240 #define _PORTC_RC5 0x20 241 #define _PORTC_SDO 0x20 242 #define _PORTC_RC6 0x40 243 #define _PORTC_TX 0x40 244 #define _PORTC_CK 0x40 245 #define _PORTC_RC7 0x80 246 #define _PORTC_RX 0x80 247 248 //============================================================================== 249 250 251 //============================================================================== 252 // LATA Bits 253 254 extern __at(0x0F89) __sfr LATA; 255 256 typedef union 257 { 258 struct 259 { 260 unsigned LATA0 : 1; 261 unsigned LATA1 : 1; 262 unsigned LATA2 : 1; 263 unsigned LATA3 : 1; 264 unsigned LATA4 : 1; 265 unsigned LATA5 : 1; 266 unsigned LATA6 : 1; 267 unsigned : 1; 268 }; 269 270 struct 271 { 272 unsigned LATA : 7; 273 unsigned : 1; 274 }; 275 } __LATAbits_t; 276 277 extern __at(0x0F89) volatile __LATAbits_t LATAbits; 278 279 #define _LATA0 0x01 280 #define _LATA1 0x02 281 #define _LATA2 0x04 282 #define _LATA3 0x08 283 #define _LATA4 0x10 284 #define _LATA5 0x20 285 #define _LATA6 0x40 286 287 //============================================================================== 288 289 290 //============================================================================== 291 // LATB Bits 292 293 extern __at(0x0F8A) __sfr LATB; 294 295 typedef struct 296 { 297 unsigned LATB0 : 1; 298 unsigned LATB1 : 1; 299 unsigned LATB2 : 1; 300 unsigned LATB3 : 1; 301 unsigned LATB4 : 1; 302 unsigned LATB5 : 1; 303 unsigned LATB6 : 1; 304 unsigned LATB7 : 1; 305 } __LATBbits_t; 306 307 extern __at(0x0F8A) volatile __LATBbits_t LATBbits; 308 309 #define _LATB0 0x01 310 #define _LATB1 0x02 311 #define _LATB2 0x04 312 #define _LATB3 0x08 313 #define _LATB4 0x10 314 #define _LATB5 0x20 315 #define _LATB6 0x40 316 #define _LATB7 0x80 317 318 //============================================================================== 319 320 321 //============================================================================== 322 // LATC Bits 323 324 extern __at(0x0F8B) __sfr LATC; 325 326 typedef struct 327 { 328 unsigned LATC0 : 1; 329 unsigned LATC1 : 1; 330 unsigned LATC2 : 1; 331 unsigned LATC3 : 1; 332 unsigned LATC4 : 1; 333 unsigned LATC5 : 1; 334 unsigned LATC6 : 1; 335 unsigned LATC7 : 1; 336 } __LATCbits_t; 337 338 extern __at(0x0F8B) volatile __LATCbits_t LATCbits; 339 340 #define _LATC0 0x01 341 #define _LATC1 0x02 342 #define _LATC2 0x04 343 #define _LATC3 0x08 344 #define _LATC4 0x10 345 #define _LATC5 0x20 346 #define _LATC6 0x40 347 #define _LATC7 0x80 348 349 //============================================================================== 350 351 352 //============================================================================== 353 // DDRA Bits 354 355 extern __at(0x0F92) __sfr DDRA; 356 357 typedef union 358 { 359 struct 360 { 361 unsigned TRISA0 : 1; 362 unsigned TRISA1 : 1; 363 unsigned TRISA2 : 1; 364 unsigned TRISA3 : 1; 365 unsigned TRISA4 : 1; 366 unsigned TRISA5 : 1; 367 unsigned TRISA6 : 1; 368 unsigned RA7 : 1; 369 }; 370 371 struct 372 { 373 unsigned RA0 : 1; 374 unsigned RA1 : 1; 375 unsigned RA2 : 1; 376 unsigned RA3 : 1; 377 unsigned RA4 : 1; 378 unsigned RA5 : 1; 379 unsigned RA6 : 1; 380 unsigned : 1; 381 }; 382 383 struct 384 { 385 unsigned TRISA : 7; 386 unsigned : 1; 387 }; 388 } __DDRAbits_t; 389 390 extern __at(0x0F92) volatile __DDRAbits_t DDRAbits; 391 392 #define _TRISA0 0x01 393 #define _RA0 0x01 394 #define _TRISA1 0x02 395 #define _RA1 0x02 396 #define _TRISA2 0x04 397 #define _RA2 0x04 398 #define _TRISA3 0x08 399 #define _RA3 0x08 400 #define _TRISA4 0x10 401 #define _RA4 0x10 402 #define _TRISA5 0x20 403 #define _RA5 0x20 404 #define _TRISA6 0x40 405 #define _RA6 0x40 406 #define _RA7 0x80 407 408 //============================================================================== 409 410 411 //============================================================================== 412 // TRISA Bits 413 414 extern __at(0x0F92) __sfr TRISA; 415 416 typedef union 417 { 418 struct 419 { 420 unsigned TRISA0 : 1; 421 unsigned TRISA1 : 1; 422 unsigned TRISA2 : 1; 423 unsigned TRISA3 : 1; 424 unsigned TRISA4 : 1; 425 unsigned TRISA5 : 1; 426 unsigned TRISA6 : 1; 427 unsigned RA7 : 1; 428 }; 429 430 struct 431 { 432 unsigned RA0 : 1; 433 unsigned RA1 : 1; 434 unsigned RA2 : 1; 435 unsigned RA3 : 1; 436 unsigned RA4 : 1; 437 unsigned RA5 : 1; 438 unsigned RA6 : 1; 439 unsigned : 1; 440 }; 441 442 struct 443 { 444 unsigned TRISA : 7; 445 unsigned : 1; 446 }; 447 } __TRISAbits_t; 448 449 extern __at(0x0F92) volatile __TRISAbits_t TRISAbits; 450 451 #define _TRISA_TRISA0 0x01 452 #define _TRISA_RA0 0x01 453 #define _TRISA_TRISA1 0x02 454 #define _TRISA_RA1 0x02 455 #define _TRISA_TRISA2 0x04 456 #define _TRISA_RA2 0x04 457 #define _TRISA_TRISA3 0x08 458 #define _TRISA_RA3 0x08 459 #define _TRISA_TRISA4 0x10 460 #define _TRISA_RA4 0x10 461 #define _TRISA_TRISA5 0x20 462 #define _TRISA_RA5 0x20 463 #define _TRISA_TRISA6 0x40 464 #define _TRISA_RA6 0x40 465 #define _TRISA_RA7 0x80 466 467 //============================================================================== 468 469 470 //============================================================================== 471 // DDRB Bits 472 473 extern __at(0x0F93) __sfr DDRB; 474 475 typedef union 476 { 477 struct 478 { 479 unsigned TRISB0 : 1; 480 unsigned TRISB1 : 1; 481 unsigned TRISB2 : 1; 482 unsigned TRISB3 : 1; 483 unsigned TRISB4 : 1; 484 unsigned TRISB5 : 1; 485 unsigned TRISB6 : 1; 486 unsigned TRISB7 : 1; 487 }; 488 489 struct 490 { 491 unsigned RB0 : 1; 492 unsigned RB1 : 1; 493 unsigned RB2 : 1; 494 unsigned RB3 : 1; 495 unsigned RB4 : 1; 496 unsigned RB5 : 1; 497 unsigned RB6 : 1; 498 unsigned RB7 : 1; 499 }; 500 } __DDRBbits_t; 501 502 extern __at(0x0F93) volatile __DDRBbits_t DDRBbits; 503 504 #define _TRISB0 0x01 505 #define _RB0 0x01 506 #define _TRISB1 0x02 507 #define _RB1 0x02 508 #define _TRISB2 0x04 509 #define _RB2 0x04 510 #define _TRISB3 0x08 511 #define _RB3 0x08 512 #define _TRISB4 0x10 513 #define _RB4 0x10 514 #define _TRISB5 0x20 515 #define _RB5 0x20 516 #define _TRISB6 0x40 517 #define _RB6 0x40 518 #define _TRISB7 0x80 519 #define _RB7 0x80 520 521 //============================================================================== 522 523 524 //============================================================================== 525 // TRISB Bits 526 527 extern __at(0x0F93) __sfr TRISB; 528 529 typedef union 530 { 531 struct 532 { 533 unsigned TRISB0 : 1; 534 unsigned TRISB1 : 1; 535 unsigned TRISB2 : 1; 536 unsigned TRISB3 : 1; 537 unsigned TRISB4 : 1; 538 unsigned TRISB5 : 1; 539 unsigned TRISB6 : 1; 540 unsigned TRISB7 : 1; 541 }; 542 543 struct 544 { 545 unsigned RB0 : 1; 546 unsigned RB1 : 1; 547 unsigned RB2 : 1; 548 unsigned RB3 : 1; 549 unsigned RB4 : 1; 550 unsigned RB5 : 1; 551 unsigned RB6 : 1; 552 unsigned RB7 : 1; 553 }; 554 } __TRISBbits_t; 555 556 extern __at(0x0F93) volatile __TRISBbits_t TRISBbits; 557 558 #define _TRISB_TRISB0 0x01 559 #define _TRISB_RB0 0x01 560 #define _TRISB_TRISB1 0x02 561 #define _TRISB_RB1 0x02 562 #define _TRISB_TRISB2 0x04 563 #define _TRISB_RB2 0x04 564 #define _TRISB_TRISB3 0x08 565 #define _TRISB_RB3 0x08 566 #define _TRISB_TRISB4 0x10 567 #define _TRISB_RB4 0x10 568 #define _TRISB_TRISB5 0x20 569 #define _TRISB_RB5 0x20 570 #define _TRISB_TRISB6 0x40 571 #define _TRISB_RB6 0x40 572 #define _TRISB_TRISB7 0x80 573 #define _TRISB_RB7 0x80 574 575 //============================================================================== 576 577 578 //============================================================================== 579 // DDRC Bits 580 581 extern __at(0x0F94) __sfr DDRC; 582 583 typedef union 584 { 585 struct 586 { 587 unsigned TRISC0 : 1; 588 unsigned RC1 : 1; 589 unsigned RC2 : 1; 590 unsigned TRISC3 : 1; 591 unsigned TRISC4 : 1; 592 unsigned TRISC5 : 1; 593 unsigned TRISC6 : 1; 594 unsigned TRISC7 : 1; 595 }; 596 597 struct 598 { 599 unsigned RC0 : 1; 600 unsigned : 1; 601 unsigned : 1; 602 unsigned RC3 : 1; 603 unsigned RC4 : 1; 604 unsigned RC5 : 1; 605 unsigned RC6 : 1; 606 unsigned RC7 : 1; 607 }; 608 } __DDRCbits_t; 609 610 extern __at(0x0F94) volatile __DDRCbits_t DDRCbits; 611 612 #define _TRISC0 0x01 613 #define _RC0 0x01 614 #define _RC1 0x02 615 #define _RC2 0x04 616 #define _TRISC3 0x08 617 #define _RC3 0x08 618 #define _TRISC4 0x10 619 #define _RC4 0x10 620 #define _TRISC5 0x20 621 #define _RC5 0x20 622 #define _TRISC6 0x40 623 #define _RC6 0x40 624 #define _TRISC7 0x80 625 #define _RC7 0x80 626 627 //============================================================================== 628 629 630 //============================================================================== 631 // TRISC Bits 632 633 extern __at(0x0F94) __sfr TRISC; 634 635 typedef union 636 { 637 struct 638 { 639 unsigned TRISC0 : 1; 640 unsigned RC1 : 1; 641 unsigned RC2 : 1; 642 unsigned TRISC3 : 1; 643 unsigned TRISC4 : 1; 644 unsigned TRISC5 : 1; 645 unsigned TRISC6 : 1; 646 unsigned TRISC7 : 1; 647 }; 648 649 struct 650 { 651 unsigned RC0 : 1; 652 unsigned : 1; 653 unsigned : 1; 654 unsigned RC3 : 1; 655 unsigned RC4 : 1; 656 unsigned RC5 : 1; 657 unsigned RC6 : 1; 658 unsigned RC7 : 1; 659 }; 660 } __TRISCbits_t; 661 662 extern __at(0x0F94) volatile __TRISCbits_t TRISCbits; 663 664 #define _TRISC_TRISC0 0x01 665 #define _TRISC_RC0 0x01 666 #define _TRISC_RC1 0x02 667 #define _TRISC_RC2 0x04 668 #define _TRISC_TRISC3 0x08 669 #define _TRISC_RC3 0x08 670 #define _TRISC_TRISC4 0x10 671 #define _TRISC_RC4 0x10 672 #define _TRISC_TRISC5 0x20 673 #define _TRISC_RC5 0x20 674 #define _TRISC_TRISC6 0x40 675 #define _TRISC_RC6 0x40 676 #define _TRISC_TRISC7 0x80 677 #define _TRISC_RC7 0x80 678 679 //============================================================================== 680 681 682 //============================================================================== 683 // PIE1 Bits 684 685 extern __at(0x0F9D) __sfr PIE1; 686 687 typedef struct 688 { 689 unsigned TMR1IE : 1; 690 unsigned TMR2IE : 1; 691 unsigned CCP1IE : 1; 692 unsigned SSPIE : 1; 693 unsigned TXIE : 1; 694 unsigned RCIE : 1; 695 unsigned ADIE : 1; 696 unsigned PSPIE : 1; 697 } __PIE1bits_t; 698 699 extern __at(0x0F9D) volatile __PIE1bits_t PIE1bits; 700 701 #define _TMR1IE 0x01 702 #define _TMR2IE 0x02 703 #define _CCP1IE 0x04 704 #define _SSPIE 0x08 705 #define _TXIE 0x10 706 #define _RCIE 0x20 707 #define _ADIE 0x40 708 #define _PSPIE 0x80 709 710 //============================================================================== 711 712 713 //============================================================================== 714 // PIR1 Bits 715 716 extern __at(0x0F9E) __sfr PIR1; 717 718 typedef struct 719 { 720 unsigned TMR1IF : 1; 721 unsigned TMR2IF : 1; 722 unsigned CCP1IF : 1; 723 unsigned SSPIF : 1; 724 unsigned TXIF : 1; 725 unsigned RCIF : 1; 726 unsigned ADIF : 1; 727 unsigned PSPIF : 1; 728 } __PIR1bits_t; 729 730 extern __at(0x0F9E) volatile __PIR1bits_t PIR1bits; 731 732 #define _TMR1IF 0x01 733 #define _TMR2IF 0x02 734 #define _CCP1IF 0x04 735 #define _SSPIF 0x08 736 #define _TXIF 0x10 737 #define _RCIF 0x20 738 #define _ADIF 0x40 739 #define _PSPIF 0x80 740 741 //============================================================================== 742 743 744 //============================================================================== 745 // IPR1 Bits 746 747 extern __at(0x0F9F) __sfr IPR1; 748 749 typedef struct 750 { 751 unsigned TMR1IP : 1; 752 unsigned TMR2IP : 1; 753 unsigned CCP1IP : 1; 754 unsigned SSPIP : 1; 755 unsigned TXIP : 1; 756 unsigned RCIP : 1; 757 unsigned ADIP : 1; 758 unsigned PSPIP : 1; 759 } __IPR1bits_t; 760 761 extern __at(0x0F9F) volatile __IPR1bits_t IPR1bits; 762 763 #define _TMR1IP 0x01 764 #define _TMR2IP 0x02 765 #define _CCP1IP 0x04 766 #define _SSPIP 0x08 767 #define _TXIP 0x10 768 #define _RCIP 0x20 769 #define _ADIP 0x40 770 #define _PSPIP 0x80 771 772 //============================================================================== 773 774 775 //============================================================================== 776 // PIE2 Bits 777 778 extern __at(0x0FA0) __sfr PIE2; 779 780 typedef struct 781 { 782 unsigned CCP2IE : 1; 783 unsigned TMR3IE : 1; 784 unsigned LVDIE : 1; 785 unsigned BCLIE : 1; 786 unsigned EEIE : 1; 787 unsigned : 1; 788 unsigned : 1; 789 unsigned : 1; 790 } __PIE2bits_t; 791 792 extern __at(0x0FA0) volatile __PIE2bits_t PIE2bits; 793 794 #define _CCP2IE 0x01 795 #define _TMR3IE 0x02 796 #define _LVDIE 0x04 797 #define _BCLIE 0x08 798 #define _EEIE 0x10 799 800 //============================================================================== 801 802 803 //============================================================================== 804 // PIR2 Bits 805 806 extern __at(0x0FA1) __sfr PIR2; 807 808 typedef struct 809 { 810 unsigned CCP2IF : 1; 811 unsigned TMR3IF : 1; 812 unsigned LVDIF : 1; 813 unsigned BCLIF : 1; 814 unsigned EEIF : 1; 815 unsigned : 1; 816 unsigned : 1; 817 unsigned : 1; 818 } __PIR2bits_t; 819 820 extern __at(0x0FA1) volatile __PIR2bits_t PIR2bits; 821 822 #define _CCP2IF 0x01 823 #define _TMR3IF 0x02 824 #define _LVDIF 0x04 825 #define _BCLIF 0x08 826 #define _EEIF 0x10 827 828 //============================================================================== 829 830 831 //============================================================================== 832 // IPR2 Bits 833 834 extern __at(0x0FA2) __sfr IPR2; 835 836 typedef struct 837 { 838 unsigned CCP2IP : 1; 839 unsigned TMR3IP : 1; 840 unsigned LVDIP : 1; 841 unsigned BCLIP : 1; 842 unsigned EEIP : 1; 843 unsigned : 1; 844 unsigned : 1; 845 unsigned : 1; 846 } __IPR2bits_t; 847 848 extern __at(0x0FA2) volatile __IPR2bits_t IPR2bits; 849 850 #define _CCP2IP 0x01 851 #define _TMR3IP 0x02 852 #define _LVDIP 0x04 853 #define _BCLIP 0x08 854 #define _EEIP 0x10 855 856 //============================================================================== 857 858 859 //============================================================================== 860 // EECON1 Bits 861 862 extern __at(0x0FA6) __sfr EECON1; 863 864 typedef struct 865 { 866 unsigned RD : 1; 867 unsigned WR : 1; 868 unsigned WREN : 1; 869 unsigned WRERR : 1; 870 unsigned FREE : 1; 871 unsigned : 1; 872 unsigned CFGS : 1; 873 unsigned EEPGD : 1; 874 } __EECON1bits_t; 875 876 extern __at(0x0FA6) volatile __EECON1bits_t EECON1bits; 877 878 #define _RD 0x01 879 #define _WR 0x02 880 #define _WREN 0x04 881 #define _WRERR 0x08 882 #define _FREE 0x10 883 #define _CFGS 0x40 884 #define _EEPGD 0x80 885 886 //============================================================================== 887 888 extern __at(0x0FA7) __sfr EECON2; 889 extern __at(0x0FA8) __sfr EEDATA; 890 extern __at(0x0FA9) __sfr EEADR; 891 892 //============================================================================== 893 // RCSTA Bits 894 895 extern __at(0x0FAB) __sfr RCSTA; 896 897 typedef struct 898 { 899 unsigned RX9D : 1; 900 unsigned OERR : 1; 901 unsigned FERR : 1; 902 unsigned ADDEN : 1; 903 unsigned CREN : 1; 904 unsigned SREN : 1; 905 unsigned RX9 : 1; 906 unsigned SPEN : 1; 907 } __RCSTAbits_t; 908 909 extern __at(0x0FAB) volatile __RCSTAbits_t RCSTAbits; 910 911 #define _RX9D 0x01 912 #define _OERR 0x02 913 #define _FERR 0x04 914 #define _ADDEN 0x08 915 #define _CREN 0x10 916 #define _SREN 0x20 917 #define _RX9 0x40 918 #define _SPEN 0x80 919 920 //============================================================================== 921 922 923 //============================================================================== 924 // TXSTA Bits 925 926 extern __at(0x0FAC) __sfr TXSTA; 927 928 typedef struct 929 { 930 unsigned TX9D : 1; 931 unsigned TRMT : 1; 932 unsigned BRGH : 1; 933 unsigned : 1; 934 unsigned SYNC : 1; 935 unsigned TXEN : 1; 936 unsigned TX9 : 1; 937 unsigned CSRC : 1; 938 } __TXSTAbits_t; 939 940 extern __at(0x0FAC) volatile __TXSTAbits_t TXSTAbits; 941 942 #define _TX9D 0x01 943 #define _TRMT 0x02 944 #define _BRGH 0x04 945 #define _SYNC 0x10 946 #define _TXEN 0x20 947 #define _TX9 0x40 948 #define _CSRC 0x80 949 950 //============================================================================== 951 952 extern __at(0x0FAD) __sfr TXREG; 953 extern __at(0x0FAE) __sfr RCREG; 954 extern __at(0x0FAF) __sfr SPBRG; 955 956 //============================================================================== 957 // T3CON Bits 958 959 extern __at(0x0FB1) __sfr T3CON; 960 961 typedef union 962 { 963 struct 964 { 965 unsigned TMR3ON : 1; 966 unsigned TMR3CS : 1; 967 unsigned NOT_T3SYNC : 1; 968 unsigned T3CCP1 : 1; 969 unsigned T3CKPS0 : 1; 970 unsigned T3CKPS1 : 1; 971 unsigned T3CCP2 : 1; 972 unsigned RD16 : 1; 973 }; 974 975 struct 976 { 977 unsigned : 1; 978 unsigned : 1; 979 unsigned T3SYNC : 1; 980 unsigned : 1; 981 unsigned : 1; 982 unsigned : 1; 983 unsigned : 1; 984 unsigned : 1; 985 }; 986 987 struct 988 { 989 unsigned : 4; 990 unsigned T3CKPS : 2; 991 unsigned : 2; 992 }; 993 } __T3CONbits_t; 994 995 extern __at(0x0FB1) volatile __T3CONbits_t T3CONbits; 996 997 #define _T3CON_TMR3ON 0x01 998 #define _T3CON_TMR3CS 0x02 999 #define _T3CON_NOT_T3SYNC 0x04 1000 #define _T3CON_T3SYNC 0x04 1001 #define _T3CON_T3CCP1 0x08 1002 #define _T3CON_T3CKPS0 0x10 1003 #define _T3CON_T3CKPS1 0x20 1004 #define _T3CON_T3CCP2 0x40 1005 #define _T3CON_RD16 0x80 1006 1007 //============================================================================== 1008 1009 extern __at(0x0FB2) __sfr TMR3; 1010 extern __at(0x0FB2) __sfr TMR3L; 1011 extern __at(0x0FB3) __sfr TMR3H; 1012 1013 //============================================================================== 1014 // CCP2CON Bits 1015 1016 extern __at(0x0FBA) __sfr CCP2CON; 1017 1018 typedef union 1019 { 1020 struct 1021 { 1022 unsigned CCP2M0 : 1; 1023 unsigned CCP2M1 : 1; 1024 unsigned CCP2M2 : 1; 1025 unsigned CCP2M3 : 1; 1026 unsigned CCP2Y : 1; 1027 unsigned CCP2X : 1; 1028 unsigned : 1; 1029 unsigned : 1; 1030 }; 1031 1032 struct 1033 { 1034 unsigned : 1; 1035 unsigned : 1; 1036 unsigned : 1; 1037 unsigned : 1; 1038 unsigned DC2B0 : 1; 1039 unsigned DC2B1 : 1; 1040 unsigned : 1; 1041 unsigned : 1; 1042 }; 1043 1044 struct 1045 { 1046 unsigned : 1; 1047 unsigned : 1; 1048 unsigned : 1; 1049 unsigned : 1; 1050 unsigned : 1; 1051 unsigned DCCPX : 1; 1052 unsigned : 1; 1053 unsigned : 1; 1054 }; 1055 1056 struct 1057 { 1058 unsigned CCP2M : 4; 1059 unsigned : 4; 1060 }; 1061 1062 struct 1063 { 1064 unsigned : 4; 1065 unsigned DC2B : 2; 1066 unsigned : 2; 1067 }; 1068 } __CCP2CONbits_t; 1069 1070 extern __at(0x0FBA) volatile __CCP2CONbits_t CCP2CONbits; 1071 1072 #define _CCP2M0 0x01 1073 #define _CCP2M1 0x02 1074 #define _CCP2M2 0x04 1075 #define _CCP2M3 0x08 1076 #define _CCP2Y 0x10 1077 #define _DC2B0 0x10 1078 #define _CCP2X 0x20 1079 #define _DC2B1 0x20 1080 #define _DCCPX 0x20 1081 1082 //============================================================================== 1083 1084 extern __at(0x0FBB) __sfr CCPR2; 1085 extern __at(0x0FBB) __sfr CCPR2L; 1086 extern __at(0x0FBC) __sfr CCPR2H; 1087 1088 //============================================================================== 1089 // CCP1CON Bits 1090 1091 extern __at(0x0FBD) __sfr CCP1CON; 1092 1093 typedef union 1094 { 1095 struct 1096 { 1097 unsigned CCP1M0 : 1; 1098 unsigned CCP1M1 : 1; 1099 unsigned CCP1M2 : 1; 1100 unsigned CCP1M3 : 1; 1101 unsigned CCP1Y : 1; 1102 unsigned CCP1X : 1; 1103 unsigned : 1; 1104 unsigned : 1; 1105 }; 1106 1107 struct 1108 { 1109 unsigned : 1; 1110 unsigned : 1; 1111 unsigned : 1; 1112 unsigned : 1; 1113 unsigned DC1B0 : 1; 1114 unsigned DC1B1 : 1; 1115 unsigned : 1; 1116 unsigned : 1; 1117 }; 1118 1119 struct 1120 { 1121 unsigned CCP1M : 4; 1122 unsigned : 4; 1123 }; 1124 1125 struct 1126 { 1127 unsigned : 4; 1128 unsigned DC1B : 2; 1129 unsigned : 2; 1130 }; 1131 } __CCP1CONbits_t; 1132 1133 extern __at(0x0FBD) volatile __CCP1CONbits_t CCP1CONbits; 1134 1135 #define _CCP1M0 0x01 1136 #define _CCP1M1 0x02 1137 #define _CCP1M2 0x04 1138 #define _CCP1M3 0x08 1139 #define _CCP1Y 0x10 1140 #define _DC1B0 0x10 1141 #define _CCP1X 0x20 1142 #define _DC1B1 0x20 1143 1144 //============================================================================== 1145 1146 extern __at(0x0FBE) __sfr CCPR1; 1147 extern __at(0x0FBE) __sfr CCPR1L; 1148 extern __at(0x0FBF) __sfr CCPR1H; 1149 1150 //============================================================================== 1151 // ADCON1 Bits 1152 1153 extern __at(0x0FC1) __sfr ADCON1; 1154 1155 typedef union 1156 { 1157 struct 1158 { 1159 unsigned PCFG0 : 1; 1160 unsigned PCFG1 : 1; 1161 unsigned PCFG2 : 1; 1162 unsigned PCFG3 : 1; 1163 unsigned : 1; 1164 unsigned : 1; 1165 unsigned ADCS2 : 1; 1166 unsigned ADFM : 1; 1167 }; 1168 1169 struct 1170 { 1171 unsigned PCFG : 4; 1172 unsigned : 4; 1173 }; 1174 } __ADCON1bits_t; 1175 1176 extern __at(0x0FC1) volatile __ADCON1bits_t ADCON1bits; 1177 1178 #define _PCFG0 0x01 1179 #define _PCFG1 0x02 1180 #define _PCFG2 0x04 1181 #define _PCFG3 0x08 1182 #define _ADCS2 0x40 1183 #define _ADFM 0x80 1184 1185 //============================================================================== 1186 1187 1188 //============================================================================== 1189 // ADCON0 Bits 1190 1191 extern __at(0x0FC2) __sfr ADCON0; 1192 1193 typedef union 1194 { 1195 struct 1196 { 1197 unsigned ADON : 1; 1198 unsigned : 1; 1199 unsigned GO_NOT_DONE : 1; 1200 unsigned CHS0 : 1; 1201 unsigned CHS1 : 1; 1202 unsigned CHS2 : 1; 1203 unsigned ADCS0 : 1; 1204 unsigned ADCS1 : 1; 1205 }; 1206 1207 struct 1208 { 1209 unsigned : 1; 1210 unsigned : 1; 1211 unsigned GO : 1; 1212 unsigned : 1; 1213 unsigned : 1; 1214 unsigned : 1; 1215 unsigned : 1; 1216 unsigned : 1; 1217 }; 1218 1219 struct 1220 { 1221 unsigned : 1; 1222 unsigned : 1; 1223 unsigned NOT_DONE : 1; 1224 unsigned : 1; 1225 unsigned : 1; 1226 unsigned : 1; 1227 unsigned : 1; 1228 unsigned : 1; 1229 }; 1230 1231 struct 1232 { 1233 unsigned : 1; 1234 unsigned : 1; 1235 unsigned DONE : 1; 1236 unsigned : 1; 1237 unsigned : 1; 1238 unsigned : 1; 1239 unsigned : 1; 1240 unsigned : 1; 1241 }; 1242 1243 struct 1244 { 1245 unsigned : 1; 1246 unsigned : 1; 1247 unsigned GO_DONE : 1; 1248 unsigned : 1; 1249 unsigned : 1; 1250 unsigned : 1; 1251 unsigned : 1; 1252 unsigned : 1; 1253 }; 1254 1255 struct 1256 { 1257 unsigned : 3; 1258 unsigned CHS : 3; 1259 unsigned : 2; 1260 }; 1261 1262 struct 1263 { 1264 unsigned : 6; 1265 unsigned ADCS : 2; 1266 }; 1267 } __ADCON0bits_t; 1268 1269 extern __at(0x0FC2) volatile __ADCON0bits_t ADCON0bits; 1270 1271 #define _ADON 0x01 1272 #define _GO_NOT_DONE 0x04 1273 #define _GO 0x04 1274 #define _NOT_DONE 0x04 1275 #define _DONE 0x04 1276 #define _GO_DONE 0x04 1277 #define _CHS0 0x08 1278 #define _CHS1 0x10 1279 #define _CHS2 0x20 1280 #define _ADCS0 0x40 1281 #define _ADCS1 0x80 1282 1283 //============================================================================== 1284 1285 extern __at(0x0FC3) __sfr ADRES; 1286 extern __at(0x0FC3) __sfr ADRESL; 1287 extern __at(0x0FC4) __sfr ADRESH; 1288 1289 //============================================================================== 1290 // SSPCON2 Bits 1291 1292 extern __at(0x0FC5) __sfr SSPCON2; 1293 1294 typedef struct 1295 { 1296 unsigned SEN : 1; 1297 unsigned RSEN : 1; 1298 unsigned PEN : 1; 1299 unsigned RCEN : 1; 1300 unsigned ACKEN : 1; 1301 unsigned ACKDT : 1; 1302 unsigned ACKSTAT : 1; 1303 unsigned GCEN : 1; 1304 } __SSPCON2bits_t; 1305 1306 extern __at(0x0FC5) volatile __SSPCON2bits_t SSPCON2bits; 1307 1308 #define _SEN 0x01 1309 #define _RSEN 0x02 1310 #define _PEN 0x04 1311 #define _RCEN 0x08 1312 #define _ACKEN 0x10 1313 #define _ACKDT 0x20 1314 #define _ACKSTAT 0x40 1315 #define _GCEN 0x80 1316 1317 //============================================================================== 1318 1319 1320 //============================================================================== 1321 // SSPCON1 Bits 1322 1323 extern __at(0x0FC6) __sfr SSPCON1; 1324 1325 typedef union 1326 { 1327 struct 1328 { 1329 unsigned SSPM0 : 1; 1330 unsigned SSPM1 : 1; 1331 unsigned SSPM2 : 1; 1332 unsigned SSPM3 : 1; 1333 unsigned CKP : 1; 1334 unsigned SSPEN : 1; 1335 unsigned SSPOV : 1; 1336 unsigned WCOL : 1; 1337 }; 1338 1339 struct 1340 { 1341 unsigned SSPM : 4; 1342 unsigned : 4; 1343 }; 1344 } __SSPCON1bits_t; 1345 1346 extern __at(0x0FC6) volatile __SSPCON1bits_t SSPCON1bits; 1347 1348 #define _SSPM0 0x01 1349 #define _SSPM1 0x02 1350 #define _SSPM2 0x04 1351 #define _SSPM3 0x08 1352 #define _CKP 0x10 1353 #define _SSPEN 0x20 1354 #define _SSPOV 0x40 1355 #define _WCOL 0x80 1356 1357 //============================================================================== 1358 1359 1360 //============================================================================== 1361 // SSPSTAT Bits 1362 1363 extern __at(0x0FC7) __sfr SSPSTAT; 1364 1365 typedef union 1366 { 1367 struct 1368 { 1369 unsigned BF : 1; 1370 unsigned UA : 1; 1371 unsigned R_NOT_W : 1; 1372 unsigned S : 1; 1373 unsigned P : 1; 1374 unsigned D_NOT_A : 1; 1375 unsigned CKE : 1; 1376 unsigned SMP : 1; 1377 }; 1378 1379 struct 1380 { 1381 unsigned : 1; 1382 unsigned : 1; 1383 unsigned R_W : 1; 1384 unsigned : 1; 1385 unsigned : 1; 1386 unsigned D_A : 1; 1387 unsigned : 1; 1388 unsigned : 1; 1389 }; 1390 } __SSPSTATbits_t; 1391 1392 extern __at(0x0FC7) volatile __SSPSTATbits_t SSPSTATbits; 1393 1394 #define _BF 0x01 1395 #define _UA 0x02 1396 #define _R_NOT_W 0x04 1397 #define _R_W 0x04 1398 #define _S 0x08 1399 #define _P 0x10 1400 #define _D_NOT_A 0x20 1401 #define _D_A 0x20 1402 #define _CKE 0x40 1403 #define _SMP 0x80 1404 1405 //============================================================================== 1406 1407 extern __at(0x0FC8) __sfr SSPADD; 1408 extern __at(0x0FC9) __sfr SSPBUF; 1409 1410 //============================================================================== 1411 // T2CON Bits 1412 1413 extern __at(0x0FCA) __sfr T2CON; 1414 1415 typedef union 1416 { 1417 struct 1418 { 1419 unsigned T2CKPS0 : 1; 1420 unsigned T2CKPS1 : 1; 1421 unsigned TMR2ON : 1; 1422 unsigned TOUTPS0 : 1; 1423 unsigned TOUTPS1 : 1; 1424 unsigned TOUTPS2 : 1; 1425 unsigned TOUTPS3 : 1; 1426 unsigned : 1; 1427 }; 1428 1429 struct 1430 { 1431 unsigned T2CKPS : 2; 1432 unsigned : 6; 1433 }; 1434 1435 struct 1436 { 1437 unsigned : 3; 1438 unsigned TOUTPS : 4; 1439 unsigned : 1; 1440 }; 1441 } __T2CONbits_t; 1442 1443 extern __at(0x0FCA) volatile __T2CONbits_t T2CONbits; 1444 1445 #define _T2CKPS0 0x01 1446 #define _T2CKPS1 0x02 1447 #define _TMR2ON 0x04 1448 #define _TOUTPS0 0x08 1449 #define _TOUTPS1 0x10 1450 #define _TOUTPS2 0x20 1451 #define _TOUTPS3 0x40 1452 1453 //============================================================================== 1454 1455 extern __at(0x0FCB) __sfr PR2; 1456 extern __at(0x0FCC) __sfr TMR2; 1457 1458 //============================================================================== 1459 // T1CON Bits 1460 1461 extern __at(0x0FCD) __sfr T1CON; 1462 1463 typedef union 1464 { 1465 struct 1466 { 1467 unsigned TMR1ON : 1; 1468 unsigned TMR1CS : 1; 1469 unsigned NOT_T1SYNC : 1; 1470 unsigned T1OSCEN : 1; 1471 unsigned T1CKPS0 : 1; 1472 unsigned T1CKPS1 : 1; 1473 unsigned : 1; 1474 unsigned RD16 : 1; 1475 }; 1476 1477 struct 1478 { 1479 unsigned : 1; 1480 unsigned : 1; 1481 unsigned T1SYNC : 1; 1482 unsigned : 1; 1483 unsigned : 1; 1484 unsigned : 1; 1485 unsigned : 1; 1486 unsigned T1RD16 : 1; 1487 }; 1488 1489 struct 1490 { 1491 unsigned : 4; 1492 unsigned T1CKPS : 2; 1493 unsigned : 2; 1494 }; 1495 } __T1CONbits_t; 1496 1497 extern __at(0x0FCD) volatile __T1CONbits_t T1CONbits; 1498 1499 #define _TMR1ON 0x01 1500 #define _TMR1CS 0x02 1501 #define _NOT_T1SYNC 0x04 1502 #define _T1SYNC 0x04 1503 #define _T1OSCEN 0x08 1504 #define _T1CKPS0 0x10 1505 #define _T1CKPS1 0x20 1506 #define _RD16 0x80 1507 #define _T1RD16 0x80 1508 1509 //============================================================================== 1510 1511 extern __at(0x0FCE) __sfr TMR1; 1512 extern __at(0x0FCE) __sfr TMR1L; 1513 extern __at(0x0FCF) __sfr TMR1H; 1514 1515 //============================================================================== 1516 // RCON Bits 1517 1518 extern __at(0x0FD0) __sfr RCON; 1519 1520 typedef union 1521 { 1522 struct 1523 { 1524 unsigned NOT_BOR : 1; 1525 unsigned NOT_POR : 1; 1526 unsigned NOT_PD : 1; 1527 unsigned NOT_TO : 1; 1528 unsigned NOT_RI : 1; 1529 unsigned : 1; 1530 unsigned : 1; 1531 unsigned IPEN : 1; 1532 }; 1533 1534 struct 1535 { 1536 unsigned BOR : 1; 1537 unsigned POR : 1; 1538 unsigned PD : 1; 1539 unsigned TO : 1; 1540 unsigned RI : 1; 1541 unsigned : 1; 1542 unsigned : 1; 1543 unsigned NOT_IPEN : 1; 1544 }; 1545 } __RCONbits_t; 1546 1547 extern __at(0x0FD0) volatile __RCONbits_t RCONbits; 1548 1549 #define _NOT_BOR 0x01 1550 #define _BOR 0x01 1551 #define _NOT_POR 0x02 1552 #define _POR 0x02 1553 #define _NOT_PD 0x04 1554 #define _PD 0x04 1555 #define _NOT_TO 0x08 1556 #define _TO 0x08 1557 #define _NOT_RI 0x10 1558 #define _RI 0x10 1559 #define _IPEN 0x80 1560 #define _NOT_IPEN 0x80 1561 1562 //============================================================================== 1563 1564 1565 //============================================================================== 1566 // WDTCON Bits 1567 1568 extern __at(0x0FD1) __sfr WDTCON; 1569 1570 typedef union 1571 { 1572 struct 1573 { 1574 unsigned SWDTEN : 1; 1575 unsigned : 1; 1576 unsigned : 1; 1577 unsigned : 1; 1578 unsigned : 1; 1579 unsigned : 1; 1580 unsigned : 1; 1581 unsigned : 1; 1582 }; 1583 1584 struct 1585 { 1586 unsigned SWDTE : 1; 1587 unsigned : 1; 1588 unsigned : 1; 1589 unsigned : 1; 1590 unsigned : 1; 1591 unsigned : 1; 1592 unsigned : 1; 1593 unsigned : 1; 1594 }; 1595 } __WDTCONbits_t; 1596 1597 extern __at(0x0FD1) volatile __WDTCONbits_t WDTCONbits; 1598 1599 #define _SWDTEN 0x01 1600 #define _SWDTE 0x01 1601 1602 //============================================================================== 1603 1604 1605 //============================================================================== 1606 // LVDCON Bits 1607 1608 extern __at(0x0FD2) __sfr LVDCON; 1609 1610 typedef union 1611 { 1612 struct 1613 { 1614 unsigned LVDL0 : 1; 1615 unsigned LVDL1 : 1; 1616 unsigned LVDL2 : 1; 1617 unsigned LVDL3 : 1; 1618 unsigned LVDEN : 1; 1619 unsigned IRVST : 1; 1620 unsigned : 1; 1621 unsigned : 1; 1622 }; 1623 1624 struct 1625 { 1626 unsigned LVDL : 4; 1627 unsigned : 4; 1628 }; 1629 } __LVDCONbits_t; 1630 1631 extern __at(0x0FD2) volatile __LVDCONbits_t LVDCONbits; 1632 1633 #define _LVDL0 0x01 1634 #define _LVDL1 0x02 1635 #define _LVDL2 0x04 1636 #define _LVDL3 0x08 1637 #define _LVDEN 0x10 1638 #define _IRVST 0x20 1639 1640 //============================================================================== 1641 1642 1643 //============================================================================== 1644 // OSCCON Bits 1645 1646 extern __at(0x0FD3) __sfr OSCCON; 1647 1648 typedef union 1649 { 1650 struct 1651 { 1652 unsigned RESERVED : 1; 1653 unsigned : 1; 1654 unsigned : 1; 1655 unsigned : 1; 1656 unsigned : 1; 1657 unsigned : 1; 1658 unsigned : 1; 1659 unsigned : 1; 1660 }; 1661 1662 struct 1663 { 1664 unsigned SCS : 1; 1665 unsigned : 1; 1666 unsigned : 1; 1667 unsigned : 1; 1668 unsigned : 1; 1669 unsigned : 1; 1670 unsigned : 1; 1671 unsigned : 1; 1672 }; 1673 } __OSCCONbits_t; 1674 1675 extern __at(0x0FD3) volatile __OSCCONbits_t OSCCONbits; 1676 1677 #define _RESERVED 0x01 1678 #define _SCS 0x01 1679 1680 //============================================================================== 1681 1682 1683 //============================================================================== 1684 // T0CON Bits 1685 1686 extern __at(0x0FD5) __sfr T0CON; 1687 1688 typedef union 1689 { 1690 struct 1691 { 1692 unsigned T0PS0 : 1; 1693 unsigned T0PS1 : 1; 1694 unsigned T0PS2 : 1; 1695 unsigned PSA : 1; 1696 unsigned T0SE : 1; 1697 unsigned T0CS : 1; 1698 unsigned T08BIT : 1; 1699 unsigned TMR0ON : 1; 1700 }; 1701 1702 struct 1703 { 1704 unsigned T0PS : 3; 1705 unsigned : 5; 1706 }; 1707 } __T0CONbits_t; 1708 1709 extern __at(0x0FD5) volatile __T0CONbits_t T0CONbits; 1710 1711 #define _T0PS0 0x01 1712 #define _T0PS1 0x02 1713 #define _T0PS2 0x04 1714 #define _PSA 0x08 1715 #define _T0SE 0x10 1716 #define _T0CS 0x20 1717 #define _T08BIT 0x40 1718 #define _TMR0ON 0x80 1719 1720 //============================================================================== 1721 1722 extern __at(0x0FD6) __sfr TMR0; 1723 extern __at(0x0FD6) __sfr TMR0L; 1724 extern __at(0x0FD7) __sfr TMR0H; 1725 1726 //============================================================================== 1727 // STATUS Bits 1728 1729 extern __at(0x0FD8) __sfr STATUS; 1730 1731 typedef struct 1732 { 1733 unsigned C : 1; 1734 unsigned DC : 1; 1735 unsigned Z : 1; 1736 unsigned OV : 1; 1737 unsigned N : 1; 1738 unsigned : 1; 1739 unsigned : 1; 1740 unsigned : 1; 1741 } __STATUSbits_t; 1742 1743 extern __at(0x0FD8) volatile __STATUSbits_t STATUSbits; 1744 1745 #define _C 0x01 1746 #define _DC 0x02 1747 #define _Z 0x04 1748 #define _OV 0x08 1749 #define _N 0x10 1750 1751 //============================================================================== 1752 1753 extern __at(0x0FD9) __sfr FSR2L; 1754 extern __at(0x0FDA) __sfr FSR2H; 1755 extern __at(0x0FDB) __sfr PLUSW2; 1756 extern __at(0x0FDC) __sfr PREINC2; 1757 extern __at(0x0FDD) __sfr POSTDEC2; 1758 extern __at(0x0FDE) __sfr POSTINC2; 1759 extern __at(0x0FDF) __sfr INDF2; 1760 extern __at(0x0FE0) __sfr BSR; 1761 extern __at(0x0FE1) __sfr FSR1L; 1762 extern __at(0x0FE2) __sfr FSR1H; 1763 extern __at(0x0FE3) __sfr PLUSW1; 1764 extern __at(0x0FE4) __sfr PREINC1; 1765 extern __at(0x0FE5) __sfr POSTDEC1; 1766 extern __at(0x0FE6) __sfr POSTINC1; 1767 extern __at(0x0FE7) __sfr INDF1; 1768 extern __at(0x0FE8) __sfr WREG; 1769 extern __at(0x0FE9) __sfr FSR0L; 1770 extern __at(0x0FEA) __sfr FSR0H; 1771 extern __at(0x0FEB) __sfr PLUSW0; 1772 extern __at(0x0FEC) __sfr PREINC0; 1773 extern __at(0x0FED) __sfr POSTDEC0; 1774 extern __at(0x0FEE) __sfr POSTINC0; 1775 extern __at(0x0FEF) __sfr INDF0; 1776 1777 //============================================================================== 1778 // INTCON3 Bits 1779 1780 extern __at(0x0FF0) __sfr INTCON3; 1781 1782 typedef union 1783 { 1784 struct 1785 { 1786 unsigned INT1IF : 1; 1787 unsigned INT2IF : 1; 1788 unsigned : 1; 1789 unsigned INT1IE : 1; 1790 unsigned INT2IE : 1; 1791 unsigned : 1; 1792 unsigned INT1IP : 1; 1793 unsigned INT2IP : 1; 1794 }; 1795 1796 struct 1797 { 1798 unsigned INT1F : 1; 1799 unsigned INT2F : 1; 1800 unsigned : 1; 1801 unsigned INT1E : 1; 1802 unsigned INT2E : 1; 1803 unsigned : 1; 1804 unsigned INT1P : 1; 1805 unsigned INT2P : 1; 1806 }; 1807 } __INTCON3bits_t; 1808 1809 extern __at(0x0FF0) volatile __INTCON3bits_t INTCON3bits; 1810 1811 #define _INT1IF 0x01 1812 #define _INT1F 0x01 1813 #define _INT2IF 0x02 1814 #define _INT2F 0x02 1815 #define _INT1IE 0x08 1816 #define _INT1E 0x08 1817 #define _INT2IE 0x10 1818 #define _INT2E 0x10 1819 #define _INT1IP 0x40 1820 #define _INT1P 0x40 1821 #define _INT2IP 0x80 1822 #define _INT2P 0x80 1823 1824 //============================================================================== 1825 1826 1827 //============================================================================== 1828 // INTCON2 Bits 1829 1830 extern __at(0x0FF1) __sfr INTCON2; 1831 1832 typedef union 1833 { 1834 struct 1835 { 1836 unsigned RBIP : 1; 1837 unsigned INT3P : 1; 1838 unsigned TMR0IP : 1; 1839 unsigned INTEDG3 : 1; 1840 unsigned INTEDG2 : 1; 1841 unsigned INTEDG1 : 1; 1842 unsigned INTEDG0 : 1; 1843 unsigned NOT_RBPU : 1; 1844 }; 1845 1846 struct 1847 { 1848 unsigned : 1; 1849 unsigned : 1; 1850 unsigned T0IP : 1; 1851 unsigned : 1; 1852 unsigned : 1; 1853 unsigned : 1; 1854 unsigned : 1; 1855 unsigned RBPU : 1; 1856 }; 1857 } __INTCON2bits_t; 1858 1859 extern __at(0x0FF1) volatile __INTCON2bits_t INTCON2bits; 1860 1861 #define _RBIP 0x01 1862 #define _INT3P 0x02 1863 #define _TMR0IP 0x04 1864 #define _T0IP 0x04 1865 #define _INTEDG3 0x08 1866 #define _INTEDG2 0x10 1867 #define _INTEDG1 0x20 1868 #define _INTEDG0 0x40 1869 #define _NOT_RBPU 0x80 1870 #define _RBPU 0x80 1871 1872 //============================================================================== 1873 1874 1875 //============================================================================== 1876 // INTCON Bits 1877 1878 extern __at(0x0FF2) __sfr INTCON; 1879 1880 typedef union 1881 { 1882 struct 1883 { 1884 unsigned RBIF : 1; 1885 unsigned INT0IF : 1; 1886 unsigned TMR0IF : 1; 1887 unsigned RBIE : 1; 1888 unsigned INT0IE : 1; 1889 unsigned TMR0IE : 1; 1890 unsigned PEIE_GIEL : 1; 1891 unsigned GIE_GIEH : 1; 1892 }; 1893 1894 struct 1895 { 1896 unsigned : 1; 1897 unsigned INT0F : 1; 1898 unsigned T0IF : 1; 1899 unsigned : 1; 1900 unsigned INT0E : 1; 1901 unsigned T0IE : 1; 1902 unsigned PEIE : 1; 1903 unsigned GIE : 1; 1904 }; 1905 1906 struct 1907 { 1908 unsigned : 1; 1909 unsigned : 1; 1910 unsigned : 1; 1911 unsigned : 1; 1912 unsigned : 1; 1913 unsigned : 1; 1914 unsigned GIEL : 1; 1915 unsigned GIEH : 1; 1916 }; 1917 } __INTCONbits_t; 1918 1919 extern __at(0x0FF2) volatile __INTCONbits_t INTCONbits; 1920 1921 #define _RBIF 0x01 1922 #define _INT0IF 0x02 1923 #define _INT0F 0x02 1924 #define _TMR0IF 0x04 1925 #define _T0IF 0x04 1926 #define _RBIE 0x08 1927 #define _INT0IE 0x10 1928 #define _INT0E 0x10 1929 #define _TMR0IE 0x20 1930 #define _T0IE 0x20 1931 #define _PEIE_GIEL 0x40 1932 #define _PEIE 0x40 1933 #define _GIEL 0x40 1934 #define _GIE_GIEH 0x80 1935 #define _GIE 0x80 1936 #define _GIEH 0x80 1937 1938 //============================================================================== 1939 1940 extern __at(0x0FF3) __sfr PROD; 1941 extern __at(0x0FF3) __sfr PRODL; 1942 extern __at(0x0FF4) __sfr PRODH; 1943 extern __at(0x0FF5) __sfr TABLAT; 1944 extern __at(0x0FF6) __sfr TBLPTR; 1945 extern __at(0x0FF6) __sfr TBLPTRL; 1946 extern __at(0x0FF7) __sfr TBLPTRH; 1947 extern __at(0x0FF8) __sfr TBLPTRU; 1948 extern __at(0x0FF9) __sfr PC; 1949 extern __at(0x0FF9) __sfr PCL; 1950 extern __at(0x0FFA) __sfr PCLATH; 1951 extern __at(0x0FFB) __sfr PCLATU; 1952 1953 //============================================================================== 1954 // STKPTR Bits 1955 1956 extern __at(0x0FFC) __sfr STKPTR; 1957 1958 typedef union 1959 { 1960 struct 1961 { 1962 unsigned STKPTR0 : 1; 1963 unsigned STKPTR1 : 1; 1964 unsigned STKPTR2 : 1; 1965 unsigned STKPTR3 : 1; 1966 unsigned STKPTR4 : 1; 1967 unsigned : 1; 1968 unsigned STKUNF : 1; 1969 unsigned STKFUL : 1; 1970 }; 1971 1972 struct 1973 { 1974 unsigned STKPTR : 5; 1975 unsigned : 3; 1976 }; 1977 } __STKPTRbits_t; 1978 1979 extern __at(0x0FFC) volatile __STKPTRbits_t STKPTRbits; 1980 1981 #define _STKPTR0 0x01 1982 #define _STKPTR1 0x02 1983 #define _STKPTR2 0x04 1984 #define _STKPTR3 0x08 1985 #define _STKPTR4 0x10 1986 #define _STKUNF 0x40 1987 #define _STKFUL 0x80 1988 1989 //============================================================================== 1990 1991 extern __at(0x0FFD) __sfr TOS; 1992 extern __at(0x0FFD) __sfr TOSL; 1993 extern __at(0x0FFE) __sfr TOSH; 1994 extern __at(0x0FFF) __sfr TOSU; 1995 1996 //============================================================================== 1997 // 1998 // Configuration Bits 1999 // 2000 //============================================================================== 2001 2002 #define __CONFIG1H 0x300001 2003 #define __CONFIG2L 0x300002 2004 #define __CONFIG2H 0x300003 2005 #define __CONFIG4L 0x300006 2006 #define __CONFIG5L 0x300008 2007 #define __CONFIG5H 0x300009 2008 #define __CONFIG6L 0x30000A 2009 #define __CONFIG6H 0x30000B 2010 #define __CONFIG7L 0x30000C 2011 #define __CONFIG7H 0x30000D 2012 2013 //----------------------------- CONFIG1H Options ------------------------------- 2014 2015 #define _OSC_HS_1H 0xFA // HS oscillator. 2016 #define _OSC_EC_1H 0xFC // EC oscillator w/ OSC2 configured as divide-by-4 clock output. 2017 #define _OSC_ECIO_1H 0xFD // EC oscillator w/ OSC2 configured as RA6. 2018 #define _OSC_HSPLL_1H 0xFE // HS oscillator with PLL enabled; clock frequency = (4 x FOSC). 2019 2020 //----------------------------- CONFIG2L Options ------------------------------- 2021 2022 #define _PWRT_ON_2L 0xFE // PWRT enabled. 2023 #define _PWRT_OFF_2L 0xFF // PWRT disabled. 2024 #define _BOR_OFF_2L 0xFD // Brown-out Reset disabled. 2025 #define _BOR_ON_2L 0xFF // Brown-out Reset enabled. 2026 #define _BORV_45_2L 0xF3 // VBOR set to 4.5V. 2027 #define _BORV_42_2L 0xF7 // VBOR set to 4.2V. 2028 #define _BORV_27_2L 0xFB // VBOR set to 2.7V. 2029 #define _BORV_25_2L 0xFF // VBOR set to 2.5V. 2030 2031 //----------------------------- CONFIG2H Options ------------------------------- 2032 2033 #define _WDT_OFF_2H 0xFE // WDT disabled (control is placed on the SWDTEN bit). 2034 #define _WDT_ON_2H 0xFF // WDT enabled. 2035 #define _WDTPS_1_2H 0xF1 // 1:1. 2036 #define _WDTPS_2_2H 0xF3 // 1:2. 2037 #define _WDTPS_4_2H 0xF5 // 1:4. 2038 #define _WDTPS_8_2H 0xF7 // 1:8. 2039 #define _WDTPS_16_2H 0xF9 // 1:16. 2040 #define _WDTPS_32_2H 0xFB // 1:32. 2041 #define _WDTPS_64_2H 0xFD // 1:64. 2042 #define _WDTPS_128_2H 0xFF // 1:128. 2043 2044 //----------------------------- CONFIG4L Options ------------------------------- 2045 2046 #define _STVR_OFF_4L 0xFE // Stack Full/Underflow will not cause RESET. 2047 #define _STVR_ON_4L 0xFF // Stack Full/Underflow will cause RESET. 2048 #define _LVP_OFF_4L 0xFB // Low Voltage ICSP disabled. 2049 #define _LVP_ON_4L 0xFF // Low Voltage ICSP enabled. 2050 #define _DEBUG_ON_4L 0x7F // Background Debugger enabled. RB6 and RB7 are dedicated to In-Circuit Debug. 2051 #define _DEBUG_OFF_4L 0xFF // Background Debugger disabled. RB6 and RB7 configured as general purpose I/O pins. 2052 2053 //----------------------------- CONFIG5L Options ------------------------------- 2054 2055 #define _CP0_ON_5L 0xFE // Block 0 (000200-001FFFh) code protected. 2056 #define _CP0_OFF_5L 0xFF // Block 0 (000200-001FFFh) not code protected. 2057 #define _CP1_ON_5L 0xFD // Block 1 (002000-003FFFh) code protected. 2058 #define _CP1_OFF_5L 0xFF // Block 1 (002000-003FFFh) not code protected. 2059 #define _CP2_ON_5L 0xFB // Block 2 (004000-005FFFh) code protected. 2060 #define _CP2_OFF_5L 0xFF // Block 2 (004000-005FFFh) not code protected. 2061 2062 //----------------------------- CONFIG5H Options ------------------------------- 2063 2064 #define _CPB_ON_5H 0xBF // Boot block (000000-0001FFh) code protected. 2065 #define _CPB_OFF_5H 0xFF // Boot block (000000-0001FFh) not code protected. 2066 #define _CPD_ON_5H 0x7F // Data EEPROM code protected. 2067 #define _CPD_OFF_5H 0xFF // Data EEPROM not code protected. 2068 2069 //----------------------------- CONFIG6L Options ------------------------------- 2070 2071 #define _WRT0_ON_6L 0xFE // Block 0 (000200h-001FFFh) write protected. 2072 #define _WRT0_OFF_6L 0xFF // Block 0 (000200h-001FFFh) not write protected. 2073 #define _WRT1_ON_6L 0xFD // Block 1 (002000-003FFFh) write protected. 2074 #define _WRT1_OFF_6L 0xFF // Block 1 (002000-003FFFh) not write protected. 2075 #define _WRT2_ON_6L 0xFB // Block 2 (004000-005FFFh) write protected. 2076 #define _WRT2_OFF_6L 0xFF // Block 2 (004000-005FFFh) not write protected. 2077 2078 //----------------------------- CONFIG6H Options ------------------------------- 2079 2080 #define _WRTC_ON_6H 0xDF // Configuration registers (300000-3000FFh) write protected. 2081 #define _WRTC_OFF_6H 0xFF // Configuration registers (300000-3000FFh) not write protected. 2082 #define _WRTB_ON_6H 0xBF // Boot block (000000-0001FFh) write protected. 2083 #define _WRTB_OFF_6H 0xFF // Boot block (000000-0001FFh) not write protected. 2084 #define _WRTD_ON_6H 0x7F // Data EEPROM write protected. 2085 #define _WRTD_OFF_6H 0xFF // Data EEPROM not write protected. 2086 2087 //----------------------------- CONFIG7L Options ------------------------------- 2088 2089 #define _EBTR0_ON_7L 0xFE // Block 0 (000200h-001FFFh) protected from Table Reads executed in other blocks. 2090 #define _EBTR0_OFF_7L 0xFF // Block 0 (000200h-001FFFh) not protected from Table Reads executed in other blocks. 2091 #define _EBTR1_ON_7L 0xFD // Block 1 (002000-003FFFh) protected from Table Reads executed in other blocks. 2092 #define _EBTR1_OFF_7L 0xFF // Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks. 2093 #define _EBTR2_ON_7L 0xFB // Block 2 (004000-005FFFh) protected from Table Reads executed in other blocks. 2094 #define _EBTR2_OFF_7L 0xFF // Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks. 2095 2096 //----------------------------- CONFIG7H Options ------------------------------- 2097 2098 #define _EBTRB_ON_7H 0xBF // Boot block (000000-0001FFh) protected from Table Reads executed in other blocks. 2099 #define _EBTRB_OFF_7H 0xFF // Boot block (000000-0001FFh) not protected from Table Reads executed in other blocks. 2100 2101 //============================================================================== 2102 2103 #define __DEVID1 0x3FFFFE 2104 #define __DEVID2 0x3FFFFF 2105 2106 #define __IDLOC0 0x200000 2107 #define __IDLOC1 0x200001 2108 #define __IDLOC2 0x200002 2109 #define __IDLOC3 0x200003 2110 #define __IDLOC4 0x200004 2111 #define __IDLOC5 0x200005 2112 #define __IDLOC6 0x200006 2113 #define __IDLOC7 0x200007 2114 2115 #endif // #ifndef __PIC18F2539_H__ 2116