×
嵌入式 > 嵌入式开发 > 详情

PIC16F877A.H头文件详细注释

发布时间:2020-09-03 发布时间:
|
/*

*Header file for the Microchip
*PIC 16F873A chip
*PIC 16F874A chip
*PIC 16F876A chip
*PIC 16F877A chip
*Midrange Microcontroller
*/

 

#if defined(_16F874A)|| defined(_16F877A)
#define__PINS_40
#endif

static volatile unsigned charINDF@ 0x00;//间接寻址寄存器
static volatile unsigned charTMR0@ 0x01;//定时器0
static volatile unsigned charPCL@ 0x02;//低8位程序计数器
static volatile unsigned charSTATUS@ 0x03;//程序状态寄存器
static unsigned charFSR@ 0x04;//特殊功能寄存器
static volatile unsigned charPORTA@ 0x05;//端口A寄存器
static volatile unsigned charPORTB@ 0x06;//端口B寄存器
static volatile unsigned charPORTC@ 0x07;//端口C寄存器
#ifdef __PINS_40
static volatile unsigned charPORTD@ 0x08;//端口D寄存器
static volatile unsigned charPORTE@ 0x09;//端口E寄存器
#endif
static unsigned charPCLATH@ 0x0A;//高5位程序计数器
static volatile unsigned charINTCON@ 0x0B;//中断控制寄存器
static volatile unsigned charPIR1@ 0x0C;//中断标志寄存器PIR1
static volatile unsigned charPIR2@ 0x0D;//中断标志寄存器PIR2
static volatile unsigned charTMR1L@ 0x0E;//低字节计数寄存器
static volatile unsigned charTMR1H@ 0x0F;//高字节计数寄存器
static volatile unsigned charT1CON@ 0x10;//TMR1控制寄存器
static volatile unsigned charTMR2@ 0x11;//定时/计数器TMR2
static volatile unsigned charT2CON@ 0x12;//TMR2控制寄存器
static volatile unsigned charSSPBUF@ 0x13;//收/发数据缓冲器
static volatile unsigned charSSPCON@ 0x14;//同步串口控制寄存器,对MSSP模块的功能和指标进行设置和定义。
static volatile unsigned charCCPR1L@ 0x15;//捕获/比较/PWM寄存器低字节
static volatile unsigned charCCPR1H@ 0x16;//捕获/比较/PWM寄存器低字节
static volatile unsigned charCCP1CON@ 0x17;//CCP1CON寄存器
static volatile unsigned charRCSTA@ 0x18;//USART接收控制兼状态寄存器
static volatile unsigned charTXREG@ 0x19;//USART发生缓冲器
static volatile unsigned charRCREG@ 0x1A;//USART接收缓冲器
static volatile unsigned charCCPR2L@ 0x1B;//捕获/比较/PWM寄存器低字节
static volatile unsigned charCCPR2H@ 0x1C;//捕获/比较/PWM寄存器低字节
static volatile unsigned charCCP2CON@ 0x1D;//CCP2CON寄存器
static volatile unsigned charADRESH@ 0x1E;//ADC转换结果寄存器高字节
static volatile unsigned charADCON0@ 0x1F;//A/D转换器开关位。

/*bank 1 registers */
static unsigned char bank1OPTION@ 0x81;//选择寄存器,用于配置TMR0/WDT预分频系数、外部INT中断、TMR0和端口B的弱上拉。
static volatileunsigned char bank1TRISA@ 0x85;//A口方向寄存器
static volatileunsigned char bank1TRISB@ 0x86;//B口方向寄存器
static volatileunsigned char bank1TRISC@ 0x87;//C口方向寄存器
#ifdef__PINS_40
static volatile unsigned char bank1TRISD@ 0x88;//D口方向寄存器
static volatile unsigned char bank1TRISE@ 0x89;//E口方向寄存器
#endif
static volatile unsigned char bank1PIE1@ 0x8C;//中断允许寄存器PIE1
static volatile unsigned char bank1PIE2@ 0x8D;//中断允许寄存器PIE2
static volatile unsigned char bank1PCON@ 0x8E;//电源控制状态寄存器
static volatile unsigned char bank1SSPCON2@ 0x91;//MSSP控制寄存器2
static volatile unsigned char bank1PR2@ 0x92;//TMR2周期寄存器
static volatile unsigned char bank1SSPADD@ 0x93;//同步串口地址寄存器
static volatile unsigned char bank1SSPSTAT@ 0x94;//同步串口状态寄存器
static volatile unsigned char bank1TXSTA@ 0x98;//USART发生控制兼状态寄存器
static volatile unsigned char bank1SPBRG@ 0x99;//USART波特率发生器初值寄存器
static volatile unsigned char bank1CMCON@ 0x9C;//比较控制寄存器
static volatile unsigned char bank1CVRCON@ 0x9D;//比较电压参考控制寄存器
static volatile unsigned char bank1ADRESL@ 0x9E;//ADC转换结果寄存器低字节
static volatile unsigned char bank1ADCON1@ 0x9F;//ADC控制寄存器ADCON1

/*bank 2 registers */
static volatile unsigned char bank2EEDATA@ 0x10C;//EEPROM数据寄存器低字节
static volatile unsigned char bank2EEADR@ 0x10D;//EEPROM地址寄存器低字节
static volatile unsigned char bank2EEDATH@ 0x10E;//EEPROM数据寄存器高字节
static volatile unsigned char bank2EEADRH@ 0x10F;//EEPROM地址寄存器高字节

/*bank 3 registers */
static volatile unsigned char bank3EECON1@ 0x18C;//EEPROM控制寄存器1
static volatile unsigned char bank3EECON2@ 0x18D;//EEPROM控制寄存器2

//*STATUS bits状态寄存器*/
static volatile bitIRP @ (unsigned)&STATUS*8+7;//寄存器bank选择位(用于间接寻址)。0:bank0,1;1:bank2,3
static volatile bitRP1 @ (unsigned)&STATUS*8+6;//寄存器bank选择位(用于直接寻址)。PR1:PR0:00:BANK0;01:BANK1;10:BANK2;11BANK3.
static volatile bitRP0 @ (unsigned)&STATUS*8+5;//
static volatile bitTO@ (unsigned)&STATUS*8+4;//超时位。0:WDT超时发生;1:上电后,执行了CLRWDT或者SLEEP指令
static volatile bitPD@ (unsigned)&STATUS*8+3;//掉电标志位。0:执行完SLEEP指令;1:上电后或者执行CLRWDT指令
static volatile bitZERO @ (unsigned)&STATUS*8+2;//零标志位。0:算术或逻辑操作结果不为0;1:反之。
static volatile bitDC @ (unsigned)&STATUS*8+1;//数字进位/退位标志位。0:结果的低4位没有发生进位;1:反之。
static volatile bitCARRY @ (unsigned)&STATUS*8+0;//进位/退位标志位。0:结果的高4位没有发生进位;1:反之。

/* PORTA bits */
static volatile bitRA5@ (unsigned)&PORTA*8+5;//RA5
static volatile bitRA4@ (unsigned)&PORTA*8+4;//RA4
static volatile bitRA3@ (unsigned)&PORTA*8+3;//RA3
static volatile bitRA2@ (unsigned)&PORTA*8+2;//RA2
static volatile bitRA1@ (unsigned)&PORTA*8+1;//RA1
static volatile bitRA0@ (unsigned)&PORTA*8+0;//RA0

/* PORTB bits */
static volatile bitRB7@ (unsigned)&PORTB*8+7;//RB7
static volatile bitRB6@ (unsigned)&PORTB*8+6;//RB6
static volatile bitRB5@ (unsigned)&PORTB*8+5;//RB5
static volatile bitRB4@ (unsigned)&PORTB*8+4;//RB4
static volatile bitRB3@ (unsigned)&PORTB*8+3;//RB3
static volatile bitRB2@ (unsigned)&PORTB*8+2;//RB2
static volatile bitRB1@ (unsigned)&PORTB*8+1;//RB1
static volatile bitRB0@ (unsigned)&PORTB*8+0;//RB0

/* PORTC bits */
static volatile bitRC7@ (unsigned)&PORTC*8+7;//RC7
static volatile bitRC6@ (unsigned)&PORTC*8+6;//RC6
static volatile bitRC5@ (unsigned)&PORTC*8+5;//RC5
static volatile bitRC4@ (unsigned)&PORTC*8+4;//RC4
static volatile bitRC3@ (unsigned)&PORTC*8+3;//RC3
static volatile bitRC2@ (unsigned)&PORTC*8+2;//RC2
static volatile bitRC1@ (unsigned)&PORTC*8+1;//RC1
static volatile bitRC0@ (unsigned)&PORTC*8+0;//RC0

/* PORTD bits */
#ifdef__PINS_40
static volatile bitRD7@ (unsigned)&PORTD*8+7;//RD7
static volatile bitRD6@ (unsigned)&PORTD*8+6;//RD6
static volatile bitRD5@ (unsigned)&PORTD*8+5;//RD5
static volatile bitRD4@ (unsigned)&PORTD*8+4;//RD4
static volatile bitRD3@ (unsigned)&PORTD*8+3;//RD3
static volatile bitRD2@ (unsigned)&PORTD*8+2;//RD2
static volatile bitRD1@ (unsigned)&PORTD*8+1;//RD1
static volatile bitRD0@ (unsigned)&PORTD*8+0;//RD0

/* PORTE bits */
static volatile bitRE2@ (unsigned)&PORTE*8+2;//RE2
static volatile bitRE1@ (unsigned)&PORTE*8+1;//RE1
static volatile bitRE0@ (unsigned)&PORTE*8+0;//RE0
#endif

//*INTCON bits 中断控制寄存器*/
static volatile bitGIE@ (unsigned)&INTCON*8+7;//总中断使能位。0:屏蔽所有的中断请求;1:允许非屏蔽的中断。
static volatile bitPEIE@ (unsigned)&INTCON*8+6;//外部中断使能位。0:禁止;1:使能
static volatile bitT0IE@ (unsigned)&INTCON*8+5;//TMR0溢出中断使能位。0:禁止;1:使能
static volatile bitINTE@ (unsigned)&INTCON*8+4;//RB0/INT外部中断使能位。0:不使能;1:使能。
static volatile bitRBIE@ (unsigned)&INTCON*8+3;//RB端口变化中断时能位。0:不使能;1:使能。
static volatile bitT0IF@ (unsigned)&INTCON*8+2;//TMR0溢出中断标志位。0:无溢出;1:溢出。
static volatile bitINTF@ (unsigned)&INTCON*8+1;//RB0/INT外部中断标志位。0:RB0外部中断未发生;1:RB0外部中断发生。
static volatile bitRBIF@ (unsigned)&INTCON*8+0;//RB端口变化中断标志位。0:RB口无变化;1:RB口至少有一个引脚变化。
// alternate definitions
static volatile bitTMR0IE@ (unsigned)&INTCON*8+5;//
static volatile bitTMR0IF@ (unsigned)&INTCON*8+2;//

//*PIR1 bits中断标志寄存器PIR1*/
#ifdef__PINS_40
static volatile bitPSPIF@ (unsigned)&PIR1*8+7;//并行从端口读写中断标志位。0:没有读写操作发生;1:反之
#endif
static volatile bitADIF@ (unsigned)&PIR1*8+6;//A/D转换器中断标志位。0:A/D转换没有完成;1:A/D转换完成。
static volatile bitRCIF@ (unsigned)&PIR1*8+5;//USART接收中断标志位。0:接收缓冲器空;1:反之。
static volatile bitTXIF@ (unsigned)&PIR1*8+4;//USART发送中断标志位。0:发生缓冲器满;1:反之。
static volatile bitSSPIF@ (unsigned)&PIR1*8+3;//同步串行端口(ssp)中断标志位。0:没有ssp中断条件发生;
static volatile bitCCP1IF@ (unsigned)&PIR1*8+2;//CCP1中断标志位。
static volatile bitTMR2IF@ (unsigned)&PIR1*8+1;//TMR2 TO PR2匹配中断标志位。0:没有匹配发生
static volatile bitTMR1IF@ (unsigned)&PIR1*8+0;//TMR1溢出中断标志位,0:无溢出

/*PIR2 bits*/
static volatile bitCMIF@ (unsigned)&PIR2*8+6;//比较器中断标志位;0:比较器输入没有改变
static volatile bitEEIF@ (unsigned)&PIR2*8+4;//EEPROM写操作中断标志位。0:写操作没有完成或没有开始
static volatile bitBCLIF@ (unsigned)&PIR2*8+3;//总线冲突中断标志位。0:没有总线冲突发生
static volatile bitCCP2IF@ (unsigned)&PIR2*8+0;//CCP2中断标志位

//*T1CON bitsTMR1控制寄存器*/
static volatile bitT1CKPS1@ (unsigned)&T1CON*8+5;//TMR1输入时钟预分频选择位
static volatile bitT1CKPS0@ (unsigned)&T1CON*8+4;//TMR1输入时钟预分频选择位
static volatile bitT1OSCEN@ (unsigned)&T1CON*8+3;//TMR1震荡器使能控制位。0:振荡器关闭
static volatile bitT1SYNC @ (unsigned)&T1CON*8+2;//TMR1外部时钟输入同步控制位。
static volatile bitTMR1CS @ (unsigned)&T1CON*8+1;//TMR1时钟源选择位。0:内部时钟的/4
static volatile bitTMR1ON @ (unsigned)&T1CON*8+0;//TMR1使能位。0:禁止

//*T2CON bits TMR2控制寄存器*/
static volatile bitTOUTPS3@ (unsigned)&T2CON*8+6;//TMR2后分频选择位。
static volatile bitTOUTPS2@ (unsigned)&T2CON*8+5;//TMR2后分频选择位
static volatile bitTOUTPS1@ (unsigned)&T2CON*8+4;//TMR2后分频选择位
static volatile bitTOUTPS0@ (unsigned)&T2CON*8+3;//TMR2后分频选择位。
static volatile bitTMR2ON @ (unsigned)&T2CON*8+2;//TMR2使能位。
static volatile bitT2CKPS1@ (unsigned)&T2CON*8+1;//TMR2预分频选择位。
static volatile bitT2CKPS0@ (unsigned)&T2CON*8+0;//TMR2预分频选择位

//*SSPCON bitsSPI同步串口控制寄存器*/
static volatile bitWCOL@ (unsigned)&SSPCON*8+7;//写操作冲突检测位,在SPI从动方式下,WCOL=0,未发生冲突,WCOL=1,发生冲突。
static volatile bitSSPOV@ (unsigned)&SSPCON*8+6;//接收溢出标志位,SSPOV=0,未发生接收溢出;SSPOV=1,发生接受溢出。
static volatile bitSSPEN@ (unsigned)&SSPCON*8+5;//同步串口MSSP允许位,SSPEN=0,关闭串口;SSPEN=1,允许串行端口功能。
static volatile bitCKP@ (unsigned)&SSPCON*8+4;//时钟极性选择位,CKP=0,空闲时时钟停留在低电平;CKP=1,空闲时时钟停留在高电平。
static volatile bitSSPM3@ (unsigned)&SSPCON*8+3;//同步串行口MSSP方式选择位,主动参数。0,1,2,3,4.
static volatile bitSSPM2@ (unsigned)&SSPCON*8+2;
static volatile bitSSPM1@ (unsigned)&SSPCON*8+1;
static volatile bitSSPM0@ (unsigned)&SSPCON*8+0;

/*CCP1CON bits*/
static volatile bitCCP1X@ (unsigned)&CCP1CON*8+5;//PWM最小信号位
static volatile bitCCP1Y@ (unsigned)&CCP1CON*8+4;//PWM最小信号位
static volatile bitCCP1M3@ (unsigned)&CCP1CON*8+3;//CCP1模式选择位
static volatile bitCCP1M2@ (unsigned)&CCP1CON*8+2;//CCP1模式选择位
static volatile bitCCP1M1@ (unsigned)&CCP1CON*8+1;//CCP1模式选择位
static volatile bitCCP1M0@ (unsigned)&CCP1CON*8+0;//CCP1模式选择位

//*RCSTA bitsUSART接收控制兼状态寄存器 */
static volatile bitSPEN@ (unsigned)&RCSTA*8+7;//串行端口使能位。0:禁止;1:使能。
static volatile bitRX9 @ (unsigned)&RCSTA*8+6;//接收数据长度选择位。0:接收8位数据;1:接收9位
static volatile bitSREN@ (unsigned)&RCSTA*8+5;//单字节使能选择位。0:禁止;1:使能。异步模式未使用
static volatile bitCREN@ (unsigned)&RCSTA*8+4;//连续接收使能选择位。0:禁止连续接收使能
static volatile bitADDEN@ (unsigned)&RCSTA*8+3;//地址匹配检测使能位。0:取消地址匹配检测
static volatile bitFERR@ (unsigned)&RCSTA*8+2;//帧格式错误标志位。0:未发生错误
static volatile bitOERR@ (unsigned)&RCSTA*8+1;//溢出标志位。0:未溢出
static volatile bitRX9D@ (unsigned)&RCSTA*8+0;//接收数据的第9位

/*CCP2CON bits*/
static volatile bitCCP2X@ (unsigned)&CCP2CON*8+5;//PWM最小信号位
static volatile bitCCP2Y@ (unsigned)&CCP2CON*8+4;//PWM最小信号位
static volatile bitCCP2M3@ (unsigned)&CCP2CON*8+3;//CCP2模式选择位
static volatile bitCCP2M2@ (unsigned)&CCP2CON*8+2;//CCP2模式选择位
static volatile bitCCP2M1@ (unsigned)&CCP2CON*8+1;//CCP2模式选择位
static volatile bitCCP2M0@ (unsigned)&CCP2CON*8+0;//CCP2模式选择位

//* ADCON0 bitsA/D控制寄存器位 */
static volatile bitADCS1@ (unsigned)&ADCON0*8+7;//选择A/D转换时钟。00:1/2;01:1/8;10:1/32;11:RC
static volatile bitADCS0 @ (unsigned)&ADCON0*8+6;//选择A/D转换时钟
static volatile bitCHS2@ (unsigned)&ADCON0*8+5;//AD模拟通道选择
static volatile bitCHS1@ (unsigned)&ADCON0*8+4;//AD模拟通道选择
static volatile bitCHS0@ (unsigned)&ADCON0*8+3;//AD模拟通道选择。000:选择信道0.
static volatile bitADGO@ (unsigned)&ADCON0*8+2;//A/D转换状态位,ADON=1时,0:不在进行ad转换;1:正在进行转换。
static volatile bitADON@ (unsigned)&ADCON0*8+0;//A/D转换器开关位,0:关闭;1:启动。

//* OPTION bits 选择寄存器 */
static bank1 bitRBPU@ (unsigned)&OPTION*8+7;//端口B上拉设置允许位
static bank1 bitINTEDG@ (unsigned)&OPTION*8+6;//外中断源选择位
static bank1 bitT0CS@ (unsigned)&OPTION*8+5;//时钟选择位。T0CS=0,使用内部时钟;T0CS=1,使用外部时钟。
static bank1 bitT0SE@ (unsigned)&OPTION*8+4;//计数器使用外部时钟,T0SE=0,上升沿触发;T0SE=1,下降沿触发。
static bank1 bitPSA@ (unsigned)&OPTION*8+3;//PSA=0,作为time0的预分频器;PSA=1,作为WDT的后分频器。
static bank1 bitPS2@ (unsigned)&OPTION*8+2;//PS2,PS1,PS0。预分频比例。000=1:2(Timer0)1:1(WDT)...
static bank1 bitPS1@ (unsigned)&OPTION*8+1;//
static bank1 bitPS0@ (unsigned)&OPTION*8+0;//

//* TRISA bits PORTA数据方向寄存器 */
static volatile bank1 bitTRISA5@ (unsigned)&TRISA*8+5;//
static volatile bank1 bitTRISA4@ (unsigned)&TRISA*8+4;//
static volatile bank1 bitTRISA3@ (unsigned)&TRISA*8+3;//
static volatile bank1 bitTRISA2@ (unsigned)&TRISA*8+2;//
static volatile bank1 bitTRISA1@ (unsigned)&TRISA*8+1;//
static volatile bank1 bitTRISA0@ (unsigned)&TRISA*8+0;//

//* TRISB bits PORTB数据方向寄存器 */
static volatile bank1 bitTRISB7@ (unsigned)&TRISB*8+7;//
static volatile bank1 bitTRISB6@ (unsigned)&TRISB*8+6;//
static volatile bank1 bitTRISB5@ (unsigned)&TRISB*8+5;//
static volatile bank1 bitTRISB4@ (unsigned)&TRISB*8+4;//
static volatile bank1 bitTRISB3@ (unsigned)&TRISB*8+3;//
static volatile bank1 bitTRISB2@ (unsigned)&TRISB*8+2;//
static volatile bank1 bitTRISB1@ (unsigned)&TRISB*8+1;//
static volatile bank1 bitTRISB0@ (unsigned)&TRISB*8+0;//

//* TRISC bits PORTC数据方向寄存器 */
static volatile bank1 bitTRISC7@ (unsigned)&TRISC*8+7;//
static volatile bank1 bitTRISC6@ (unsigned)&TRISC*8+6;//
static volatile bank1 bitTRISC5@ (unsigned)&TRISC*8+5;//
static volatile bank1 bitTRISC4@ (unsigned)&TRISC*8+4;//
static volatile bank1 bitTRISC3@ (unsigned)&TRISC*8+3;//
static volatile bank1 bitTRISC2@ (unsigned)&TRISC*8+2;//
static volatile bank1 bitTRISC1@ (unsigned)&TRISC*8+1;//
static volatile bank1 bitTRISC0@ (unsigned)&TRISC*8+0;//

#ifdef__PINS_40
//* TRISD bits PORTD数据方向寄存器 */
static volatile bank1 bitTRISD7@ (unsigned)&TRISD*8+7;//
static volatile bank1 bitTRISD6@ (unsigned)&TRISD*8+6;//
static volatile bank1 bitTRISD5@ (unsigned)&TRISD*8+5;//
static volatile bank1 bitTRISD4@ (unsigned)&TRISD*8+4;//
static volatile bank1 bitTRISD3@ (unsigned)&TRISD*8+3;//
static volatile bank1 bitTRISD2@ (unsigned)&TRISD*8+2;//
static volatile bank1 bitTRISD1@ (unsigned)&TRISD*8+1;//
static volatile bank1 bitTRISD0@ (unsigned)&TRISD*8+0;//

//* TRISE bits PORTE数据方向寄存器 */
static volatile bank1 bitIBF@ (unsigned)&TRISE*8+7;//
static volatile bank1 bitOBF@ (unsigned)&TRISE*8+6;//
static volatile bank1 bitIBOV@ (unsigned)&TRISE*8+5;//
static volatile bank1 bitPSPMODE@ (unsigned)&TRISE*8+4;//

static volatile bank1 bitTRISE2 @ (unsigned)&TRISE*8+2;//
static volatile bank1 bitTRISE1 @ (unsigned)&TRISE*8+1;//
static volatile bank1 bitTRISE0 @ (unsigned)&TRISE*8+0;//
#endif

//*PIE1 bits 外围中断独立使能位*/
#ifdef__PINS_40
static volatile bank1 bitPSPIE@ (unsigned)&PIE1*8+7;//并行从端口读写中断使能位。0:禁止psp读写中断
#endif
static volatile bank1 bitADIE@ (unsigned)&PIE1*8+6;//A/D转换器中断标志位。0:A/D转换没有完成;1:A/D转换完成。
static volatile bank1 bitRCIE@ (unsigned)&PIE1*8+5;//USART接收中断标志位。0:接收缓冲器空;1:反之。
static volatile bank1 bitTXIE@ (unsigned)&PIE1*8+4;////USART发送中断标志位。0:发生缓冲器满;1:反之。
static volatile bank1 bitSSPIE@ (unsigned)&PIE1*8+3;//同步串行端口中断使能位
static volatile bank1 bitCCP1IE@ (unsigned)&PIE1*8+2;//CCP1中断使能位
static volatile bank1 bitTMR2IE@ (unsigned)&PIE1*8+1;//TMR2 TO PR2匹配中断标志位。0:没有匹配发生
static volatile bank1 bitTMR1IE@ (unsigned)&PIE1*8+0;//TMR1溢出中断标志位,0:无溢出

/*PIE2 bits*/
static volatile bank1 bitCMIE@ (unsigned)&PIE2*8+6;//比较器中断使能位
static volatile bank1 bitEEIE@ (unsigned)&PIE2*8+4;//EEPROM写操作中断使能位
static volatile bank1 bitBCLIE@ (unsigned)&PIE2*8+3;//总线冲突中断使能位
static volatile bank1 bitCCP2IE@ (unsigned)&PIE2*8+0;//CCP2中断使能位

//*PCON bits 电源控制寄存器*/
static volatile bank1 bitPOR@ (unsigned)&PCON*8+1;//上电复位状态位
static volatile bank1 bitBOR@ (unsigned)&PCON*8+0;//掉电复位状态位

//*SSPCON2 bits MSSP控制寄存器2*/
static volatile bank1 bitGCEN@ (unsigned)&SSPCON2*8+7;//总调用使能位
static volatile bank1 bitACKSTAT@ (unsigned)&SSPCON2*8+6;//应答状态位
static volatile bank1 bitACKDT@ (unsigned)&SSPCON2*8+5;//应答数据位
static volatile bank1 bitACKEN@ (unsigned)&SSPCON2*8+4;//应答顺序使能位
static volatile bank1 bitRCEN@ (unsigned)&SSPCON2*8+3;//接收使能位
static volatile bank1 bitPEN@ (unsigned)&SSPCON2*8+2;//停止条件使能位
static volatile bank1 bitRSEN@ (unsigned)&SSPCON2*8+1;//重复开始条件使能位
static volatile bank1 bitSEN@ (unsigned)&SSPCON2*8+0;//开始条件使能位

//* SSPSTAT bits SPI同步串口状态寄存器 */
static volatile bank1 bitSTAT_SMP@ (unsigned)&SSPSTAT*8+7;//SPI采样控制位。SPI主控方式,STAT_SMP=0,在输出的数据中间采样输入数据,为1时,在末端采样;SPI从动方式,STAT_SMP必须置位。
static volatile bank1 bitSTAT_CKE@ (unsigned)&SSPSTAT*8+6;//SPI时钟沿选择,CKP=0时,STAT_CKE=0,SCK下降沿发送数据,STAT_CKE=1,SCK上升沿发送数据。CKP=1时,反之。
static volatile bank1 bitSTAT_DA@ (unsigned)&SSPSTAT*8+5;//数据/地址位
static volatile bank1 bitSTAT_P@ (unsigned)&SSPSTAT*8+4;//停止位
static volatile bank1 bitSTAT_S@ (unsigned)&SSPSTAT*8+3;//开始位
static volatile bank1 bitSTAT_RW@ (unsigned)&SSPSTAT*8+2;//读写位信息
static volatile bank1 bitSTAT_UA@ (unsigned)&SSPSTAT*8+1;//更新地址位
static volatile bank1 bitSTAT_BF@ (unsigned)&SSPSTAT*8+0;//缓冲器满标志位。STAT_BF=0,缓冲器空;STAT_BF=1,缓冲器满。

//*TXSTA bitsUSART发送控制兼状态寄存器*/
static volatile bank1 bitCSRC@ (unsigned)&TXSTA*8+7;//同步时钟选择位。0:选外部时钟;1:选内部时钟。异步模式未用。
static volatile bank1 bitTX9@ (unsigned)&TXSTA*8+6;//发生长度选择位。0:发送8位数据;1:发送9位
static volatile bank1 bitTXEN@ (unsigned)&TXSTA*8+5;//发生使能选择位。0:禁止发送;1:使能发生
static volatile bank1 bitSYNC@ (unsigned)&TXSTA*8+4;//同步/异步模式选择位。0:异步;1:同步
static volatile bank1 bitBRGH@ (unsigned)&TXSTA*8+2;//高速波特率选择位。0:低速;1:高速。
static volatile bank1 bitTRMT@ (unsigned)&TXSTA*8+1;//移位寄存器空标志位。0,发生移位寄存器满,1,为空。
static volatile bank1 bitTX9D@ (unsigned)&TXSTA*8+0;//发生第9位的选择位,0,不发生,1,发送。

//*CMCON Bits 比较器控制寄存器*/
static volatile bank1 bitC2OUT@ (unsigned)&CMCON*8+7;//比较器2输出位
static volatile bank1 bitC1OUT@ (unsigned)&CMCON*8+6;//比较器1输出位
static volatile bank1 bitC2INV@ (unsigned)&CMCON*8+5;//比较器3输出反向位
static volatile bank1 bitC1INV@ (unsigned)&CMCON*8+4;//比较器1输出反向位
static volatile bank1 bitCIS@ (unsigned)&CMCON*8+3;//比较器输入开关位
static volatile bank1 bitCM2@ (unsigned)&CMCON*8+2;//比较器模式位
static volatile bank1 bitCM1@ (unsigned)&CMCON*8+1;//比较器模式位
static volatile bank1 bitCM0@ (unsigned)&CMCON*8+0;//比较器模式位

//*CVRCON Bits 比较电压参考寄存器*/
static volatile bank1 bitCVREN@ (unsigned)&CVRCON*8+7;//比较器电压参考使能位
static volatile bank1 bitCVROE@ (unsigned)&CVRCON*8+6;//比较器Vref输出使能位
static volatile bank1 bitCVRR@ (unsigned)&CVRCON*8+5;//比较器Vref范围选择位
static volatile bank1 bitCVR3@ (unsigned)&CVRCON*8+3;//比较器Vref值选择位
static volatile bank1 bitCVR2@ (unsigned)&CVRCON*8+2;//比较器Vref值选择位
static volatile bank1 bitCVR1@ (unsigned)&CVRCON*8+1;//比较器Vref值选择位
static volatile bank1 bitCVR0@ (unsigned)&CVRCON*8+0;//比较器Vref值选择位

//*ADCON1 bitsADC控制寄存器ADCON1*/
static volatile bank1 bitADFM@ (unsigned)&ADCON1*8+7;//AD转换结果格式选择位
static volatile bank1 bitADCS2@ (unsigned)&ADCON1*8+6;//AD转换时钟选择位
static volatile bank1 bitPCFG3@ (unsigned)&ADCON1*8+3;//PCFG3-PCFG0AD转换引脚功能选择位。详细意义见手册PAGE-130.
static volatile bank1 bitPCFG2@ (unsigned)&ADCON1*8+2;
static volatile bank1 bitPCFG1@ (unsigned)&ADCON1*8+1;
static volatile bank1 bitPCFG0@ (unsigned)&ADCON1*8+0;

//*EECON1 bits EEPROM控制寄存器*/
static volatile bank3 bitEEPGD@ (unsigned)&EECON1*8+7;//程序/数据EEPROM选择位。0:选择访问数据存储器
static volatile bank3 bitWRERR@ (unsigned)&EECON1*8+3;//EEPROM错误标志位。0:写操作完成
static volatile bank3 bitWREN@ (unsigned)&EECON1*8+2;//EEPROM写使能位。1:允许
static volatile bank3 bitWR@ (unsigned)&EECON1*8+1;//写控制位
static volatile bank3 bitRD@ (unsigned)&EECON1*8+0;//读控制位


#define CONFIG_ADDR0x2007

/*osc configurations*/
#define RC0x3FFF// resistor/capacitor RC振荡器
#define HS0x3FFE// high speed crystal/resonator
#define XT0x3FFD// crystal/resonator
#define LP0x3FFC// low power crystal/resonator

/*watchdog*/
#define WDTEN0x3FFF// enable watchdog timer
#define WDTDIS0x3FFB// disable watchdog timer

/*power up timer*/
#define PWRTEN0x3FF7// enable power up timer
#define PWRTDIS0x3FFF// disable power up timer

/*brown out reset*/
#define BOREN0x3FFF// enable brown out reset
#define BORDIS0x3FBF// disable brown out reset

/*Low Voltage Programmable*/
#define LVPEN0x3FFF// low voltage programming enabled
#define LVPDIS0x3F7F// low voltage programming disabled

/*data code protected*/
#define DP0x3EFF// protect data code
// alternately
#define DPROT0x3EFF// use DP
#define DUNPROT0x3FFF// use UNPROTECT

/* Flash memory write enable/protect */
#define WRTEN0x3FFF/* flash memory write enabled */
#define WP10x3DFF /* protect 0000 - 00FF */
#define WP20x3BFF /* protect 0000 - 07FF(76A/77A) / 03FF(73A/74A) */
#define WP30x39FF /* protect 0000 - 1FFF(76A/77A) / 0FFF(73A/74A) */

/*debug option*/
#define DEBUGEN0x37FF// debugger enabled
#define DEBUGDIS0x3FFF// debugger disabled

/*code protection*/
#define PROTECT0x1FFF/* protect program code */
#define UNPROTECT0x3FFF/* do not protect the code */



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
发明专利在疫情影响下的逆势增长