Uso de RTOS
p18f4550.h
1 /*-------------------------------------------------------------------------
2  * $Id: p18f4550.h,v 1.7.12.1 2005/10/11 01:56:23 curtiss Exp $
3  * MPLAB-Cxx PIC18F4550 processor header
4  *
5  * (c) Copyright 1999-2005 Microchip Technology, All rights reserved
6  *-------------------------------------------------------------------------*/
7 
8 #ifndef __18F4550_H
9 #define __18F4550_H
10 
11 extern volatile near unsigned char SPPDATA;
12 extern near unsigned char SPPCFG;
13 extern near struct {
14  unsigned WS0:1;
15  unsigned WS1:1;
16  unsigned WS2:1;
17  unsigned WS3:1;
18  unsigned CLK1EN:1;
19  unsigned CSEN:1;
20  unsigned CLKCFG0:1;
21  unsigned CLKCFG1:1;
22 } SPPCFGbits;
23 extern near unsigned char SPPEPS;
24 extern near struct {
25  unsigned ADDR0:1;
26  unsigned ADDR1:1;
27  unsigned ADDR2:1;
28  unsigned ADDR3:1;
29  unsigned SPPBUSY:1;
30  unsigned :1;
31  unsigned WRSPP:1;
32  unsigned RDSPP:1;
33 } SPPEPSbits;
34 extern near unsigned char SPPCON;
35 extern near struct {
36  unsigned SPPEN:1;
37  unsigned SPPOWN:1;
38 } SPPCONbits;
39 extern volatile near unsigned UFRM;
40 extern volatile near unsigned char UFRML;
41 extern volatile near struct {
42  unsigned FRM0:1;
43  unsigned FRM1:1;
44  unsigned FRM2:1;
45  unsigned FRM3:1;
46  unsigned FRM4:1;
47  unsigned FRM5:1;
48  unsigned FRM6:1;
49  unsigned FRM7:1;
50 } UFRMLbits;
51 extern volatile near unsigned char UFRMH;
52 extern volatile near struct {
53  unsigned FRM8:1;
54  unsigned FRM9:1;
55  unsigned FRM10:1;
56 } UFRMHbits;
57 extern volatile near unsigned char UIR;
58 extern volatile near struct {
59  unsigned URSTIF:1;
60  unsigned UERRIF:1;
61  unsigned ACTVIF:1;
62  unsigned TRNIF:1;
63  unsigned IDLEIF:1;
64  unsigned STALLIF:1;
65  unsigned SOFIF:1;
66 } UIRbits;
67 extern volatile near unsigned char UIE;
68 extern volatile near struct {
69  unsigned URSTIE:1;
70  unsigned UERRIE:1;
71  unsigned ACTVIE:1;
72  unsigned TRNIE:1;
73  unsigned IDLEIE:1;
74  unsigned STALLIE:1;
75  unsigned SOFIE:1;
76 } UIEbits;
77 extern volatile near unsigned char UEIR;
78 extern volatile near struct {
79  unsigned PIDEF:1;
80  unsigned CRC5EF:1;
81  unsigned CRC16EF:1;
82  unsigned DFN8EF:1;
83  unsigned BTOEF:1;
84  unsigned :2;
85  unsigned BTSEF:1;
86 } UEIRbits;
87 extern volatile near unsigned char UEIE;
88 extern volatile near struct {
89  unsigned PIDEE:1;
90  unsigned CRC5EE:1;
91  unsigned CRC16EE:1;
92  unsigned DFN8EE:1;
93  unsigned BTOEE:1;
94  unsigned :2;
95  unsigned BTSEE:1;
96 } UEIEbits;
97 extern volatile near unsigned char USTAT;
98 extern volatile near struct {
99  unsigned :1;
100  unsigned PPBI:1;
101  unsigned DIR:1;
102  unsigned ENDP0:1;
103  unsigned ENDP1:1;
104  unsigned ENDP2:1;
105  unsigned ENDP3:1;
106 } USTATbits;
107 extern near unsigned char UCON;
108 extern near struct {
109  unsigned :1;
110  unsigned SUSPND:1;
111  unsigned RESUME:1;
112  unsigned USBEN:1;
113  unsigned PKTDIS:1;
114  unsigned SE0:1;
115  unsigned PPBRST:1;
116 } UCONbits;
117 extern near unsigned char UADDR;
118 extern near struct {
119  unsigned ADDR0:1;
120  unsigned ADDR1:1;
121  unsigned ADDR2:1;
122  unsigned ADDR3:1;
123  unsigned ADDR4:1;
124  unsigned ADDR5:1;
125  unsigned ADDR6:1;
126 } UADDRbits;
127 extern near unsigned char UCFG;
128 extern near struct {
129  unsigned PPB0:1;
130  unsigned PPB1:1;
131  unsigned FSEN:1;
132  unsigned UTRDIS:1;
133  unsigned UPUEN:1;
134  unsigned :1;
135  unsigned UOEMON:1;
136  unsigned UTEYE:1;
137 } UCFGbits;
138 extern near unsigned char UEP0;
139 extern near struct {
140  unsigned EPSTALL:1;
141  unsigned EPINEN:1;
142  unsigned EPOUTEN:1;
143  unsigned EPCONDIS:1;
144  unsigned EPHSHK:1;
145 } UEP0bits;
146 extern near unsigned char UEP1;
147 extern near struct {
148  unsigned EPSTALL:1;
149  unsigned EPINEN:1;
150  unsigned EPOUTEN:1;
151  unsigned EPCONDIS:1;
152  unsigned EPHSHK:1;
153 } UEP1bits;
154 extern near unsigned char UEP2;
155 extern near struct {
156  unsigned EPSTALL:1;
157  unsigned EPINEN:1;
158  unsigned EPOUTEN:1;
159  unsigned EPCONDIS:1;
160  unsigned EPHSHK:1;
161 } UEP2bits;
162 extern near unsigned char UEP3;
163 extern near struct {
164  unsigned EPSTALL:1;
165  unsigned EPINEN:1;
166  unsigned EPOUTEN:1;
167  unsigned EPCONDIS:1;
168  unsigned EPHSHK:1;
169 } UEP3bits;
170 extern near unsigned char UEP4;
171 extern near struct {
172  unsigned EPSTALL:1;
173  unsigned EPINEN:1;
174  unsigned EPOUTEN:1;
175  unsigned EPCONDIS:1;
176  unsigned EPHSHK:1;
177 } UEP4bits;
178 extern near unsigned char UEP5;
179 extern near struct {
180  unsigned EPSTALL:1;
181  unsigned EPINEN:1;
182  unsigned EPOUTEN:1;
183  unsigned EPCONDIS:1;
184  unsigned EPHSHK:1;
185 } UEP5bits;
186 extern near unsigned char UEP6;
187 extern near struct {
188  unsigned EPSTALL:1;
189  unsigned EPINEN:1;
190  unsigned EPOUTEN:1;
191  unsigned EPCONDIS:1;
192  unsigned EPHSHK:1;
193 } UEP6bits;
194 extern near unsigned char UEP7;
195 extern near struct {
196  unsigned EPSTALL:1;
197  unsigned EPINEN:1;
198  unsigned EPOUTEN:1;
199  unsigned EPCONDIS:1;
200  unsigned EPHSHK:1;
201 } UEP7bits;
202 extern near unsigned char UEP8;
203 extern near struct {
204  unsigned EPSTALL:1;
205  unsigned EPINEN:1;
206  unsigned EPOUTEN:1;
207  unsigned EPCONDIS:1;
208  unsigned EPHSHK:1;
209 } UEP8bits;
210 extern near unsigned char UEP9;
211 extern near struct {
212  unsigned EPSTALL:1;
213  unsigned EPINEN:1;
214  unsigned EPOUTEN:1;
215  unsigned EPCONDIS:1;
216  unsigned EPHSHK:1;
217 } UEP9bits;
218 extern near unsigned char UEP10;
219 extern near struct {
220  unsigned EPSTALL:1;
221  unsigned EPINEN:1;
222  unsigned EPOUTEN:1;
223  unsigned EPCONDIS:1;
224  unsigned EPHSHK:1;
225 } UEP10bits;
226 extern near unsigned char UEP11;
227 extern near struct {
228  unsigned EPSTALL:1;
229  unsigned EPINEN:1;
230  unsigned EPOUTEN:1;
231  unsigned EPCONDIS:1;
232  unsigned EPHSHK:1;
233 } UEP11bits;
234 extern near unsigned char UEP12;
235 extern near struct {
236  unsigned EPSTALL:1;
237  unsigned EPINEN:1;
238  unsigned EPOUTEN:1;
239  unsigned EPCONDIS:1;
240  unsigned EPHSHK:1;
241 } UEP12bits;
242 extern near unsigned char UEP13;
243 extern near struct {
244  unsigned EPSTALL:1;
245  unsigned EPINEN:1;
246  unsigned EPOUTEN:1;
247  unsigned EPCONDIS:1;
248  unsigned EPHSHK:1;
249 } UEP13bits;
250 extern near unsigned char UEP14;
251 extern near struct {
252  unsigned EPSTALL:1;
253  unsigned EPINEN:1;
254  unsigned EPOUTEN:1;
255  unsigned EPCONDIS:1;
256  unsigned EPHSHK:1;
257 } UEP14bits;
258 extern near unsigned char UEP15;
259 extern near struct {
260  unsigned EPSTALL:1;
261  unsigned EPINEN:1;
262  unsigned EPOUTEN:1;
263  unsigned EPCONDIS:1;
264  unsigned EPHSHK:1;
265 } UEP15bits;
266 extern volatile near unsigned char PORTA;
267 extern volatile near union {
268  struct {
269  unsigned RA0:1;
270  unsigned RA1:1;
271  unsigned RA2:1;
272  unsigned RA3:1;
273  unsigned RA4:1;
274  unsigned RA5:1;
275  unsigned RA6:1;
276  };
277  struct {
278  unsigned AN0:1;
279  unsigned AN1:1;
280  unsigned AN2:1;
281  unsigned AN3:1;
282  unsigned T0CKI:1;
283  unsigned AN4:1;
284  unsigned OSC2:1;
285  };
286  struct {
287  unsigned :2;
288  unsigned VREFM:1;
289  unsigned VREFP:1;
290  unsigned :1;
291  unsigned LVDIN:1;
292  };
293  struct {
294  unsigned :5;
295  unsigned HLVDIN:1;
296  };
297 } PORTAbits;
298 extern volatile near unsigned char PORTB;
299 extern volatile near union {
300  struct {
301  unsigned RB0:1;
302  unsigned RB1:1;
303  unsigned RB2:1;
304  unsigned RB3:1;
305  unsigned RB4:1;
306  unsigned RB5:1;
307  unsigned RB6:1;
308  unsigned RB7:1;
309  };
310  struct {
311  unsigned INT0:1;
312  unsigned INT1:1;
313  unsigned INT2:1;
314  };
315  struct {
316  unsigned :5;
317  unsigned PGM:1;
318  unsigned PGC:1;
319  unsigned PGD:1;
320  };
321 } PORTBbits;
322 extern volatile near unsigned char PORTC;
323 extern volatile near union {
324  struct {
325  unsigned RC0:1;
326  unsigned RC1:1;
327  unsigned RC2:1;
328  unsigned :1;
329  unsigned RC4:1;
330  unsigned RC5:1;
331  unsigned RC6:1;
332  unsigned RC7:1;
333  };
334  struct {
335  unsigned T1OSO:1;
336  unsigned T1OSI:1;
337  unsigned CCP1:1;
338  unsigned :3;
339  unsigned TX:1;
340  unsigned RX:1;
341  };
342  struct {
343  unsigned T13CKI:1;
344  unsigned :1;
345  unsigned P1A:1;
346  unsigned :3;
347  unsigned CK:1;
348  unsigned DT:1;
349  };
350 } PORTCbits;
351 extern volatile near unsigned char PORTD;
352 extern volatile near union {
353  struct {
354  unsigned RD0:1;
355  unsigned RD1:1;
356  unsigned RD2:1;
357  unsigned RD3:1;
358  unsigned RD4:1;
359  unsigned RD5:1;
360  unsigned RD6:1;
361  unsigned RD7:1;
362  };
363  struct {
364  unsigned SPP0:1;
365  unsigned SPP1:1;
366  unsigned SPP2:1;
367  unsigned SPP3:1;
368  unsigned SPP4:1;
369  unsigned SPP5:1;
370  unsigned SPP6:1;
371  unsigned SPP7:1;
372  };
373 } PORTDbits;
374 extern volatile near unsigned char PORTE;
375 extern volatile near union {
376  struct {
377  unsigned RE0:1;
378  unsigned RE1:1;
379  unsigned RE2:1;
380  unsigned RE3:1;
381  unsigned :3;
382  unsigned RDPU:1;
383  };
384  struct {
385  unsigned CK1SPP:1;
386  unsigned CK2SPP:1;
387  unsigned OESPP:1;
388  };
389 } PORTEbits;
390 extern volatile near unsigned char LATA;
391 extern volatile near struct {
392  unsigned LATA0:1;
393  unsigned LATA1:1;
394  unsigned LATA2:1;
395  unsigned LATA3:1;
396  unsigned LATA4:1;
397  unsigned LATA5:1;
398  unsigned LATA6:1;
399 } LATAbits;
400 extern volatile near unsigned char LATB;
401 extern volatile near struct {
402  unsigned LATB0:1;
403  unsigned LATB1:1;
404  unsigned LATB2:1;
405  unsigned LATB3:1;
406  unsigned LATB4:1;
407  unsigned LATB5:1;
408  unsigned LATB6:1;
409  unsigned LATB7:1;
410 } LATBbits;
411 extern volatile near unsigned char LATC;
412 extern volatile near struct {
413  unsigned LATC0:1;
414  unsigned LATC1:1;
415  unsigned LATC2:1;
416  unsigned :3;
417  unsigned LATC6:1;
418  unsigned LATC7:1;
419 } LATCbits;
420 extern volatile near unsigned char LATD;
421 extern volatile near struct {
422  unsigned LATD0:1;
423  unsigned LATD1:1;
424  unsigned LATD2:1;
425  unsigned LATD3:1;
426  unsigned LATD4:1;
427  unsigned LATD5:1;
428  unsigned LATD6:1;
429  unsigned LATD7:1;
430 } LATDbits;
431 extern volatile near unsigned char LATE;
432 extern volatile near struct {
433  unsigned LATE0:1;
434  unsigned LATE1:1;
435  unsigned LATE2:1;
436 } LATEbits;
437 extern volatile near unsigned char DDRA;
438 extern volatile near struct {
439  unsigned RA0:1;
440  unsigned RA1:1;
441  unsigned RA2:1;
442  unsigned RA3:1;
443  unsigned RA4:1;
444  unsigned RA5:1;
445  unsigned RA6:1;
446 } DDRAbits;
447 extern volatile near unsigned char TRISA;
448 extern volatile near struct {
449  unsigned TRISA0:1;
450  unsigned TRISA1:1;
451  unsigned TRISA2:1;
452  unsigned TRISA3:1;
453  unsigned TRISA4:1;
454  unsigned TRISA5:1;
455  unsigned TRISA6:1;
456 } TRISAbits;
457 extern volatile near unsigned char DDRB;
458 extern volatile near struct {
459  unsigned RB0:1;
460  unsigned RB1:1;
461  unsigned RB2:1;
462  unsigned RB3:1;
463  unsigned RB4:1;
464  unsigned RB5:1;
465  unsigned RB6:1;
466  unsigned RB7:1;
467 } DDRBbits;
468 extern volatile near unsigned char TRISB;
469 extern volatile near struct {
470  unsigned TRISB0:1;
471  unsigned TRISB1:1;
472  unsigned TRISB2:1;
473  unsigned TRISB3:1;
474  unsigned TRISB4:1;
475  unsigned TRISB5:1;
476  unsigned TRISB6:1;
477  unsigned TRISB7:1;
478 } TRISBbits;
479 extern volatile near unsigned char DDRC;
480 extern volatile near struct {
481  unsigned RC0:1;
482  unsigned RC1:1;
483  unsigned RC2:1;
484  unsigned :3;
485  unsigned RC6:1;
486  unsigned RC7:1;
487 } DDRCbits;
488 extern volatile near unsigned char TRISC;
489 extern volatile near struct {
490  unsigned TRISC0:1;
491  unsigned TRISC1:1;
492  unsigned TRISC2:1;
493  unsigned :3;
494  unsigned TRISC6:1;
495  unsigned TRISC7:1;
496 } TRISCbits;
497 extern volatile near unsigned char DDRD;
498 extern volatile near struct {
499  unsigned RD0:1;
500  unsigned RD1:1;
501  unsigned RD2:1;
502  unsigned RD3:1;
503  unsigned RD4:1;
504  unsigned RD5:1;
505  unsigned RD6:1;
506  unsigned RD7:1;
507 } DDRDbits;
508 extern volatile near unsigned char TRISD;
509 extern volatile near struct {
510  unsigned TRISD0:1;
511  unsigned TRISD1:1;
512  unsigned TRISD2:1;
513  unsigned TRISD3:1;
514  unsigned TRISD4:1;
515  unsigned TRISD5:1;
516  unsigned TRISD6:1;
517  unsigned TRISD7:1;
518 } TRISDbits;
519 extern volatile near unsigned char DDRE;
520 extern volatile near struct {
521  unsigned RE0:1;
522  unsigned RE1:1;
523  unsigned RE2:1;
524 } DDREbits;
525 extern volatile near unsigned char TRISE;
526 extern volatile near struct {
527  unsigned TRISE0:1;
528  unsigned TRISE1:1;
529  unsigned TRISE2:1;
530 } TRISEbits;
531 extern volatile near unsigned char OSCTUNE;
532 extern volatile near struct {
533  unsigned TUN0:1;
534  unsigned TUN1:1;
535  unsigned TUN2:1;
536  unsigned TUN3:1;
537  unsigned TUN4:1;
538  unsigned :2;
539  unsigned INTSRC:1;
540 } OSCTUNEbits;
541 extern volatile near unsigned char PIE1;
542 extern volatile near struct {
543  unsigned TMR1IE:1;
544  unsigned TMR2IE:1;
545  unsigned CCP1IE:1;
546  unsigned SSPIE:1;
547  unsigned TXIE:1;
548  unsigned RCIE:1;
549  unsigned ADIE:1;
550  unsigned SPPIE:1;
551 } PIE1bits;
552 extern volatile near unsigned char PIR1;
553 extern volatile near struct {
554  unsigned TMR1IF:1;
555  unsigned TMR2IF:1;
556  unsigned CCP1IF:1;
557  unsigned SSPIF:1;
558  unsigned TXIF:1;
559  unsigned RCIF:1;
560  unsigned ADIF:1;
561  unsigned SPPIF:1;
562 } PIR1bits;
563 extern volatile near unsigned char IPR1;
564 extern volatile near struct {
565  unsigned TMR1IP:1;
566  unsigned TMR2IP:1;
567  unsigned CCP1IP:1;
568  unsigned SSPIP:1;
569  unsigned TXIP:1;
570  unsigned RCIP:1;
571  unsigned ADIP:1;
572  unsigned SPPIP:1;
573 } IPR1bits;
574 extern volatile near unsigned char PIE2;
575 extern volatile near union {
576  struct {
577  unsigned CCP2IE:1;
578  unsigned TMR3IE:1;
579  unsigned LVDIE:1;
580  unsigned BCLIE:1;
581  unsigned EEIE:1;
582  unsigned USBIE:1;
583  unsigned CMIE:1;
584  unsigned OSCFIE:1;
585  };
586  struct {
587  unsigned :2;
588  unsigned HLVDIE:1;
589  };
590 } PIE2bits;
591 extern volatile near unsigned char PIR2;
592 extern volatile near union {
593  struct {
594  unsigned CCP2IF:1;
595  unsigned TMR3IF:1;
596  unsigned LVDIF:1;
597  unsigned BCLIF:1;
598  unsigned EEIF:1;
599  unsigned USBIF:1;
600  unsigned CMIF:1;
601  unsigned OSCFIF:1;
602  };
603  struct {
604  unsigned :2;
605  unsigned HLVDIF:1;
606  };
607 } PIR2bits;
608 extern volatile near unsigned char IPR2;
609 extern volatile near union {
610  struct {
611  unsigned CCP2IP:1;
612  unsigned TMR3IP:1;
613  unsigned LVDIP:1;
614  unsigned BCLIP:1;
615  unsigned EEIP:1;
616  unsigned USBIP:1;
617  unsigned CMIP:1;
618  unsigned OSCFIP:1;
619  };
620  struct {
621  unsigned :2;
622  unsigned HLVDIP:1;
623  };
624 } IPR2bits;
625 extern volatile near unsigned char EECON1;
626 extern volatile near struct {
627  unsigned RD:1;
628  unsigned WR:1;
629  unsigned WREN:1;
630  unsigned WRERR:1;
631  unsigned FREE:1;
632  unsigned :1;
633  unsigned CFGS:1;
634  unsigned EEPGD:1;
635 } EECON1bits;
636 extern volatile near unsigned char EECON2;
637 extern volatile near unsigned char EEDATA;
638 extern volatile near unsigned char EEADR;
639 extern volatile near unsigned char RCSTA;
640 extern volatile near union {
641  struct {
642  unsigned RX9D:1;
643  unsigned OERR:1;
644  unsigned FERR:1;
645  unsigned ADDEN:1;
646  unsigned CREN:1;
647  unsigned SREN:1;
648  unsigned RX9:1;
649  unsigned SPEN:1;
650  };
651  struct {
652  unsigned :3;
653  unsigned ADEN:1;
654  };
655 } RCSTAbits;
656 extern volatile near unsigned char TXSTA;
657 extern volatile near struct {
658  unsigned TX9D:1;
659  unsigned TRMT:1;
660  unsigned BRGH:1;
661  unsigned SENDB:1;
662  unsigned SYNC:1;
663  unsigned TXEN:1;
664  unsigned TX9:1;
665  unsigned CSRC:1;
666 } TXSTAbits;
667 extern volatile near unsigned char TXREG;
668 extern volatile near unsigned char RCREG;
669 extern volatile near unsigned char SPBRG;
670 extern volatile near unsigned char SPBRGH;
671 extern volatile near unsigned char T3CON;
672 extern volatile near union {
673  struct {
674  unsigned TMR3ON:1;
675  unsigned TMR3CS:1;
676  unsigned T3SYNC:1;
677  unsigned T3CCP1:1;
678  unsigned T3CKPS0:1;
679  unsigned T3CKPS1:1;
680  unsigned T3CCP2:1;
681  unsigned RD16:1;
682  };
683  struct {
684  unsigned :2;
685  unsigned T3NSYNC:1;
686  };
687  struct {
688  unsigned :2;
689  unsigned NOT_T3SYNC:1;
690  };
691 } T3CONbits;
692 extern volatile near unsigned char TMR3L;
693 extern volatile near unsigned char TMR3H;
694 extern volatile near unsigned char CMCON;
695 extern volatile near struct {
696  unsigned CM0:1;
697  unsigned CM1:1;
698  unsigned CM2:1;
699  unsigned CIS:1;
700  unsigned C1INV:1;
701  unsigned C2INV:1;
702  unsigned C1OUT:1;
703  unsigned C2OUT:1;
704 } CMCONbits;
705 extern volatile near unsigned char CVRCON;
706 extern volatile near union {
707  struct {
708  unsigned CVR0:1;
709  unsigned CVR1:1;
710  unsigned CVR2:1;
711  unsigned CVR3:1;
712  unsigned CVREF:1;
713  unsigned CVRR:1;
714  unsigned CVROE:1;
715  unsigned CVREN:1;
716  };
717  struct {
718  unsigned :4;
719  unsigned CVRSS:1;
720  };
721 } CVRCONbits;
722 extern volatile near unsigned char CCP1AS;
723 extern volatile near struct {
724  unsigned PSSBD0:1;
725  unsigned PSSBD1:1;
726  unsigned PSSAC0:1;
727  unsigned PSSAC1:1;
728  unsigned ECCPAS0:1;
729  unsigned ECCPAS1:1;
730  unsigned ECCPAS2:1;
731  unsigned ECCPASE:1;
732 } CCP1ASbits;
733 extern volatile near unsigned char ECCP1AS;
734 extern volatile near struct {
735  unsigned PSSBD0:1;
736  unsigned PSSBD1:1;
737  unsigned PSSAC0:1;
738  unsigned PSSAC1:1;
739  unsigned ECCPAS0:1;
740  unsigned ECCPAS1:1;
741  unsigned ECCPAS2:1;
742  unsigned ECCPASE:1;
743 } ECCP1ASbits;
744 extern volatile near unsigned char CCP1DEL;
745 extern volatile near struct {
746  unsigned PDC0:1;
747  unsigned PDC1:1;
748  unsigned PDC2:1;
749  unsigned PDC3:1;
750  unsigned PDC4:1;
751  unsigned PDC5:1;
752  unsigned PDC6:1;
753  unsigned PRSEN:1;
754 } CCP1DELbits;
755 extern volatile near unsigned char ECCP1DEL;
756 extern volatile near struct {
757  unsigned PDC0:1;
758  unsigned PDC1:1;
759  unsigned PDC2:1;
760  unsigned PDC3:1;
761  unsigned PDC4:1;
762  unsigned PDC5:1;
763  unsigned PDC6:1;
764  unsigned PRSEN:1;
765 } ECCP1DELbits;
766 extern volatile near unsigned char BAUDCON;
767 extern volatile near union {
768  struct {
769  unsigned ABDEN:1;
770  unsigned WUE:1;
771  unsigned :1;
772  unsigned BRG16:1;
773  unsigned SCKP:1;
774  unsigned :1;
775  unsigned RCIDL:1;
776  unsigned ABDOVF:1;
777  };
778  struct {
779  unsigned :6;
780  unsigned RCMT:1;
781  };
782 } BAUDCONbits;
783 extern volatile near unsigned char CCP2CON;
784 extern volatile near struct {
785  unsigned CCP2M0:1;
786  unsigned CCP2M1:1;
787  unsigned CCP2M2:1;
788  unsigned CCP2M3:1;
789  unsigned DC2B0:1;
790  unsigned DC2B1:1;
791 } CCP2CONbits;
792 extern volatile near unsigned CCPR2;
793 extern volatile near unsigned char CCPR2L;
794 extern volatile near unsigned char CCPR2H;
795 extern volatile near unsigned char CCP1CON;
796 extern volatile near struct {
797  unsigned CCP1M0:1;
798  unsigned CCP1M1:1;
799  unsigned CCP1M2:1;
800  unsigned CCP1M3:1;
801  unsigned DC1B0:1;
802  unsigned DC1B1:1;
803  unsigned P1M0:1;
804  unsigned P1M1:1;
805 } CCP1CONbits;
806 extern volatile near unsigned char ECCP1CON;
807 extern volatile near struct {
808  unsigned CCP1M0:1;
809  unsigned CCP1M1:1;
810  unsigned CCP1M2:1;
811  unsigned CCP1M3:1;
812  unsigned DC1B0:1;
813  unsigned DC1B1:1;
814  unsigned P1M0:1;
815  unsigned P1M1:1;
816 } ECCP1CONbits;
817 extern volatile near unsigned CCPR1;
818 extern volatile near unsigned char CCPR1L;
819 extern volatile near unsigned char CCPR1H;
820 extern volatile near unsigned char ADCON2;
821 extern volatile near struct {
822  unsigned ADCS0:1;
823  unsigned ADCS1:1;
824  unsigned ADCS2:1;
825  unsigned ACQT0:1;
826  unsigned ACQT1:1;
827  unsigned ACQT2:1;
828  unsigned :1;
829  unsigned ADFM:1;
830 } ADCON2bits;
831 extern volatile near unsigned char ADCON1;
832 extern volatile near struct {
833  unsigned PCFG0:1;
834  unsigned PCFG1:1;
835  unsigned PCFG2:1;
836  unsigned PCFG3:1;
837  unsigned VCFG0:1;
838  unsigned VCFG1:1;
839 } ADCON1bits;
840 extern volatile near unsigned char ADCON0;
841 extern volatile near union {
842  struct {
843  unsigned ADON:1;
844  unsigned GO_DONE:1;
845  unsigned CHS0:1;
846  unsigned CHS1:1;
847  unsigned CHS2:1;
848  unsigned CHS3:1;
849  };
850  struct {
851  unsigned :1;
852  unsigned DONE:1;
853  };
854  struct {
855  unsigned :1;
856  unsigned GO:1;
857  };
858  struct {
859  unsigned :1;
860  unsigned NOT_DONE:1;
861  };
862 } ADCON0bits;
863 extern volatile near unsigned ADRES;
864 extern volatile near unsigned char ADRESL;
865 extern volatile near unsigned char ADRESH;
866 extern volatile near unsigned char SSPCON2;
867 extern volatile near struct {
868  unsigned SEN:1;
869  unsigned RSEN:1;
870  unsigned PEN:1;
871  unsigned RCEN:1;
872  unsigned ACKEN:1;
873  unsigned ACKDT:1;
874  unsigned ACKSTAT:1;
875  unsigned GCEN:1;
876 } SSPCON2bits;
877 extern volatile near unsigned char SSPCON1;
878 extern volatile near struct {
879  unsigned SSPM0:1;
880  unsigned SSPM1:1;
881  unsigned SSPM2:1;
882  unsigned SSPM3:1;
883  unsigned CKP:1;
884  unsigned SSPEN:1;
885  unsigned SSPOV:1;
886  unsigned WCOL:1;
887 } SSPCON1bits;
888 extern volatile near unsigned char SSPSTAT;
889 extern volatile near union {
890  struct {
891  unsigned BF:1;
892  unsigned UA:1;
893  unsigned R_W:1;
894  unsigned S:1;
895  unsigned P:1;
896  unsigned D_A:1;
897  unsigned CKE:1;
898  unsigned SMP:1;
899  };
900  struct {
901  unsigned :2;
902  unsigned I2C_READ:1;
903  unsigned I2C_START:1;
904  unsigned I2C_STOP:1;
905  unsigned I2C_DAT:1;
906  };
907  struct {
908  unsigned :2;
909  unsigned NOT_W:1;
910  unsigned :2;
911  unsigned NOT_A:1;
912  };
913  struct {
914  unsigned :2;
915  unsigned NOT_WRITE:1;
916  unsigned :2;
917  unsigned NOT_ADDRESS:1;
918  };
919  struct {
920  unsigned :2;
921  unsigned READ_WRITE:1;
922  unsigned :2;
923  unsigned DATA_ADDRESS:1;
924  };
925  struct {
926  unsigned :2;
927  unsigned R:1;
928  unsigned :2;
929  unsigned D:1;
930  };
931 } SSPSTATbits;
932 extern volatile near unsigned char SSPADD;
933 extern volatile near unsigned char SSPBUF;
934 extern volatile near unsigned char T2CON;
935 extern volatile near struct {
936  unsigned T2CKPS0:1;
937  unsigned T2CKPS1:1;
938  unsigned TMR2ON:1;
939  unsigned T2OUTPS0:1;
940  unsigned T2OUTPS1:1;
941  unsigned T2OUTPS2:1;
942  unsigned T2OUTPS3:1;
943 } T2CONbits;
944 extern volatile near unsigned char PR2;
945 extern volatile near unsigned char TMR2;
946 extern volatile near unsigned char T1CON;
947 extern volatile near union {
948  struct {
949  unsigned TMR1ON:1;
950  unsigned TMR1CS:1;
951  unsigned T1SYNC:1;
952  unsigned T1OSCEN:1;
953  unsigned T1CKPS0:1;
954  unsigned T1CKPS1:1;
955  unsigned T1RUN:1;
956  unsigned RD16:1;
957  };
958  struct {
959  unsigned :2;
960  unsigned NOT_T1SYNC:1;
961  };
962 } T1CONbits;
963 extern volatile near unsigned char TMR1L;
964 extern volatile near unsigned char TMR1H;
965 extern volatile near unsigned char RCON;
966 extern volatile near union {
967  struct {
968  unsigned NOT_BOR:1;
969  unsigned NOT_POR:1;
970  unsigned NOT_PD:1;
971  unsigned NOT_TO:1;
972  unsigned NOT_RI:1;
973  unsigned :1;
974  unsigned SBOREN:1;
975  unsigned NOT_IPEN:1;
976  };
977  struct {
978  unsigned BOR:1;
979  unsigned POR:1;
980  unsigned PD:1;
981  unsigned TO:1;
982  unsigned RI:1;
983  unsigned :2;
984  unsigned IPEN:1;
985  };
986 } RCONbits;
987 extern volatile near unsigned char WDTCON;
988 extern volatile near union {
989  struct {
990  unsigned SWDTEN:1;
991  };
992  struct {
993  unsigned SWDTE:1;
994  };
995 } WDTCONbits;
996 extern volatile near unsigned char HLVDCON;
997 extern volatile near union {
998  struct {
999  unsigned LVDL0:1;
1000  unsigned LVDL1:1;
1001  unsigned LVDL2:1;
1002  unsigned LVDL3:1;
1003  unsigned LVDEN:1;
1004  unsigned IRVST:1;
1005  };
1006  struct {
1007  unsigned LVV0:1;
1008  unsigned LVV1:1;
1009  unsigned LVV2:1;
1010  unsigned LVV3:1;
1011  unsigned :1;
1012  unsigned BGST:1;
1013  };
1014  struct {
1015  unsigned HLVDL0:1;
1016  unsigned HLVDL1:1;
1017  unsigned HLVDL2:1;
1018  unsigned HLVDL3:1;
1019  unsigned HLVDEN:1;
1020  unsigned :2;
1021  unsigned VDIRMAG:1;
1022  };
1023  struct {
1024  unsigned :5;
1025  unsigned IVRST:1;
1026  };
1027 } HLVDCONbits;
1028 extern volatile near unsigned char LVDCON;
1029 extern volatile near union {
1030  struct {
1031  unsigned LVDL0:1;
1032  unsigned LVDL1:1;
1033  unsigned LVDL2:1;
1034  unsigned LVDL3:1;
1035  unsigned LVDEN:1;
1036  unsigned IRVST:1;
1037  };
1038  struct {
1039  unsigned LVV0:1;
1040  unsigned LVV1:1;
1041  unsigned LVV2:1;
1042  unsigned LVV3:1;
1043  unsigned :1;
1044  unsigned BGST:1;
1045  };
1046  struct {
1047  unsigned HLVDL0:1;
1048  unsigned HLVDL1:1;
1049  unsigned HLVDL2:1;
1050  unsigned HLVDL3:1;
1051  unsigned HLVDEN:1;
1052  unsigned :2;
1053  unsigned VDIRMAG:1;
1054  };
1055  struct {
1056  unsigned :5;
1057  unsigned IVRST:1;
1058  };
1059 } LVDCONbits;
1060 extern volatile near unsigned char OSCCON;
1061 extern volatile near union {
1062  struct {
1063  unsigned SCS0:1;
1064  unsigned SCS1:1;
1065  unsigned IOFS:1;
1066  unsigned OSTS:1;
1067  unsigned IRCF0:1;
1068  unsigned IRCF1:1;
1069  unsigned IRCF2:1;
1070  unsigned IDLEN:1;
1071  };
1072  struct {
1073  unsigned :2;
1074  unsigned FLTS:1;
1075  };
1076 } OSCCONbits;
1077 extern volatile near unsigned char T0CON;
1078 extern volatile near struct {
1079  unsigned T0PS0:1;
1080  unsigned T0PS1:1;
1081  unsigned T0PS2:1;
1082  unsigned PSA:1;
1083  unsigned T0SE:1;
1084  unsigned T0CS:1;
1085  unsigned T08BIT:1;
1086  unsigned TMR0ON:1;
1087 } T0CONbits;
1088 extern volatile near unsigned char TMR0L;
1089 extern volatile near unsigned char TMR0H;
1090 extern near unsigned char STATUS;
1091 extern near struct {
1092  unsigned C:1;
1093  unsigned DC:1;
1094  unsigned Z:1;
1095  unsigned OV:1;
1096  unsigned N:1;
1097 } STATUSbits;
1098 extern near unsigned FSR2;
1099 extern near unsigned char FSR2L;
1100 extern near unsigned char FSR2H;
1101 extern volatile near unsigned char PLUSW2;
1102 extern volatile near unsigned char PREINC2;
1103 extern volatile near unsigned char POSTDEC2;
1104 extern volatile near unsigned char POSTINC2;
1105 extern near unsigned char INDF2;
1106 extern near unsigned char BSR;
1107 extern near unsigned FSR1;
1108 extern near unsigned char FSR1L;
1109 extern near unsigned char FSR1H;
1110 extern volatile near unsigned char PLUSW1;
1111 extern volatile near unsigned char PREINC1;
1112 extern volatile near unsigned char POSTDEC1;
1113 extern volatile near unsigned char POSTINC1;
1114 extern near unsigned char INDF1;
1115 extern near unsigned char WREG;
1116 extern near unsigned FSR0;
1117 extern near unsigned char FSR0L;
1118 extern near unsigned char FSR0H;
1119 extern volatile near unsigned char PLUSW0;
1120 extern volatile near unsigned char PREINC0;
1121 extern volatile near unsigned char POSTDEC0;
1122 extern volatile near unsigned char POSTINC0;
1123 extern near unsigned char INDF0;
1124 extern volatile near unsigned char INTCON3;
1125 extern volatile near union {
1126  struct {
1127  unsigned INT1IF:1;
1128  unsigned INT2IF:1;
1129  unsigned :1;
1130  unsigned INT1IE:1;
1131  unsigned INT2IE:1;
1132  unsigned :1;
1133  unsigned INT1IP:1;
1134  unsigned INT2IP:1;
1135  };
1136  struct {
1137  unsigned INT1F:1;
1138  unsigned INT2F:1;
1139  unsigned :1;
1140  unsigned INT1E:1;
1141  unsigned INT2E:1;
1142  unsigned :1;
1143  unsigned INT1P:1;
1144  unsigned INT2P:1;
1145  };
1146 } INTCON3bits;
1147 extern volatile near unsigned char INTCON2;
1148 extern volatile near union {
1149  struct {
1150  unsigned RBIP:1;
1151  unsigned :1;
1152  unsigned TMR0IP:1;
1153  unsigned :1;
1154  unsigned INTEDG2:1;
1155  unsigned INTEDG1:1;
1156  unsigned INTEDG0:1;
1157  unsigned NOT_RBPU:1;
1158  };
1159  struct {
1160  unsigned :2;
1161  unsigned T0IP:1;
1162  unsigned :4;
1163  unsigned RBPU:1;
1164  };
1165 } INTCON2bits;
1166 extern volatile near unsigned char INTCON;
1167 extern volatile near union {
1168  struct {
1169  unsigned RBIF:1;
1170  unsigned INT0IF:1;
1171  unsigned TMR0IF:1;
1172  unsigned RBIE:1;
1173  unsigned INT0IE:1;
1174  unsigned TMR0IE:1;
1175  unsigned PEIE:1;
1176  unsigned GIE:1;
1177  };
1178  struct {
1179  unsigned :1;
1180  unsigned INT0F:1;
1181  unsigned T0IF:1;
1182  unsigned :1;
1183  unsigned INT0E:1;
1184  unsigned T0IE:1;
1185  unsigned GIEL:1;
1186  unsigned GIEH:1;
1187  };
1188 } INTCONbits;
1189 extern near unsigned PROD;
1190 extern near unsigned char PRODL;
1191 extern near unsigned char PRODH;
1192 extern volatile near unsigned char TABLAT;
1193 extern volatile near unsigned short long TBLPTR;
1194 extern volatile near unsigned char TBLPTRL;
1195 extern volatile near unsigned char TBLPTRH;
1196 extern volatile near unsigned char TBLPTRU;
1197 extern volatile near unsigned short long PC;
1198 extern volatile near unsigned char PCL;
1199 extern volatile near unsigned char PCLATH;
1200 extern volatile near unsigned char PCLATU;
1201 extern volatile near unsigned char STKPTR;
1202 extern volatile near struct {
1203  unsigned STKPTR0:1;
1204  unsigned STKPTR1:1;
1205  unsigned STKPTR2:1;
1206  unsigned STKPTR3:1;
1207  unsigned STKPTR4:1;
1208  unsigned :1;
1209  unsigned STKUNF:1;
1210  unsigned STKFUL:1;
1211 } STKPTRbits;
1212 extern near unsigned short long TOS;
1213 extern near unsigned char TOSL;
1214 extern near unsigned char TOSH;
1215 extern near unsigned char TOSU;
1216 
1217 
1218 /*-------------------------------------------------------------------------
1219  * Some useful defines for inline assembly stuff
1220  *-------------------------------------------------------------------------*/
1221 #define ACCESS 0
1222 #define BANKED 1
1223 
1224 /*-------------------------------------------------------------------------
1225  * Some useful macros for inline assembly stuff
1226  *-------------------------------------------------------------------------*/
1227 #define Nop() {_asm nop _endasm}
1228 #define ClrWdt() {_asm clrwdt _endasm}
1229 #define Sleep() {_asm sleep _endasm}
1230 #define Reset() {_asm reset _endasm}
1231 
1232 #define Rlcf(f,dest,access) {_asm movlb f rlcf f,dest,access _endasm}
1233 #define Rlncf(f,dest,access) {_asm movlb f rlncf f,dest,access _endasm}
1234 #define Rrcf(f,dest,access) {_asm movlb f rrcf f,dest,access _endasm}
1235 #define Rrncf(f,dest,access) {_asm movlb f rrncf f,dest,access _endasm}
1236 #define Swapf(f,dest,access) {_asm movlb f swapf f,dest,access _endasm }
1237 
1238 /*-------------------------------------------------------------------------
1239  * A fairly inclusive set of registers to save for interrupts.
1240  * These are locations which are commonly used by the compiler.
1241  *-------------------------------------------------------------------------*/
1242 #define INTSAVELOCS TBLPTR, TABLAT, PROD
1243 
1244 
1245 #endif