分享

pic16单片机 pic.h头文件

 昵称2379373 2011-09-14
以下是PIC.H头文件内容:

#ifndef_PIC_H

#define_PIC_H

 

#if defined(_10F200)|| defined(_10F202)||\

    defined(_10F204)|| defined(_10F206)

#include<pic10f20x.h>

#endif

#if defined(_12C508)|| defined(_12C509)||\

    defined(_12F508)|| defined(_12F509)||\

    defined(_12C508A)|| defined(_12C509A)||\

    defined(_12CE518)|| defined(_12CE519)||\

    defined(_12C509AG)|| defined(_12C509AF)||\

    defined(_12CR509A)|| defined(_RF509AG)||\

    defined(_RF509AF)

#include<pic125xx.h>

#endif

#if defined(_16C432)|| defined(_16C433)

#include<pic1643x.h>

#endif

#if defined(_16C52)|| defined(_16C54)|| defined(_16C54A)||\

    defined(_16C54B)|| defined(_16C54C)|| defined(_16CR54A)||\

    defined(_16CR54B)|| defined(_16CR54C)|| defined(_16C55)||\

    defined(_16C55A)|| defined(_16C56)|| defined(_16C56A)||\

    defined(_16CR56A)|| defined(_16C57)|| defined(_16C57C)||\

    defined(_16CR57B)|| defined(_16CR57C)|| defined(_16C58A)||\

    defined(_16C58B)|| defined(_16CR58A)|| defined(_16CR58B)||\

    defined(_16C58)|| defined(_16HV540)

#include<pic165x.h>

#endif

#if defined(_16F54)|| defined(_16F57)

#include<pic16f5x.h>

#endif

#if defined(_12C671)|| defined(_12C672)||\

    defined(_12CE673)|| defined(_12CE674)

#include<pic1267x.h>

#endif

#ifdefined(_12F629)|| defined(_12F675)

#include<pic12f6x.h>

#endif

#ifdefined(_12F683)

#include<pic12f683.h>

#endif

#ifdefined(_12F675F)|| defined(_12F675H)|| defined(_12F675K)

#include<pic12rf675.h>

#endif

#if defined(_16C505) || defined(_16F505)

#include<pic16505.h>

#endif

#ifdef_14000

#include<pic14000.h>

#endif

#if defined(_16C554)|| defined(_16C556)|| defined(_16C557) ||\

defined(_16C558) || defined(_16C554A)   || defined(_16C556A) || \

defined(_16C558A)

#include<pic1655x.h>

#endif

#ifdef_16C61

#include<pic1661.h>

#endif

#if defined(_16C62)|| defined(_16C62A)|| defined(_16CR62)||\

    defined(_16C62B)

#include<pic1662.h>

#endif

#if defined(_16C620)|| defined(_16C621)|| defined(_16C622)||\

    defined(_16C620A)   || defined(_16C621A)    || defined(_16C622A)||\

    defined(_16CE623)|| defined(_16CE624)|| defined(_16CE625)||\

    defined(_16CR620A)

#include<pic1662x.h>

#endif

#if defined(_16C64)|| defined(_16C64A)|| defined(_16CR64)

#include<pic1664.h>

#endif

#if defined(_16C641)|| defined(_16C642)||\

    defined(_16C661)|| defined(_16C662)

#include<pic166xx.h>

#endif

#if defined(_16C65)|| defined(_16C65A)|| defined(_16CR65)

#include<pic1665.h>

#endif

#if defined(_16C66)|| defined(_16C67)

#include<pic166x.h>

#endif

#if defined(_16C71)|| defined(_16C710)|| defined(_16C711)

#include<pic1671x.h>

#endif

#if defined(_16C712)    || defined(_16C715)     || defined(_16C716)

#include<pic16715.h>

#endif

#if defined(_16C72)     || defined(_16C72A)|| defined(_16CR72)

#include<pic1672.h>

#endif

#if defined(_16C73)|| defined(_16C73A)||\

    defined(_16C74)|| defined(_16C74A)||\

    defined(_16C63)     || defined(_16CR63)     || defined(_16C63A)     ||\

    defined(_16C65B)    || defined(_16C73B)     || defined(_16C74B)||\

    defined(_16LC74B)

#include<pic1674.h>

#endif

#if defined(_16C76)|| defined(_16C77)

#include<pic1677.h>

#endif

#if defined(_16C773)|| defined(_16C774)|| defined(_16C770)||\

    defined(_16C771)|| defined(_16C717)|| defined(_16C745)||\

    defined(_16C765)

#include<pic1677x.h>

#endif

#if defined(_16C781)|| defined(_16C782)

#include<pic1678x.h>

#endif

#if defined(_16F627)|| defined(_16F628)

#include<pic16f6x.h>

#endif

#if defined(_16F627A)|| defined(_16F628A)|| defined(_16F648A)

#include<pic16f62xa.h>

#endif

#if defined(_16F630)|| defined(_16F676)

#include<pic16630.h>

#endif

#if defined(_12F635)|| defined(_16F636)

#include<pic16f636.h>

#endif

#if defined(_16F684)

#include<pic16f684.h>

#endif

#if defined(_16F688)

#include<pic16f688.h>

#endif

#if defined(_16F83)|| defined(_16CR83)|| defined(_16C84)|| \

    defined(_16F84)|| defined(_16F84A)|| defined(_16CR84)

#include<pic1684.h>

#endif

#if defined(_16F87)|| defined(_16F88)

#include <pic16f87.h>

#endif

#if defined(_16F873)|| defined(_16F874)||\

    defined(_16F876)|| defined(_16F877)||\

    defined(_16F872)|| defined(_16F871)||\

    defined(_16F870)

#include<pic1687x.h>

#endif

#if defined(_16F873A)|| defined(_16F874A)||\

    defined(_16F876A)|| defined(_16F877A)

#include<pic168xa.h>      //含有pic16f877a.h头文件

#endif

#ifdefined(_16F72)||\

defined(_16F73)|| defined(_16F74)||\

defined(_16F76) || defined(_16F77)

#include<pic16f7x.h>

#endif

#if defined(_16F716)

#include<pic16f716.h>

#endif

#ifdefined(_16F737) || defined(_16F747)||\

defined(_16F767) || defined(_16F777)

#include<pic16f7x7.h>

#endif

#if defined(_16F818)|| defined(_16F819)

#include<pic16f81x.h>

#endif

#if defined(_16C923)|| defined(_16C924)||\

    defined(_16C925)|| defined(_16C926)

#include<pic169xx.h>

#endif

#ifdefined(_7C695X)

#include<pic7695x.h>

#endif

#ifdefined(_16C99) || defined (_16C99C)

#include        <pic1699.h>

#endif

 

#if  defined(_17C42) || defined(_17C42A) || defined(_17CR42) ||\

     defined(_17C43) || defined(_17CR43) || defined(_17C44)

#include        <pic174x.h>

#endif

 

#if  defined(_17C752)   || defined(_17C756)     || defined(_17C756A)    ||\

     defined(_17C762)   || defined(_17C766)

        #include        <pic177xx.h>

 

#endif

 

#defineCLRWDT()asm("clrwdt")   //看门狗宏定义

#defineSLEEP()asm("sleep")  //sleep休眠宏定义

#define NOP()asm("nop")  //nop延时宏定义

 

#define___mkstr1(x)#x

#define___mkstr(x)___mkstr1(x)

#define__CONFIG(x)asm("\tpsect config,class=CONFIG,delta=2");\

asm("\tdw "___mkstr(x))

 

#define __IDLOC(w)       asm("\tpsect idloc,class=IDLOC,delta=2");\      //IDLOC

asm("\tglobal\tidloc_word"); \

asm("idloc_word"); \

asm("\tirpc\t__arg," ___mkstr(w)); \

asm("\tdw 0&__arg&h"); \

asm("\tendm")

 

#ifEEPROM_SIZE > 0            //EEPROM

#define __EEPROM_DATA(a, b, c, d, e, f, g, h) \

asm("\tpsect eeprom_data,class=EEDATA,delta=2"); \

asm("\tdb\t" ___mkstr(a) "," ___mkstr(b) "," ___mkstr(c) "," ___mkstr(d) "," \

     ___mkstr(e) "," ___mkstr(f) "," ___mkstr(g) "," ___mkstr(h))

#endif

 

/***********************************************************************

 **** FLASH memory read/write/erase macros and function definitions ****

 ***********************************************************************

 * Notes:

 *__FLASHTYPE == 0 defined in devices that can only read flash memory - cannot write eg. 16F777

 *__FLASHTYPE == 1 defined in traditional devices that can write 1 word at a time eg. 16F877

 *__FLASHTYPE == 2 defined in devices that can only write in 4 word blocks eg. 16F877A

 *__FLASHTYPE == 3 defined in devices requiring 32-word block erasure before writing eg. 16F87

 *__FLASHTYPE == undefined if device can neither read nor write program memory

 */

// macro FLASH_READ returns a word stored at a flash address

#if defined(__FLASHTYPE)

extern unsigned char flash_read(unsigned short addr);

#ifEEPROM_SIZE > 0

#define FLASH_READ(addr) \

(EEADR=(addr)&0xff,\

EEADRH=(addr)>>8,\

WREN=0,\

EECON1 |= 0x80,\

RD=1,\

DC=0,\

DC=0,\

(EEDATH << 8) | EEDATA)

#else// FLASH_READ without EEPROM

#define FLASH_READ(addr) \

(EEADR=(addr)&0xff,\

EEADRH=(addr)>>8,\

RD=1,\

DC=0,\

DC=0,\

(EEDATH << 8) | EEDATA)

#endif

#endif// end FLASH_READ

 

// macro FLASH_WRITE used when writing only one word of data

#if__FLASHTYPE==2 || __FLASHTYPE==3

#define FLASH_WRITE(addr,data)\

do{\

unsigned short x=data;\

flash_copy((const unsigned char *)&x,1,addr);\

}while(0)

 

extern void flash_copy(const unsigned char * source_addr,unsigned char length,unsigned short dest_addr);

#elif__FLASHTYPE==1

#define FLASH_WRITE(addr, value) \

EEADR=((addr)&0xff);\

EEADRH=((addr)>>8);\

EEDATH=((value)>>8);\

EEDATA=((value)&0xff);\

EECON1 |= 0x80;\

WREN=1;\

EECON2 = 0x55;\

EECON2 = 0xaa;\

WR=1;\

asm("nop");\

asm("nop");\

WREN=0

#endif// end FLASH_WRITE

 

// macro FLASH_ERASE used to clear a 32-Byte sector of flash

#if__FLASHTYPE==3

#define FLASH_ERASE(addr) \

       while(WR)continue; \

EEADR=((addr)&0xFF); \

EEADRH=((addr>>8)&0xFF); \

EECON1=0x94; \

CARRY=0;if(GIE)CARRY=1;GIE=0;\

EECON2=0x55;EECON2=0xAA;WR=1; \

asm("\tNOP"); \

if(CARRY)GIE=1 

 

// library function version

extern void flash_erase(unsigned short addr);

#endif// end FLASH_ERASE

 

/***********************************************************************/

/****** EEPROM memory read/write macros and function definitions *******/

/***********************************************************************/

#ifEEPROM_SIZE > 0

#ifdef__FLASHTYPE

// macro versions of EEPROM write and read

#defineEEPROM_WRITE(addr, value) \

while(WR)continue;EEADR=(addr);EEDATA=(value); \

EECON1&=0x7F;CARRY=0;if(GIE)CARRY=1;GIE=0; \

WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \

if(CARRY)GIE=1

 

#defineEEPROM_READ(addr) ((EEADR=(addr)),(EECON1&=0x7F),(RD=1),EEDATA)

 

#else// else doesn't write flash

#defineEEPROM_WRITE(addr, value) \

while(WR)continue;EEADR=(addr);EEDATA=(value); \

CARRY=0;if(GIE)CARRY=1;GIE=0; \

WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \

if(CARRY)GIE=1

 

#defineEEPROM_READ(addr) ((EEADR=(addr)),(RD=1),EEDATA)

#endif

 

/* library function versions */

extern void eeprom_write(unsigned char addr, unsigned char value);

extern unsigned char eeprom_read(unsigned char addr);

#endif// end EEPROM routines

 

 

/****************************************************************/

/****** Global interrupt enable/disable macro definitions *******/

/****************************************************************/

#ifdef _PIC16

 

#ifndefei

#defineei()(GLINTD = 0)// interrupt disable bit

#endif 

 

#if defined(_17C42)

#ifndefdi

#define di(){ do { GLINTD = 1; } while ( GLINTD == 0 ); }// disable interrupt bit

#endif 

#else

#ifndefdi

#definedi()(GLINTD = 1)// interrupt disable bit

#endif 

#endif

 

#elif defined _PIC14

 

#ifndefei

#defineei()(GIE = 1)// interrupt enable bit

#endif  

 

#if defined(_14000) ||  defined(_16C61) || defined(_16C62) ||\

defined(_16C63) || defined(_16C63A) || defined(_16C64) ||\

defined(_16C65) || defined(_16C65B) || defined(_16C71) ||\

defined(_16C73) || defined(_16C73B) || defined(_16C74) ||\

defined(_16C74B) || defined(_16C84) || defined(_16C745) ||\

defined(_16C765) || defined(_16LC74B)

#ifndefdi

#define di(){ do { GIE = 0; } while ( GIE == 1 ); }// disable interrupt bit

#endif  

#else

#ifndefdi

#definedi()(GIE = 0)// interrupt enable bit

#endif  

#endif

 

#endif

#endif/* _PIC_H */


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多