⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic12c5xx.h

📁 picc
💻 H
字号:
/*
 *	Header file for the Microchip 
 *	PIC 12C508 
 *	PIC 12C509 
 *	PIC 12F508 
 *	PIC 12F509 
 *	PIC 12C508A 
 *      PIC 12C509A 
 *      PIC 12CE518 
 *      PIC 12CE519 
 *      PIC 12CR509A 
 *      rfPIC 12C509AG 
 *      rfPIC 12C509AF 
 *	Baseline Microcontrollers
 */

static volatile unsigned char	RTCC	@ 0x01;//"RTCC"为定时器/记数器
static volatile unsigned char	TMR0	@ 0x01;//8位定时/记数器
static volatile unsigned char	PCL	@ 0x02;//程序指针寄存器
static volatile unsigned char	STATUS	@ 0x03;//程序状态寄存器
static          unsigned char	FSR	@ 0x04;//特殊功能寄存器(与INDF配合使用)
static volatile unsigned char	OSCCAL	@ 0x05;//时钟振荡校准寄存器
static volatile unsigned char	GPIO	@ 0x06;//端口寄存器

static          unsigned char control	OPTION	@ 0x00;//选择控制寄存器
static volatile	unsigned char control	TRIS	@ 0x06;//端口方向寄存器


/*	STATUS bits	“状态寄存器位定义”	*/
static bit 	GPWUF	@ (unsigned)&STATUS*8+7;//比较器电平变化唤醒标志位
						//CWUF=0;上电或其它复位之后;CWUF=1;比较器电平变化时从休眠中唤醒导致的复位!

static bit	PA0	@ (unsigned)&STATUS*8+5;//程序页面选择位;PA0=0选择“0”页面,PA0=1选择“1”页面

static bit 	TO	@ (unsigned)&STATUS*8+4;//超时位;TO=0;发生WDT超时;TO=1;在上电、或
						//CLRWDT指令或SLEEP指令之后!

static bit 	PD	@ (unsigned)&STATUS*8+3;//掉电位;PD=0;执行了SLEEP指令;PD=1;上电后
						//或者执行了CLRWDT指令之后!

static bit 	ZERO	@ (unsigned)&STATUS*8+2;//零标志位(或简称Z位);ZERO=0;算术或逻辑运
						//算的结果不为“0”;ZERO=1;算术或逻辑运算的
						//结果为“0”
static bit	DC	@ (unsigned)&STATUS*8+1;//辅助进位/借位(用于ADDWF和SUBWF指令)
						//DC=0运算结果第4低有效位、发生借位(作SUBWF)
						//DC=1运算结果第4低有效位未发生借位(作SUBWF)
						//DC=0运算结果第4低有效位未发生进位(作ADDWF)
						//DC=1运算结果第4低有效位发生了进位(作ADDWF)
static bit	CARRY	@ (unsigned)&STATUS*8+0;//进位/借位位(用于:ADDWF、SUBWF、和REEF、RLF指令)
						//CARRY=0发生借位(用于:SUBWF)
						//CARRY=0未发生进位(用于:ADDWF)
						//CARRY=1未发生借位(用于:SUBWF)
						//CARRY=1发生借位  (用于:ADDWF)

/*	OPTION bits 选择寄存器位定义	*/
#define		GPWU	(1<<7)		//GP0,GP1,GP3电平变化选择,GPWU=1关闭;GPWU=0,使能。

#define		GPPU	(1<<6)		//GP0,GP1,GP3弱上拉选择,GPPU=1,关闭;GPPU=0,使能。

#define		T0CS	(1<<5)		//TIERM0信号源,T0CS=0,内部指令周期;T0CS=1,外部T0CKI引脚。

#define		T0SE	(1<<4)		//TIERM0触发源选择,T0SE=0,上升沿触发;T0SE=1,下降沿触发
#define		PSA	(1<<3)		//预分频器分配,PSA=0,分配给TIERM0;PSA=1,分配给WDT(看门狗)

#define		PS2	(1<<2)		//分频器参数\000:TMR0为1:2;WDT为1:1
					//***********001:TMR0为1:4;WDT为1:2
					//***********010:TMR0为1:8;WDT为1:4
#define		PS1	(1<<1)		//分频器参数 011:TMR0为1:16;WDT为1:8
					//***********100:TMR0为1:32;WDT为1:16
					//***********101:TMR0为1:64;WDT为1:32
#define		PS0	(1<<0)		//分频器参数 110:TMR0为1:128;WDT为1:64
					//**********/111:TMR0为1:256;WDT为1:128

/*      OSCCAL bitsm内部振荡器校准寄存器     */
#if defined(_12C508) || defined(_12C509)
static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+7;//
static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+6;//
static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+5;//
static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+4;//
#elif	defined(_12C508A) || defined(_12C509A) ||\
	defined(_12CE518) || defined(_12CE519) ||\
	defined(_12C509AG) || defined(_12C509AF) ||\
	defined(_12CR509A)
	static volatile bit     CAL5    @ (unsigned)&OSCCAL*8+7;//
	static volatile bit     CAL4    @ (unsigned)&OSCCAL*8+6;//
	static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+5;//
	static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+4;//
	static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+3;//
	static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+2;//
#elif defined(_12F508) || defined(_12F509)
static volatile bit     CAL6    @ (unsigned)&OSCCAL*8+7;//内部振荡器校准位\频率调节位\0111111 = 最高频率
static volatile bit     CAL5    @ (unsigned)&OSCCAL*8+6;//内部振荡器校准位 ................
static volatile bit     CAL4    @ (unsigned)&OSCCAL*8+5;//内部振荡器校准位 ................
static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+4;//内部振荡器校准位 0000000 = 振荡器模块运行在已校准后的频率上
static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+3;//内部振荡器校准位 ................
static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+2;//内部振荡器校准位 ................
static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+1;//内部振荡器校准位/频率调节位\1000000 = 最低频率
#endif
	
/*	GPIO bits 端口寄存器位定义	*/
#if defined(_12CE518) || defined(_12CE519)
	static volatile bit     SCL     @ (unsigned)&GPIO*8+7;	//串行时钟口
	static volatile bit     SDA     @ (unsigned)&GPIO*8+6;	//串行数据控制口
#endif
static volatile bit	GP5	@ (unsigned)&GPIO*8+5;	//端口寄存器“5”
static volatile bit	GP4	@ (unsigned)&GPIO*8+4;	//端口寄存器“4”
static volatile bit	GP3	@ (unsigned)&GPIO*8+3;	//端口寄存器“3”
static volatile bit	GP2	@ (unsigned)&GPIO*8+2;	//端口寄存器“2”
static volatile bit	GP1	@ (unsigned)&GPIO*8+1;	//端口寄存器“1”
static volatile bit	GP0	@ (unsigned)&GPIO*8+0;	//端口寄存器“0”

#if defined(_12CE518) || defined(_12CE519)
#define EEPROM_SIZE	16
#endif

#define CONFIG_ADDR	0xFFF

/* code protection 配置字(外部禁止时为使用内部时钟) */
#define MCLREN		0xFFF	// memory clear enable "使用内部时钟"
#define MCLRDIS		0xFEF	// memory clear disable "内部时钟禁用"

/*watchdog看门狗设置*/
#define WDTEN		0xFFF	// watchdog timer enable "看门狗开"  
#define WDTDIS		0xFFB	// watchdog timer disable "看门狗关"

/* code protection */
#define PROTECT		0xFF7	// protect the program code "内部代码保护"
#define UNPROTECT	0xFFF	// do not protect the program code "代码不保护"

/*osc configurations*/
#define EXTRC   	0xFFF	// external resistor/capacitor "外部阻容振荡器"
#define INTRC		0xFFE	// internal    "内部振荡器"
#define XT		0xFFD	// crystal/resonator     “外部标准晶体振/陶瓷振荡”
#define LP		0xFFC	// low power crystal/resonator“外部低功耗低速晶振”

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -