1        LIST
2
3;==========================================================================
4; Build date : Oct 21 2015
5;  MPASM PIC16F874 processor include
6;
7;  (c) Copyright 1999-2015 Microchip Technology, All rights reserved
8;==========================================================================
9
10        NOLIST
11
12;==========================================================================
13;  This header file defines configurations, registers, and other useful
14;  bits of information for the PIC16F874 microcontroller.  These names
15;  are taken to match the data sheets as closely as possible.
16;
17;  Note that the processor must be selected before this file is included.
18;  The processor may be selected the following ways:
19;
20;       1. Command line switch:
21;               C:\MPASM MYFILE.ASM /PIC16F874
22;       2. LIST directive in the source file
23;               LIST   P=PIC16F874
24;       3. Processor Type entry in the MPASM full-screen interface
25;       4. Setting the processor in the MPLAB Project Dialog
26;==========================================================================
27
28;==========================================================================
29;
30;       Verify Processor
31;
32;==========================================================================
33        IFNDEF __16F874
34           MESSG "Processor-header file mismatch.  Verify selected processor."
35        ENDIF
36
37
38
39;==========================================================================
40;
41;       Register Definitions
42;
43;==========================================================================
44
45W                EQU  H'0000'
46F                EQU  H'0001'
47
48;----- Register Files -----------------------------------------------------
49
50;-----Bank0------------------
51INDF             EQU  H'0000'
52TMR0             EQU  H'0001'
53PCL              EQU  H'0002'
54STATUS           EQU  H'0003'
55FSR              EQU  H'0004'
56PORTA            EQU  H'0005'
57PORTB            EQU  H'0006'
58PORTC            EQU  H'0007'
59PORTD            EQU  H'0008'
60PORTE            EQU  H'0009'
61PCLATH           EQU  H'000A'
62INTCON           EQU  H'000B'
63PIR1             EQU  H'000C'
64PIR2             EQU  H'000D'
65TMR1             EQU  H'000E'
66TMR1L            EQU  H'000E'
67TMR1H            EQU  H'000F'
68T1CON            EQU  H'0010'
69TMR2             EQU  H'0011'
70T2CON            EQU  H'0012'
71SSPBUF           EQU  H'0013'
72SSPCON           EQU  H'0014'
73CCPR1            EQU  H'0015'
74CCPR1L           EQU  H'0015'
75CCPR1H           EQU  H'0016'
76CCP1CON          EQU  H'0017'
77RCSTA            EQU  H'0018'
78TXREG            EQU  H'0019'
79RCREG            EQU  H'001A'
80CCPR2            EQU  H'001B'
81CCPR2L           EQU  H'001B'
82CCPR2H           EQU  H'001C'
83CCP2CON          EQU  H'001D'
84ADRESH           EQU  H'001E'
85ADCON0           EQU  H'001F'
86
87;-----Bank1------------------
88OPTION_REG       EQU  H'0081'
89TRISA            EQU  H'0085'
90TRISB            EQU  H'0086'
91TRISC            EQU  H'0087'
92TRISD            EQU  H'0088'
93TRISE            EQU  H'0089'
94PIE1             EQU  H'008C'
95PIE2             EQU  H'008D'
96PCON             EQU  H'008E'
97SSPCON2          EQU  H'0091'
98PR2              EQU  H'0092'
99SSPADD           EQU  H'0093'
100SSPSTAT          EQU  H'0094'
101TXSTA            EQU  H'0098'
102SPBRG            EQU  H'0099'
103ADRESL           EQU  H'009E'
104ADCON1           EQU  H'009F'
105
106;-----Bank2------------------
107EEDATA           EQU  H'010C'
108EEADR            EQU  H'010D'
109EEDATH           EQU  H'010E'
110EEADRH           EQU  H'010F'
111
112;-----Bank3------------------
113EECON1           EQU  H'018C'
114EECON2           EQU  H'018D'
115
116;----- STATUS Bits -----------------------------------------------------
117C                EQU  H'0000'
118DC               EQU  H'0001'
119Z                EQU  H'0002'
120NOT_PD           EQU  H'0003'
121NOT_TO           EQU  H'0004'
122IRP              EQU  H'0007'
123
124RP0              EQU  H'0005'
125RP1              EQU  H'0006'
126
127
128;----- PORTA Bits -----------------------------------------------------
129RA0              EQU  H'0000'
130RA1              EQU  H'0001'
131RA2              EQU  H'0002'
132RA3              EQU  H'0003'
133RA4              EQU  H'0004'
134RA5              EQU  H'0005'
135
136
137;----- PORTB Bits -----------------------------------------------------
138RB0              EQU  H'0000'
139RB1              EQU  H'0001'
140RB2              EQU  H'0002'
141RB3              EQU  H'0003'
142RB4              EQU  H'0004'
143RB5              EQU  H'0005'
144RB6              EQU  H'0006'
145RB7              EQU  H'0007'
146
147
148;----- PORTC Bits -----------------------------------------------------
149RC0              EQU  H'0000'
150RC1              EQU  H'0001'
151RC2              EQU  H'0002'
152RC3              EQU  H'0003'
153RC4              EQU  H'0004'
154RC5              EQU  H'0005'
155RC6              EQU  H'0006'
156RC7              EQU  H'0007'
157
158
159;----- PORTD Bits -----------------------------------------------------
160RD0              EQU  H'0000'
161RD1              EQU  H'0001'
162RD2              EQU  H'0002'
163RD3              EQU  H'0003'
164RD4              EQU  H'0004'
165RD5              EQU  H'0005'
166RD6              EQU  H'0006'
167RD7              EQU  H'0007'
168
169
170;----- PORTE Bits -----------------------------------------------------
171RE0              EQU  H'0000'
172RE1              EQU  H'0001'
173RE2              EQU  H'0002'
174
175
176;----- INTCON Bits -----------------------------------------------------
177RBIF             EQU  H'0000'
178INTF             EQU  H'0001'
179T0IF             EQU  H'0002'
180RBIE             EQU  H'0003'
181INTE             EQU  H'0004'
182T0IE             EQU  H'0005'
183PEIE             EQU  H'0006'
184GIE              EQU  H'0007'
185
186TMR0IF           EQU  H'0002'
187TMR0IE           EQU  H'0005'
188
189
190;----- PIR1 Bits -----------------------------------------------------
191TMR1IF           EQU  H'0000'
192TMR2IF           EQU  H'0001'
193CCP1IF           EQU  H'0002'
194SSPIF            EQU  H'0003'
195TXIF             EQU  H'0004'
196RCIF             EQU  H'0005'
197ADIF             EQU  H'0006'
198PSPIF            EQU  H'0007'
199
200
201;----- PIR2 Bits -----------------------------------------------------
202CCP2IF           EQU  H'0000'
203BCLIF            EQU  H'0003'
204EEIF             EQU  H'0004'
205
206
207;----- T1CON Bits -----------------------------------------------------
208TMR1ON           EQU  H'0000'
209TMR1CS           EQU  H'0001'
210NOT_T1SYNC       EQU  H'0002'
211T1OSCEN          EQU  H'0003'
212
213T1CKPS0          EQU  H'0004'
214T1CKPS1          EQU  H'0005'
215
216T1INSYNC         EQU  H'0002'
217
218T1SYNC           EQU  H'0002'
219
220
221;----- T2CON Bits -----------------------------------------------------
222TMR2ON           EQU  H'0002'
223
224T2CKPS0          EQU  H'0000'
225T2CKPS1          EQU  H'0001'
226TOUTPS0          EQU  H'0003'
227TOUTPS1          EQU  H'0004'
228TOUTPS2          EQU  H'0005'
229TOUTPS3          EQU  H'0006'
230
231
232;----- SSPCON Bits -----------------------------------------------------
233CKP              EQU  H'0004'
234SSPEN            EQU  H'0005'
235SSPOV            EQU  H'0006'
236WCOL             EQU  H'0007'
237
238SSPM0            EQU  H'0000'
239SSPM1            EQU  H'0001'
240SSPM2            EQU  H'0002'
241SSPM3            EQU  H'0003'
242
243
244;----- CCP1CON Bits -----------------------------------------------------
245CCP1Y            EQU  H'0004'
246CCP1X            EQU  H'0005'
247
248CCP1M0           EQU  H'0000'
249CCP1M1           EQU  H'0001'
250CCP1M2           EQU  H'0002'
251CCP1M3           EQU  H'0003'
252
253
254;----- RCSTA Bits -----------------------------------------------------
255RX9D             EQU  H'0000'
256OERR             EQU  H'0001'
257FERR             EQU  H'0002'
258ADDEN            EQU  H'0003'
259CREN             EQU  H'0004'
260SREN             EQU  H'0005'
261RX9              EQU  H'0006'
262SPEN             EQU  H'0007'
263
264RCD8             EQU  H'0000'
265RC9              EQU  H'0006'
266
267NOT_RC8          EQU  H'0006'
268
269RC8_9            EQU  H'0006'
270
271
272;----- CCP2CON Bits -----------------------------------------------------
273CCP2Y            EQU  H'0004'
274CCP2X            EQU  H'0005'
275
276CCP2M0           EQU  H'0000'
277CCP2M1           EQU  H'0001'
278CCP2M2           EQU  H'0002'
279CCP2M3           EQU  H'0003'
280
281
282;----- ADCON0 Bits -----------------------------------------------------
283ADON             EQU  H'0000'
284GO_NOT_DONE      EQU  H'0002'
285
286GO               EQU  H'0002'
287CHS0             EQU  H'0003'
288CHS1             EQU  H'0004'
289CHS2             EQU  H'0005'
290ADCS0            EQU  H'0006'
291ADCS1            EQU  H'0007'
292
293NOT_DONE         EQU  H'0002'
294
295GO_DONE          EQU  H'0002'
296
297
298;----- OPTION_REG Bits -----------------------------------------------------
299PSA              EQU  H'0003'
300T0SE             EQU  H'0004'
301T0CS             EQU  H'0005'
302INTEDG           EQU  H'0006'
303NOT_RBPU         EQU  H'0007'
304
305PS0              EQU  H'0000'
306PS1              EQU  H'0001'
307PS2              EQU  H'0002'
308
309
310;----- TRISA Bits -----------------------------------------------------
311TRISA0           EQU  H'0000'
312TRISA1           EQU  H'0001'
313TRISA2           EQU  H'0002'
314TRISA3           EQU  H'0003'
315TRISA4           EQU  H'0004'
316TRISA5           EQU  H'0005'
317
318
319;----- TRISB Bits -----------------------------------------------------
320TRISB0           EQU  H'0000'
321TRISB1           EQU  H'0001'
322TRISB2           EQU  H'0002'
323TRISB3           EQU  H'0003'
324TRISB4           EQU  H'0004'
325TRISB5           EQU  H'0005'
326TRISB6           EQU  H'0006'
327TRISB7           EQU  H'0007'
328
329
330;----- TRISC Bits -----------------------------------------------------
331TRISC0           EQU  H'0000'
332TRISC1           EQU  H'0001'
333TRISC2           EQU  H'0002'
334TRISC3           EQU  H'0003'
335TRISC4           EQU  H'0004'
336TRISC5           EQU  H'0005'
337TRISC6           EQU  H'0006'
338TRISC7           EQU  H'0007'
339
340
341;----- TRISD Bits -----------------------------------------------------
342TRISD0           EQU  H'0000'
343TRISD1           EQU  H'0001'
344TRISD2           EQU  H'0002'
345TRISD3           EQU  H'0003'
346TRISD4           EQU  H'0004'
347TRISD5           EQU  H'0005'
348TRISD6           EQU  H'0006'
349TRISD7           EQU  H'0007'
350
351
352;----- TRISE Bits -----------------------------------------------------
353TRISE0           EQU  H'0000'
354TRISE1           EQU  H'0001'
355TRISE2           EQU  H'0002'
356PSPMODE          EQU  H'0004'
357IBOV             EQU  H'0005'
358OBF              EQU  H'0006'
359IBF              EQU  H'0007'
360
361
362;----- PIE1 Bits -----------------------------------------------------
363TMR1IE           EQU  H'0000'
364TMR2IE           EQU  H'0001'
365CCP1IE           EQU  H'0002'
366SSPIE            EQU  H'0003'
367TXIE             EQU  H'0004'
368RCIE             EQU  H'0005'
369ADIE             EQU  H'0006'
370PSPIE            EQU  H'0007'
371
372
373;----- PIE2 Bits -----------------------------------------------------
374CCP2IE           EQU  H'0000'
375BCLIE            EQU  H'0003'
376EEIE             EQU  H'0004'
377
378
379;----- PCON Bits -----------------------------------------------------
380NOT_BOR          EQU  H'0000'
381NOT_POR          EQU  H'0001'
382
383NOT_BO           EQU  H'0000'
384
385
386;----- SSPCON2 Bits -----------------------------------------------------
387SEN              EQU  H'0000'
388RSEN             EQU  H'0001'
389PEN              EQU  H'0002'
390RCEN             EQU  H'0003'
391ACKEN            EQU  H'0004'
392ACKDT            EQU  H'0005'
393ACKSTAT          EQU  H'0006'
394GCEN             EQU  H'0007'
395
396
397;----- SSPSTAT Bits -----------------------------------------------------
398BF               EQU  H'0000'
399UA               EQU  H'0001'
400R_NOT_W          EQU  H'0002'
401S                EQU  H'0003'
402P                EQU  H'0004'
403D_NOT_A          EQU  H'0005'
404CKE              EQU  H'0006'
405SMP              EQU  H'0007'
406
407R                EQU  H'0002'
408D                EQU  H'0005'
409
410I2C_READ         EQU  H'0002'
411I2C_START        EQU  H'0003'
412I2C_STOP         EQU  H'0004'
413I2C_DATA         EQU  H'0005'
414
415NOT_W            EQU  H'0002'
416NOT_A            EQU  H'0005'
417
418NOT_WRITE        EQU  H'0002'
419NOT_ADDRESS      EQU  H'0005'
420
421R_W              EQU  H'0002'
422D_A              EQU  H'0005'
423
424READ_WRITE       EQU  H'0002'
425DATA_ADDRESS     EQU  H'0005'
426
427
428;----- TXSTA Bits -----------------------------------------------------
429TX9D             EQU  H'0000'
430TRMT             EQU  H'0001'
431BRGH             EQU  H'0002'
432SYNC             EQU  H'0004'
433TXEN             EQU  H'0005'
434TX9              EQU  H'0006'
435CSRC             EQU  H'0007'
436
437TXD8             EQU  H'0000'
438NOT_TX8          EQU  H'0006'
439
440TX8_9            EQU  H'0006'
441
442
443;----- ADCON1 Bits -----------------------------------------------------
444ADFM             EQU  H'0007'
445
446PCFG0            EQU  H'0000'
447PCFG1            EQU  H'0001'
448PCFG2            EQU  H'0002'
449PCFG3            EQU  H'0003'
450
451
452;----- EECON1 Bits -----------------------------------------------------
453RD               EQU  H'0000'
454WR               EQU  H'0001'
455WREN             EQU  H'0002'
456WRERR            EQU  H'0003'
457EEPGD            EQU  H'0007'
458
459
460
461
462;==========================================================================
463;
464;       RAM Definitions
465;
466;==========================================================================
467       __MAXRAM  H'01FF'
468       __BADRAM  H'008F'-H'0090'
469       __BADRAM  H'0095'-H'0097'
470       __BADRAM  H'009A'-H'009D'
471       __BADRAM  H'0105'
472       __BADRAM  H'0107'-H'0109'
473       __BADRAM  H'0110'-H'011F'
474       __BADRAM  H'0185'
475       __BADRAM  H'0187'-H'0189'
476       __BADRAM  H'018E'-H'018F'
477       __BADRAM  H'0190'-H'019F'
478
479;==========================================================================
480;
481;       Configuration Bits
482;
483;   NAME            Address
484;   CONFIG            2007h
485;
486;==========================================================================
487
488; The following is an assignment of address values for all of the
489; configuration registers for the purpose of table reads
490_CONFIG          EQU  H'2007'
491
492;----- CONFIG Options --------------------------------------------------
493_FOSC_LP             EQU  H'3FFC'    ; LP oscillator
494_LP_OSC              EQU  H'3FFC'    ; LP oscillator
495_FOSC_XT             EQU  H'3FFD'    ; XT oscillator
496_XT_OSC              EQU  H'3FFD'    ; XT oscillator
497_FOSC_HS             EQU  H'3FFE'    ; HS oscillator
498_HS_OSC              EQU  H'3FFE'    ; HS oscillator
499_FOSC_EXTRC          EQU  H'3FFF'    ; RC oscillator
500_RC_OSC              EQU  H'3FFF'    ; RC oscillator
501
502_WDTE_OFF            EQU  H'3FFB'    ; WDT disabled
503_WDT_OFF             EQU  H'3FFB'    ; WDT disabled
504_WDTE_ON             EQU  H'3FFF'    ; WDT enabled
505_WDT_ON              EQU  H'3FFF'    ; WDT enabled
506
507_PWRTE_ON            EQU  H'3FF7'    ; PWRT enabled
508_PWRTE_OFF           EQU  H'3FFF'    ; PWRT disabled
509
510_CP_ALL              EQU  H'0FCF'    ; 0000h to 0FFFh code protected
511_CP_HALF             EQU  H'1FDF'    ; 0800h to 0FFFh code protected
512_CP_UPPER_256        EQU  H'2FEF'    ; 0F00h to 0FFFh code protected
513_CP_OFF              EQU  H'3FFF'    ; Code protection off
514
515_BOREN_OFF           EQU  H'3FBF'    ; BOR disabled
516_BODEN_OFF           EQU  H'3FBF'    ; BOR disabled
517_BOREN_ON            EQU  H'3FFF'    ; BOR enabled
518_BODEN_ON            EQU  H'3FFF'    ; BOR enabled
519
520_LVP_OFF             EQU  H'3F7F'    ; RB3 is digital I/O, HV on MCLR must be used for programming
521_LVP_ON              EQU  H'3FFF'    ; RB3/PGM pin has PGM function; low-voltage programming enabled
522
523_CPD_ON              EQU  H'3EFF'    ; Data EEPROM memory code-protected
524_CPD_OFF             EQU  H'3FFF'    ; Code Protection off
525
526_WRT_OFF             EQU  H'3DFF'    ; Unprotected program memory may not be written to by EECON control
527_WRT_ENABLE_OFF      EQU  H'3DFF'    ; Unprotected program memory may not be written to by EECON control
528_WRT_ON              EQU  H'3FFF'    ; Unprotected program memory may be written to by EECON control
529_WRT_ENABLE_ON       EQU  H'3FFF'    ; Unprotected program memory may be written to by EECON control
530
531_DEBUG_ON            EQU  H'37FF'    ; In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger
532_DEBUG_OFF           EQU  H'3FFF'    ; In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
533
534;----- DEVID Equates --------------------------------------------------
535_DEVID1          EQU  H'2006'
536
537;----- IDLOC Equates --------------------------------------------------
538_IDLOC0          EQU  H'2000'
539_IDLOC1          EQU  H'2001'
540_IDLOC2          EQU  H'2002'
541_IDLOC3          EQU  H'2003'
542
543        LIST
544