2 * This declarations of the PIC16C433 MCU.
4 * This file is part of the GNU PIC library for SDCC, originally
5 * created by Molnar Karoly <molnarkaroly@users.sf.net> 2016.
7 * This file is generated automatically by the cinc2h.pl, 2016-04-13 17:23:02 UTC.
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.
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.
22 * See http://sdcc.sourceforge.net/ for the latest information on sdcc.
25 #ifndef __PIC16C433_H__
26 #define __PIC16C433_H__
28 //==============================================================================
32 //==============================================================================
34 #ifndef NO_ADDR_DEFINES
36 #define INDF_ADDR 0x0000
37 #define TMR0_ADDR 0x0001
38 #define PCL_ADDR 0x0002
39 #define STATUS_ADDR 0x0003
40 #define FSR_ADDR 0x0004
41 #define GPIO_ADDR 0x0005
42 #define PCLATH_ADDR 0x000A
43 #define INTCON_ADDR 0x000B
44 #define PIR1_ADDR 0x000C
45 #define ADRES_ADDR 0x001E
46 #define ADCON0_ADDR 0x001F
47 #define OPTION_REG_ADDR 0x0081
48 #define TRISIO_ADDR 0x0085
49 #define PIE1_ADDR 0x008C
50 #define PCON_ADDR 0x008E
51 #define OSCCAL_ADDR 0x008F
52 #define ADCON1_ADDR 0x009F
54 #endif // #ifndef NO_ADDR_DEFINES
56 //==============================================================================
58 // Register Definitions
60 //==============================================================================
63 //==============================================================================
73 //==============================================================================
75 extern __at(0x0000) __sfr INDF
;
76 extern __at(0x0001) __sfr TMR0
;
77 extern __at(0x0002) __sfr PCL
;
79 //==============================================================================
82 extern __at(0x0003) __sfr STATUS
;
118 extern __at(0x0003) volatile __STATUSbits_t STATUSbits
;
120 #define _STATUS_C 0x01
121 #define _STATUS_DC 0x02
122 #define _STATUS_Z 0x04
123 #define _STATUS_NOT_PD 0x08
124 #define _STATUS_NOT_TO 0x10
125 #define _STATUS_RP0 0x20
126 #define _STATUS_RP1 0x40
127 #define _STATUS_LINRX 0x40
128 #define _STATUS_IRP 0x80
129 #define _STATUS_LINTX 0x80
131 //==============================================================================
133 extern __at(0x0004) __sfr FSR
;
135 //==============================================================================
138 extern __at(0x0005) __sfr GPIO
;
161 extern __at(0x0005) volatile __GPIObits_t GPIObits
;
172 //==============================================================================
174 extern __at(0x000A) __sfr PCLATH
;
176 //==============================================================================
179 extern __at(0x000B) __sfr INTCON
;
208 extern __at(0x000B) volatile __INTCONbits_t INTCONbits
;
221 //==============================================================================
224 //==============================================================================
227 extern __at(0x000C) __sfr PIR1
;
241 extern __at(0x000C) volatile __PIR1bits_t PIR1bits
;
245 //==============================================================================
247 extern __at(0x001E) __sfr ADRES
;
249 //==============================================================================
252 extern __at(0x001F) __sfr ADCON0
;
260 unsigned GO_NOT_DONE
: 1;
284 unsigned NOT_DONE
: 1;
296 unsigned GO_DONE
: 1;
318 extern __at(0x001F) volatile __ADCON0bits_t ADCON0bits
;
321 #define _GO_NOT_DONE 0x04
323 #define _NOT_DONE 0x04
324 #define _GO_DONE 0x04
330 //==============================================================================
333 //==============================================================================
336 extern __at(0x0081) __sfr OPTION_REG
;
349 unsigned NOT_GPPU
: 1;
357 } __OPTION_REGbits_t
;
359 extern __at(0x0081) volatile __OPTION_REGbits_t OPTION_REGbits
;
368 #define _NOT_GPPU 0x80
370 //==============================================================================
373 //==============================================================================
376 extern __at(0x0085) __sfr TRISIO
;
399 extern __at(0x0085) volatile __TRISIObits_t TRISIObits
;
401 #define _TRISIO_TRIS0 0x01
402 #define _TRISIO_TRIS1 0x02
403 #define _TRISIO_TRIS2 0x04
404 #define _TRISIO_TRIS3 0x08
405 #define _TRISIO_TRIS4 0x10
406 #define _TRISIO_TRIS5 0x20
408 //==============================================================================
411 //==============================================================================
414 extern __at(0x008C) __sfr PIE1
;
428 extern __at(0x008C) volatile __PIE1bits_t PIE1bits
;
432 //==============================================================================
435 //==============================================================================
438 extern __at(0x008E) __sfr PCON
;
443 unsigned NOT_POR
: 1;
452 extern __at(0x008E) volatile __PCONbits_t PCONbits
;
454 #define _NOT_POR 0x02
456 //==============================================================================
459 //==============================================================================
462 extern __at(0x008F) __sfr OSCCAL
;
485 extern __at(0x008F) volatile __OSCCALbits_t OSCCALbits
;
494 //==============================================================================
497 //==============================================================================
500 extern __at(0x009F) __sfr ADCON1
;
523 extern __at(0x009F) volatile __ADCON1bits_t ADCON1bits
;
529 //==============================================================================
532 //==============================================================================
534 // Configuration Bits
536 //==============================================================================
538 #define _CONFIG1 0x2007
540 //----------------------------- CONFIG1 Options -------------------------------
542 #define _FOSC_LP 0x3FF8 // LP oscillator.
543 #define _LP_OSC 0x3FF8 // LP oscillator.
544 #define _FOSC_XT 0x3FF9 // XT oscillator.
545 #define _XT_OSC 0x3FF9 // XT oscillator.
546 #define _FOSC_HS 0x3FFA // HS oscillator.
547 #define _HS_OSC 0x3FFA // HS oscillator.
548 #define _FOSC_EXTCLK 0x3FFB // EC I/O.
549 #define _EXTCLK_OSC 0x3FFB // EC I/O.
550 #define _FOSC_INTRCIO 0x3FFC // INTRC, OSC2 is I/O.
551 #define _INTRC_OSC_NOCLKOUT 0x3FFC // INTRC, OSC2 is I/O.
552 #define _INTRC_OSC 0x3FFC // INTRC, OSC2 is I/O.
553 #define _FOSC_INTRCCLK 0x3FFD // INTRC, clockout on OSC2.
554 #define _INTRC_OSC_CLKOUT 0x3FFD // INTRC, clockout on OSC2.
555 #define _FOSC_EXTRCIO 0x3FFE // EXTRC, OSC2 is I/O.
556 #define _EXTRC_OSC_NOCLKOUT 0x3FFE // EXTRC, OSC2 is I/O.
557 #define _EXTRC_OSC 0x3FFE // EXTRC, OSC2 is I/O.
558 #define _FOSC_EXTRCCLK 0x3FFF // EXTRC, clockout on OSC2.
559 #define _EXTRC_OSC_CLKOUT 0x3FFF // EXTRC, clockout on OSC2.
560 #define _WDTE_OFF 0x3FF7 // WDT disabled.
561 #define _WDT_OFF 0x3FF7 // WDT disabled.
562 #define _WDTE_ON 0x3FFF // WDT enabled.
563 #define _WDT_ON 0x3FFF // WDT enabled.
564 #define _PWRTE_ON 0x3FEF // PWRT enabled.
565 #define _PWRTE_OFF 0x3FFF // PWRT disabled.
566 #define _CP_ALL 0x009F // All memory is code protected.
567 #define _CP_75 0x15BF // 0200h-07FEh code protected.
568 #define _CP_50 0x2ADF // 0400h-07FEh code protected.
569 #define _CP_OFF 0x3FFF // Code protection off.
570 #define _MCLRE_OFF 0x3F7F // Internal.
571 #define _MCLRE_ON 0x3FFF // External.
573 //==============================================================================
575 #define _IDLOC0 0x2000
576 #define _IDLOC1 0x2001
577 #define _IDLOC2 0x2002
578 #define _IDLOC3 0x2003
580 //==============================================================================
582 #ifndef NO_BIT_DEFINES
584 #define ADON ADCON0bits.ADON // bit 0
585 #define GO_NOT_DONE ADCON0bits.GO_NOT_DONE // bit 2, shadows bit in ADCON0bits
586 #define GO ADCON0bits.GO // bit 2, shadows bit in ADCON0bits
587 #define NOT_DONE ADCON0bits.NOT_DONE // bit 2, shadows bit in ADCON0bits
588 #define GO_DONE ADCON0bits.GO_DONE // bit 2, shadows bit in ADCON0bits
589 #define CHS0 ADCON0bits.CHS0 // bit 3
590 #define CHS1 ADCON0bits.CHS1 // bit 4
591 #define ADCS0 ADCON0bits.ADCS0 // bit 6
592 #define ADCS1 ADCON0bits.ADCS1 // bit 7
594 #define PCFG0 ADCON1bits.PCFG0 // bit 0
595 #define PCFG1 ADCON1bits.PCFG1 // bit 1
596 #define PCFG2 ADCON1bits.PCFG2 // bit 2
598 #define GP0 GPIObits.GP0 // bit 0
599 #define GP1 GPIObits.GP1 // bit 1
600 #define GP2 GPIObits.GP2 // bit 2
601 #define GP3 GPIObits.GP3 // bit 3
602 #define GP4 GPIObits.GP4 // bit 4
603 #define GP5 GPIObits.GP5 // bit 5
604 #define LINRX GPIObits.LINRX // bit 6
605 #define LINTX GPIObits.LINTX // bit 7
607 #define GPIF INTCONbits.GPIF // bit 0
608 #define INTF INTCONbits.INTF // bit 1
609 #define T0IF INTCONbits.T0IF // bit 2, shadows bit in INTCONbits
610 #define TMR0IF INTCONbits.TMR0IF // bit 2, shadows bit in INTCONbits
611 #define GPIE INTCONbits.GPIE // bit 3
612 #define INTE INTCONbits.INTE // bit 4
613 #define T0IE INTCONbits.T0IE // bit 5, shadows bit in INTCONbits
614 #define TMR0IE INTCONbits.TMR0IE // bit 5, shadows bit in INTCONbits
615 #define PEIE INTCONbits.PEIE // bit 6
616 #define GIE INTCONbits.GIE // bit 7
618 #define PS0 OPTION_REGbits.PS0 // bit 0
619 #define PS1 OPTION_REGbits.PS1 // bit 1
620 #define PS2 OPTION_REGbits.PS2 // bit 2
621 #define PSA OPTION_REGbits.PSA // bit 3
622 #define T0SE OPTION_REGbits.T0SE // bit 4
623 #define T0CS OPTION_REGbits.T0CS // bit 5
624 #define INTEDG OPTION_REGbits.INTEDG // bit 6
625 #define NOT_GPPU OPTION_REGbits.NOT_GPPU // bit 7
627 #define CALSLW OSCCALbits.CALSLW // bit 2
628 #define CALFST OSCCALbits.CALFST // bit 3
629 #define CAL0 OSCCALbits.CAL0 // bit 4
630 #define CAL1 OSCCALbits.CAL1 // bit 5
631 #define CAL2 OSCCALbits.CAL2 // bit 6
632 #define CAL3 OSCCALbits.CAL3 // bit 7
634 #define NOT_POR PCONbits.NOT_POR // bit 1
636 #define ADIE PIE1bits.ADIE // bit 6
638 #define ADIF PIR1bits.ADIF // bit 6
640 #define TRIS0 TRISbits.TRIS0 // bit 0
641 #define TRIS1 TRISbits.TRIS1 // bit 1
642 #define TRIS2 TRISbits.TRIS2 // bit 2
643 #define TRIS3 TRISbits.TRIS3 // bit 3
644 #define TRIS4 TRISbits.TRIS4 // bit 4
645 #define TRIS5 TRISbits.TRIS5 // bit 5
647 #endif // #ifndef NO_BIT_DEFINES
649 #endif // #ifndef __PIC16C433_H__