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