//////// Header file for the PIC16F88#device PIC16F88#nolist//////// Program memory: 4096x14 Data RAM: 368 Stack: 8//////// I/O: 16 Analog Pins: 7//////// Data EEPROM: 256//////// C Scratch area: 77 ID Location: 2000// Fuses:// Oscilator: LP - oscilator LP// XT - oscilator XT// HS - oscilator HS// EC_IO - externi vstup, RA6/CLKO je IO port// INTRC - RC oscilator, RA6/CLKO je CLKO, RA7/CLKI je IO port port,// INTRC_IO - RC oscilator, RA6 i RA7 je IO port// RC - ext RC, RA6/CLKO je CLKO// RC_IO - ext RC, RA6 je IO port// Watch: NOWDT - neni watchog// WDT - je watchdog// PUT: NOPUT - neni power up timer// PUT - je power up timer// MCLR: MCLR - RA5/MCLR je MCLR// NOMCLR - RA5/MCLR je IO port// BOR: BROWNOUT - BOR povolen// NOBROWNOUT - BOR zakazan// LVP: LVP - RB3/PGM je PGM// NOLVP - RB3/PGM je IO port// CPD: CPD - je ochrana EEPROM// NOCPD - neni ochrana EEPROM// WRT WRT - zakaz zapisu do pameti programu// NOWRT - povolen zapis do pameti programu// DEBUG: DEBUG - RB6 a RB7 jsou ICD port// NODEBUG - RB6 a RB7 jsou IO port// CCPMX: CCPB0 - CCP/PWM na RB0// CCPB3 - CCP/PWM na RB3// CP: PROTECT - pamet programu je chranena// NOPROTECT - pamet programu neni chranena//////////////////////////////////////////////////////////////////// I/O// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),// PORT_B_PULLUPS(), INPUT(),// OUTPUT_LOW(), OUTPUT_HIGH(),// OUTPUT_FLOAT(), OUTPUT_BIT()// Constants used to identify pins in the above are:#define PIN_A0 40#define PIN_A1 41#define PIN_A2 42#define PIN_A3 43#define PIN_A4 44#define PIN_A5 45#define PIN_A6 46#define PIN_A7 47#define PIN_B0 48#define PIN_B1 49#define PIN_B2 50#define PIN_B3 51#define PIN_B4 52#define PIN_B5 53#define PIN_B6 54#define PIN_B7 55////////////////////////////////////////////////////////////////// Useful defines#define FALSE 0#define TRUE 1#define BYTE int#define BOOLEAN short int#define getc getch#define fgetc getch#define getchar getch#define putc putchar#define fputc putchar#define fgets gets#define fputs puts////////////////////////////////////////////////////////////////// Control// Control Functions: RESET_CPU(), SLEEP(), RESTART_CAUSE()// Constants returned from RESTART_CAUSE() are:#define WDT_FROM_SLEEP 0#define WDT_TIMEOUT 8#define MCLR_FROM_SLEEP 16#define NORMAL_POWER_UP 24////////////////////////////////////////////////////////////////// Timer 0// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER0(),// SET_TIMER0() or SET_RTCC(),// GET_TIMER0() or GET_RTCC()// Constants used for SETUP_TIMER0() are:#define RTCC_INTERNAL 0#define RTCC_EXT_L_TO_H 32#define RTCC_EXT_H_TO_L 48#define RTCC_DIV_1 8#define RTCC_DIV_2 0#define RTCC_DIV_4 1#define RTCC_DIV_8 2#define RTCC_DIV_16 3#define RTCC_DIV_32 4#define RTCC_DIV_64 5#define RTCC_DIV_128 6#define RTCC_DIV_256 7#define RTCC_8_BIT 0// Constants used for SETUP_COUNTERS() are the above// constants for the 1st param and the following for// the 2nd param:////////////////////////////////////////////////////////////////// WDT// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)// RESTART_WDT()//#define WDT_18MS 8#define WDT_36MS 9#define WDT_72MS 10#define WDT_144MS 11#define WDT_288MS 12#define WDT_576MS 13#define WDT_1152MS 14#define WDT_2304MS 15////////////////////////////////////////////////////////////////// Timer 1// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1// Constants used for SETUP_TIMER_1() are:// (or (via |) together constants from each group)#define T1_DISABLED 0#define T1_INTERNAL 0x85#define T1_EXTERNAL 0x87#define T1_EXTERNAL_SYNC 0x83#define T1_CLK_OUT 8#define T1_DIV_BY_1 0#define T1_DIV_BY_2 0x10#define T1_DIV_BY_4 0x20#define T1_DIV_BY_8 0x30////////////////////////////////////////////////////////////////// Timer 2// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2// Constants used for SETUP_TIMER_2() are:#define T2_DISABLED 0#define T2_DIV_BY_1 4#define T2_DIV_BY_4 5#define T2_DIV_BY_16 6////////////////////////////////////////////////////////////////// CCP// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH// Constants used for SETUP_CCPx() are:#define CCP_OFF 0#define CCP_CAPTURE_FE 4#define CCP_CAPTURE_RE 5#define CCP_CAPTURE_DIV_4 6#define CCP_CAPTURE_DIV_16 7#define CCP_COMPARE_SET_ON_MATCH 8#define CCP_COMPARE_CLR_ON_MATCH 9#define CCP_COMPARE_INT 0xA#define CCP_COMPARE_RESET_TIMER 0xB#define CCP_PWM 0xC#define CCP_PWM_PLUS_1 0x1c#define CCP_PWM_PLUS_2 0x2c#define CCP_PWM_PLUS_3 0x3clong CCP_1;#byte CCP_1 = 0x15#byte CCP_1_LOW= 0x15#byte CCP_1_HIGH= 0x16////////////////////////////////////////////////////////////////// COMP// Comparator Variables: C1OUT, C2OUT// Constants used in setup_comparators() are:#define A0_A3_A1_A2 4#define A0_A2_A1_A2 3#define NC_NC_A1_A2 5#define NC_NC_NC_NC 7#define A0_VR_A1_VR 2#define A3_VR_A2_VR 10#define A0_A2_A1_A2_OUT_ON_A3_A4 6#define A3_A2_A1_A2 9#bit C1OUT = 0x1f.6#bit C2OUT = 0x1f.7////////////////////////////////////////////////////////////////// VREF// Constants used in setup_vref() are:#define VREF_LOW 0xa0#define VREF_HIGH 0x80#define VREF_A2 0x40////////////////////////////////////////////////////////////////// INT// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),// EXT_INT_EDGE()//// Constants used in EXT_INT_EDGE() are:#define L_TO_H 0x40#define H_TO_L 0// Constants used in ENABLE/DISABLE_INTERRUPTS() are:#define GLOBAL 0x0BC0#define INT_RTCC 0x0B20#define INT_RB 0x0B08#define INT_EXT 0x0B10#define INT_TBE 0x8C10#define INT_RDA 0x8C20#define INT_TIMER1 0x8C01#define INT_TIMER2 0x8C02#define INT_CCP1 0x8C04#define INT_SSP 0x8C08#define INT_COMP 0x8D40#define INT_EEPROM 0x8D10#define INT_TIMER0 0x0B20// Definice reistru pro pristup k EEPROM#define EEDATA 0x010C#define EEADR 0x010D#define EEDATAH 0x010E#define EEADRH 0x010F#define EECON1 0x018C#define EECON1_RD 0#define EECON1_WR 1#define EECON1_WREN 2#define EECON1_WRERR 3#define EECON1_FREE 4#define EECON1_EEPGD 7#define EECON2 0x018D#define PIR2 0x000D#define PIR2_EEIF 4#define PIE2 0x008D#define PIR2_EEIE 4// Definice pro AD prevodnik#define ADCON0 0x1F#define ADCON1 0x9F#define ADRESH 0x1E#define ADRESL 0x9E#define ANSEL 0x9B// Definice pro casovac a PWM#define PR2 0x92#define T2CON 0x12#define CCP1CON 0x17#define CCPR1L 0x15// Definice pro komparator#define CMCON 0x9C// Definice pro preruseni#define INTCON 0x0B#bit GIE = INTCON.7#bit PEIE = INTCON.6#bit TMR0IE = INTCON.5#bit INTE = INTCON.4#bit RBIE = INTCON.3#bit TMR0IF = INTCON.2#bit INTF = INTCON.1#bit RBIF = INTCON.0#define PIE1 0x8C#bit ADIE = PIE1.6#bit RCIE = PIE1.5#bit TXIE = PIE1.4#bit SSPIE = PIE1.3#bit CCP1IE = PIE1.2#bit TMR2IE = PIE1.1#bit TMR1IE = PIE1.0// Porty#define PORTA 0x05#define PORTB 0x06#define TRISA 0x85#define TRISB 0x86#list