Subversion Repositories svnkaklik

Rev

Go to most recent revision | Details | Last modification | View Log

Rev Author Line No. Line
162 kaklik 1
//////// Header file for the PIC16F88
2
#device PIC16F88
3
#nolist
4
//////// Program memory: 4096x14  Data RAM: 368  Stack: 8
5
//////// I/O: 16   Analog Pins: 7
6
//////// Data EEPROM: 256
7
//////// C Scratch area: 77   ID Location: 2000
8
// Fuses:
9
// Oscilator: LP         - oscilator LP
10
//            XT         - oscilator XT
11
//            HS         - oscilator HS
12
//            EC_IO      - externi vstup, RA6/CLKO je IO port
13
//            INTRC      - RC oscilator,  RA6/CLKO je CLKO, RA7/CLKI je IO port port,
14
//            INTRC_IO   - RC oscilator,  RA6 i RA7 je IO port
15
//            RC         - ext RC, RA6/CLKO je CLKO
16
//            RC_IO      - ext RC, RA6 je IO port
17
// Watch:     NOWDT      - neni watchog
18
//            WDT        - je watchdog
19
// PUT:       NOPUT      - neni power up timer
20
//            PUT        - je power up timer
21
// MCLR:      MCLR       - RA5/MCLR je MCLR
22
//            NOMCLR     - RA5/MCLR je IO port
23
// BOR:       BROWNOUT   - BOR povolen
24
//            NOBROWNOUT - BOR zakazan
25
// LVP:       LVP        - RB3/PGM je PGM
26
//            NOLVP      - RB3/PGM je IO port
27
// CPD:       CPD        - je ochrana EEPROM
28
//            NOCPD      - neni ochrana EEPROM
29
// WRT        WRT        - zakaz zapisu do pameti programu
30
//            NOWRT      - povolen zapis do pameti programu
31
// DEBUG:     DEBUG      - RB6 a RB7 jsou ICD port
32
//            NODEBUG    - RB6 a RB7 jsou IO port
33
// CCPMX:     CCPB0      - CCP/PWM na RB0
34
//            CCPB3      - CCP/PWM na RB3
35
// CP:        PROTECT    - pamet programu je chranena
36
//            NOPROTECT  - pamet programu neni chranena
37
//
38
 
39
////////////////////////////////////////////////////////////////// I/O
40
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
41
//                         PORT_B_PULLUPS(), INPUT(),
42
//                         OUTPUT_LOW(), OUTPUT_HIGH(),
43
//                         OUTPUT_FLOAT(), OUTPUT_BIT()
44
// Constants used to identify pins in the above are:
45
 
46
 
47
 
48
#define PIN_A0  40
49
#define PIN_A1  41
50
#define PIN_A2  42
51
#define PIN_A3  43
52
#define PIN_A4  44
53
#define PIN_A5  45
54
#define PIN_A6  46
55
#define PIN_A7  47
56
 
57
#define PIN_B0  48
58
#define PIN_B1  49
59
#define PIN_B2  50
60
#define PIN_B3  51
61
#define PIN_B4  52
62
#define PIN_B5  53
63
#define PIN_B6  54
64
#define PIN_B7  55
65
 
66
////////////////////////////////////////////////////////////////// Useful defines
67
#define FALSE 0
68
#define TRUE 1
69
 
70
#define BYTE int
71
#define BOOLEAN short int
72
 
73
#define getc getch
74
#define fgetc getch
75
#define getchar getch
76
#define putc putchar
77
#define fputc putchar
78
#define fgets gets
79
#define fputs puts
80
 
81
////////////////////////////////////////////////////////////////// Control
82
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
83
// Constants returned from RESTART_CAUSE() are:
84
#define WDT_FROM_SLEEP  0
85
#define WDT_TIMEOUT     8
86
#define MCLR_FROM_SLEEP 16
87
#define NORMAL_POWER_UP 24
88
 
89
 
90
////////////////////////////////////////////////////////////////// Timer 0
91
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER0(),
92
//                              SET_TIMER0() or SET_RTCC(),
93
//                              GET_TIMER0() or GET_RTCC()
94
// Constants used for SETUP_TIMER0() are:
95
#define RTCC_INTERNAL   0
96
#define RTCC_EXT_L_TO_H 32
97
#define RTCC_EXT_H_TO_L 48
98
 
99
#define RTCC_DIV_1      8
100
#define RTCC_DIV_2      0
101
#define RTCC_DIV_4      1
102
#define RTCC_DIV_8      2
103
#define RTCC_DIV_16     3
104
#define RTCC_DIV_32     4
105
#define RTCC_DIV_64     5
106
#define RTCC_DIV_128    6
107
#define RTCC_DIV_256    7
108
 
109
 
110
#define RTCC_8_BIT      0
111
 
112
// Constants used for SETUP_COUNTERS() are the above
113
// constants for the 1st param and the following for
114
// the 2nd param:
115
 
116
////////////////////////////////////////////////////////////////// WDT
117
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
118
//                            RESTART_WDT()
119
//
120
#define WDT_18MS        8
121
#define WDT_36MS        9
122
#define WDT_72MS       10
123
#define WDT_144MS      11
124
#define WDT_288MS      12
125
#define WDT_576MS      13
126
#define WDT_1152MS     14
127
#define WDT_2304MS     15
128
 
129
////////////////////////////////////////////////////////////////// Timer 1
130
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
131
// Constants used for SETUP_TIMER_1() are:
132
//      (or (via |) together constants from each group)
133
#define T1_DISABLED         0
134
#define T1_INTERNAL         0x85
135
#define T1_EXTERNAL         0x87
136
#define T1_EXTERNAL_SYNC    0x83
137
 
138
#define T1_CLK_OUT          8
139
 
140
#define T1_DIV_BY_1         0
141
#define T1_DIV_BY_2         0x10
142
#define T1_DIV_BY_4         0x20
143
#define T1_DIV_BY_8         0x30
144
 
145
////////////////////////////////////////////////////////////////// Timer 2
146
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
147
// Constants used for SETUP_TIMER_2() are:
148
#define T2_DISABLED         0
149
#define T2_DIV_BY_1         4
150
#define T2_DIV_BY_4         5
151
#define T2_DIV_BY_16        6
152
 
153
////////////////////////////////////////////////////////////////// CCP
154
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
155
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
156
// Constants used for SETUP_CCPx() are:
157
#define CCP_OFF                         0
158
#define CCP_CAPTURE_FE                  4
159
#define CCP_CAPTURE_RE                  5
160
#define CCP_CAPTURE_DIV_4               6
161
#define CCP_CAPTURE_DIV_16              7
162
#define CCP_COMPARE_SET_ON_MATCH        8
163
#define CCP_COMPARE_CLR_ON_MATCH        9
164
#define CCP_COMPARE_INT                 0xA
165
#define CCP_COMPARE_RESET_TIMER         0xB
166
#define CCP_PWM                         0xC
167
#define CCP_PWM_PLUS_1                  0x1c
168
#define CCP_PWM_PLUS_2                  0x2c
169
#define CCP_PWM_PLUS_3                  0x3c
170
long CCP_1;
171
#byte   CCP_1    =                      0x15
172
#byte   CCP_1_LOW=                      0x15
173
#byte   CCP_1_HIGH=                     0x16
174
////////////////////////////////////////////////////////////////// COMP
175
// Comparator Variables: C1OUT, C2OUT
176
// Constants used in setup_comparators() are:
177
#define A0_A3_A1_A2  4
178
#define A0_A2_A1_A2  3
179
#define NC_NC_A1_A2  5
180
#define NC_NC_NC_NC  7
181
#define A0_VR_A1_VR  2
182
#define A3_VR_A2_VR  10
183
#define A0_A2_A1_A2_OUT_ON_A3_A4 6
184
#define A3_A2_A1_A2  9
185
 
186
//#bit C1OUT = 0x1f.6
187
//#bit C2OUT = 0x1f.7
188
 
189
////////////////////////////////////////////////////////////////// VREF
190
// Constants used in setup_vref() are:
191
#define VREF_LOW  0xa0
192
#define VREF_HIGH 0x80
193
#define VREF_A2   0x40
194
 
195
////////////////////////////////////////////////////////////////// INT
196
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
197
//                      EXT_INT_EDGE()
198
//
199
// Constants used in EXT_INT_EDGE() are:
200
#define L_TO_H              0x40
201
#define H_TO_L                 0
202
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
203
#define GLOBAL                    0x0BC0
204
#define INT_RTCC                  0x0B20
205
#define INT_RB                    0x0B08
206
#define INT_EXT                   0x0B10
207
#define INT_TBE                   0x8C10
208
#define INT_RDA                   0x8C20
209
#define INT_TIMER1                0x8C01
210
#define INT_TIMER2                0x8C02
211
#define INT_CCP1                  0x8C04
212
#define INT_SSP                   0x8C08
213
#define INT_COMP                  0x8D40
214
#define INT_EEPROM                0x8D10
215
#define INT_TIMER0                0x0B20
216
#list