配色: 字号:
PIC16F877A
2012-07-07 | 阅:  转:  |  分享 
  
//PIC16F877A.H头文件详细注释



/HeaderfilefortheMicrochip

PIC16F873Achip

PIC16F874Achip

PIC16F876Achip

PIC16F877Achip

MidrangeMicrocontroller

/



#ifdefined(_16F874A)||defined(_16F877A)

#define__PINS_40

#endif



staticvolatileunsignedcharINDF@0x00;//间接寻址寄存器

staticvolatileunsignedcharTMR0@0x01;//定时器0

staticvolatileunsignedcharPCL@0x02;//低8位程序计数器

staticvolatileunsignedcharSTATUS@0x03;//程序状态寄存器

staticunsignedcharFSR@0x04;//特殊功能寄存器

staticvolatileunsignedcharPORTA@0x05;//端口A寄存器

staticvolatileunsignedcharPORTB@0x06;//端口B寄存器

staticvolatileunsignedcharPORTC@0x07;//端口C寄存器

#ifdef__PINS_40

staticvolatileunsignedcharPORTD@0x08;//端口D寄存器

staticvolatileunsignedcharPORTE@0x09;//端口E寄存器

#endif

staticunsignedcharPCLATH@0x0A;//高5位程序计数器

staticvolatileunsignedcharINTCON@0x0B;//中断控制寄存器

staticvolatileunsignedcharPIR1@0x0C;//中断标志寄存器PIR1

staticvolatileunsignedcharPIR2@0x0D;//中断标志寄存器PIR2

staticvolatileunsignedcharTMR1L@0x0E;//低字节计数寄存器

staticvolatileunsignedcharTMR1H@0x0F;//高字节计数寄存器

staticvolatileunsignedcharT1CON@0x10;//TMR1控制寄存器

staticvolatileunsignedcharTMR2@0x11;//定时/计数器TMR2

staticvolatileunsignedcharT2CON@0x12;//TMR2控制寄存器

staticvolatileunsignedcharSSPBUF@0x13;//收/发数据缓冲器

staticvolatileunsignedcharSSPCON@0x14;//同步串口控制寄存器,对MSSP模块的功能和指标进行设置和定义。

staticvolatileunsignedcharCCPR1L@0x15;//捕获/比较/PWM寄存器低字节

staticvolatileunsignedcharCCPR1H@0x16;//捕获/比较/PWM寄存器低字节

staticvolatileunsignedcharCCP1CON@0x17;//CCP1CON寄存器

staticvolatileunsignedcharRCSTA@0x18;//USART接收控制兼状态寄存器

staticvolatileunsignedcharTXREG@0x19;//USART发生缓冲器

staticvolatileunsignedcharRCREG@0x1A;//USART接收缓冲器

staticvolatileunsignedcharCCPR2L@0x1B;//捕获/比较/PWM寄存器低字节

staticvolatileunsignedcharCCPR2H@0x1C;//捕获/比较/PWM寄存器低字节

staticvolatileunsignedcharCCP2CON@0x1D;//CCP2CON寄存器

staticvolatileunsignedcharADRESH@0x1E;//ADC转换结果寄存器高字节

staticvolatileunsignedcharADCON0@0x1F;//A/D转换器开关位。



/bank1registers/

staticunsignedcharbank1OPTION@0x81;//选择寄存器,用于配置TMR0/WDT预分频系数、外部INT中断、TMR0和端口B的弱上拉。

staticvolatileunsignedcharbank1TRISA@0x85;//A口方向寄存器

staticvolatileunsignedcharbank1TRISB@0x86;//B口方向寄存器

staticvolatileunsignedcharbank1TRISC@0x87;//C口方向寄存器

#ifdef__PINS_40

staticvolatileunsignedcharbank1TRISD@0x88;//D口方向寄存器

staticvolatileunsignedcharbank1TRISE@0x89;//E口方向寄存器

#endif

staticvolatileunsignedcharbank1PIE1@0x8C;//中断允许寄存器PIE1

staticvolatileunsignedcharbank1PIE2@0x8D;//中断允许寄存器PIE2

staticvolatileunsignedcharbank1PCON@0x8E;//电源控制状态寄存器

staticvolatileunsignedcharbank1SSPCON2@0x91;//MSSP控制寄存器2

staticvolatileunsignedcharbank1PR2@0x92;//TMR2周期寄存器

staticvolatileunsignedcharbank1SSPADD@0x93;//同步串口地址寄存器

staticvolatileunsignedcharbank1SSPSTAT@0x94;//同步串口状态寄存器

staticvolatileunsignedcharbank1TXSTA@0x98;//USART发生控制兼状态寄存器

staticvolatileunsignedcharbank1SPBRG@0x99;//USART波特率发生器初值寄存器

staticvolatileunsignedcharbank1CMCON@0x9C;//比较控制寄存器

staticvolatileunsignedcharbank1CVRCON@0x9D;//比较电压参考控制寄存器

staticvolatileunsignedcharbank1ADRESL@0x9E;//ADC转换结果寄存器低字节

staticvolatileunsignedcharbank1ADCON1@0x9F;//ADC控制寄存器ADCON1



/bank2registers/

staticvolatileunsignedcharbank2EEDATA@0x10C;//EEPROM数据寄存器低字节

staticvolatileunsignedcharbank2EEADR@0x10D;//EEPROM地址寄存器低字节

staticvolatileunsignedcharbank2EEDATH@0x10E;//EEPROM数据寄存器高字节

staticvolatileunsignedcharbank2EEADRH@0x10F;//EEPROM地址寄存器高字节



/bank3registers/

staticvolatileunsignedcharbank3EECON1@0x18C;//EEPROM控制寄存器1

staticvolatileunsignedcharbank3EECON2@0x18D;//EEPROM控制寄存器2



//STATUSbits状态寄存器/

staticvolatilebitIRP@(unsigned)&STATUS8+7;//寄存器bank选择位(用于间接寻址)。0:bank0,1;1:bank2,3

staticvolatilebitRP1@(unsigned)&STATUS8+6;//寄存器bank选择位(用于直接寻址)。PR1:PR0:00:BANK0;01:BANK1;10:BANK2;11BANK3.

staticvolatilebitRP0@(unsigned)&STATUS8+5;//

staticvolatilebitTO@(unsigned)&STATUS8+4;//超时位。0:WDT超时发生;1:上电后,执行了CLRWDT或者SLEEP指令

staticvolatilebitPD@(unsigned)&STATUS8+3;//掉电标志位。0:执行完SLEEP指令;1:上电后或者执行CLRWDT指令

staticvolatilebitZERO@(unsigned)&STATUS8+2;//零标志位。0:算术或逻辑操作结果不为0;1:反之。

staticvolatilebitDC@(unsigned)&STATUS8+1;//数字进位/退位标志位。0:结果的低4位没有发生进位;1:反之。

staticvolatilebitCARRY@(unsigned)&STATUS8+0;//进位/退位标志位。0:结果的高4位没有发生进位;1:反之。



/PORTAbits/

staticvolatilebitRA5@(unsigned)&PORTA8+5;//RA5

staticvolatilebitRA4@(unsigned)&PORTA8+4;//RA4

staticvolatilebitRA3@(unsigned)&PORTA8+3;//RA3

staticvolatilebitRA2@(unsigned)&PORTA8+2;//RA2

staticvolatilebitRA1@(unsigned)&PORTA8+1;//RA1

staticvolatilebitRA0@(unsigned)&PORTA8+0;//RA0



/PORTBbits/

staticvolatilebitRB7@(unsigned)&PORTB8+7;//RB7

staticvolatilebitRB6@(unsigned)&PORTB8+6;//RB6

staticvolatilebitRB5@(unsigned)&PORTB8+5;//RB5

staticvolatilebitRB4@(unsigned)&PORTB8+4;//RB4

staticvolatilebitRB3@(unsigned)&PORTB8+3;//RB3

staticvolatilebitRB2@(unsigned)&PORTB8+2;//RB2

staticvolatilebitRB1@(unsigned)&PORTB8+1;//RB1

staticvolatilebitRB0@(unsigned)&PORTB8+0;//RB0



/PORTCbits/

staticvolatilebitRC7@(unsigned)&PORTC8+7;//RC7

staticvolatilebitRC6@(unsigned)&PORTC8+6;//RC6

staticvolatilebitRC5@(unsigned)&PORTC8+5;//RC5

staticvolatilebitRC4@(unsigned)&PORTC8+4;//RC4

staticvolatilebitRC3@(unsigned)&PORTC8+3;//RC3

staticvolatilebitRC2@(unsigned)&PORTC8+2;//RC2

staticvolatilebitRC1@(unsigned)&PORTC8+1;//RC1

staticvolatilebitRC0@(unsigned)&PORTC8+0;//RC0



/PORTDbits/

#ifdef__PINS_40

staticvolatilebitRD7@(unsigned)&PORTD8+7;//RD7

staticvolatilebitRD6@(unsigned)&PORTD8+6;//RD6

staticvolatilebitRD5@(unsigned)&PORTD8+5;//RD5

staticvolatilebitRD4@(unsigned)&PORTD8+4;//RD4

staticvolatilebitRD3@(unsigned)&PORTD8+3;//RD3

staticvolatilebitRD2@(unsigned)&PORTD8+2;//RD2

staticvolatilebitRD1@(unsigned)&PORTD8+1;//RD1

staticvolatilebitRD0@(unsigned)&PORTD8+0;//RD0



/PORTEbits/

staticvolatilebitRE2@(unsigned)&PORTE8+2;//RE2

staticvolatilebitRE1@(unsigned)&PORTE8+1;//RE1

staticvolatilebitRE0@(unsigned)&PORTE8+0;//RE0

#endif



//INTCONbits中断控制寄存器/

staticvolatilebitGIE@(unsigned)&INTCON8+7;//总中断使能位。0:屏蔽所有的中断请求;1:允许非屏蔽的中断。

staticvolatilebitPEIE@(unsigned)&INTCON8+6;//外部中断使能位。0:禁止;1:使能

staticvolatilebitT0IE@(unsigned)&INTCON8+5;//TMR0溢出中断使能位。0:禁止;1:使能

staticvolatilebitINTE@(unsigned)&INTCON8+4;//RB0/INT外部中断使能位。0:不使能;1:使能。

staticvolatilebitRBIE@(unsigned)&INTCON8+3;//RB端口变化中断时能位。0:不使能;1:使能。

staticvolatilebitT0IF@(unsigned)&INTCON8+2;//TMR0溢出中断标志位。0:无溢出;1:溢出。

staticvolatilebitINTF@(unsigned)&INTCON8+1;//RB0/INT外部中断标志位。0:RB0外部中断未发生;1:RB0外部中断发生。

staticvolatilebitRBIF@(unsigned)&INTCON8+0;//RB端口变化中断标志位。0:RB口无变化;1:RB口至少有一个引脚变化。

//alternatedefinitions

staticvolatilebitTMR0IE@(unsigned)&INTCON8+5;//

staticvolatilebitTMR0IF@(unsigned)&INTCON8+2;//



//PIR1bits中断标志寄存器PIR1/

#ifdef__PINS_40

staticvolatilebitPSPIF@(unsigned)&PIR18+7;//并行从端口读写中断标志位。0:没有读写操作发生;1:反之

#endif

staticvolatilebitADIF@(unsigned)&PIR18+6;//A/D转换器中断标志位。0:A/D转换没有完成;1:A/D转换完成。

staticvolatilebitRCIF@(unsigned)&PIR18+5;//USART接收中断标志位。0:接收缓冲器空;1:反之。

staticvolatilebitTXIF@(unsigned)&PIR18+4;//USART发送中断标志位。0:发生缓冲器满;1:反之。

staticvolatilebitSSPIF@(unsigned)&PIR18+3;//同步串行端口(ssp)中断标志位。0:没有ssp中断条件发生;

staticvolatilebitCCP1IF@(unsigned)&PIR18+2;//CCP1中断标志位。

staticvolatilebitTMR2IF@(unsigned)&PIR18+1;//TMR2TOPR2匹配中断标志位。0:没有匹配发生

staticvolatilebitTMR1IF@(unsigned)&PIR18+0;//TMR1溢出中断标志位,0:无溢出



/PIR2bits/

staticvolatilebitCMIF@(unsigned)&PIR28+6;//比较器中断标志位;0:比较器输入没有改变

staticvolatilebitEEIF@(unsigned)&PIR28+4;//EEPROM写操作中断标志位。0:写操作没有完成或没有开始

staticvolatilebitBCLIF@(unsigned)&PIR28+3;//总线冲突中断标志位。0:没有总线冲突发生

staticvolatilebitCCP2IF@(unsigned)&PIR28+0;//CCP2中断标志位



//T1CONbitsTMR1控制寄存器/

staticvolatilebitT1CKPS1@(unsigned)&T1CON8+5;//TMR1输入时钟预分频选择位

staticvolatilebitT1CKPS0@(unsigned)&T1CON8+4;//TMR1输入时钟预分频选择位

staticvolatilebitT1OSCEN@(unsigned)&T1CON8+3;//TMR1震荡器使能控制位。0:振荡器关闭

staticvolatilebitT1SYNC@(unsigned)&T1CON8+2;//TMR1外部时钟输入同步控制位。

staticvolatilebitTMR1CS@(unsigned)&T1CON8+1;//TMR1时钟源选择位。0:内部时钟的/4

staticvolatilebitTMR1ON@(unsigned)&T1CON8+0;//TMR1使能位。0:禁止



//T2CONbitsTMR2控制寄存器/

staticvolatilebitTOUTPS3@(unsigned)&T2CON8+6;//TMR2后分频选择位。

staticvolatilebitTOUTPS2@(unsigned)&T2CON8+5;//TMR2后分频选择位

staticvolatilebitTOUTPS1@(unsigned)&T2CON8+4;//TMR2后分频选择位

staticvolatilebitTOUTPS0@(unsigned)&T2CON8+3;//TMR2后分频选择位。

staticvolatilebitTMR2ON@(unsigned)&T2CON8+2;//TMR2使能位。

staticvolatilebitT2CKPS1@(unsigned)&T2CON8+1;//TMR2预分频选择位。

staticvolatilebitT2CKPS0@(unsigned)&T2CON8+0;//TMR2预分频选择位



//SSPCONbitsSPI同步串口控制寄存器/

staticvolatilebitWCOL@(unsigned)&SSPCON8+7;//写操作冲突检测位,在SPI从动方式下,WCOL=0,未发生冲突,WCOL=1,发生冲突。

staticvolatilebitSSPOV@(unsigned)&SSPCON8+6;//接收溢出标志位,SSPOV=0,未发生接收溢出;SSPOV=1,发生接受溢出。

staticvolatilebitSSPEN@(unsigned)&SSPCON8+5;//同步串口MSSP允许位,SSPEN=0,关闭串口;SSPEN=1,允许串行端口功能。

staticvolatilebitCKP@(unsigned)&SSPCON8+4;//时钟极性选择位,CKP=0,空闲时时钟停留在低电平;CKP=1,空闲时时钟停留在高电平。

staticvolatilebitSSPM3@(unsigned)&SSPCON8+3;//同步串行口MSSP方式选择位,主动参数。0,1,2,3,4.

staticvolatilebitSSPM2@(unsigned)&SSPCON8+2;

staticvolatilebitSSPM1@(unsigned)&SSPCON8+1;

staticvolatilebitSSPM0@(unsigned)&SSPCON8+0;



/CCP1CONbits/

staticvolatilebitCCP1X@(unsigned)&CCP1CON8+5;//PWM最小信号位

staticvolatilebitCCP1Y@(unsigned)&CCP1CON8+4;//PWM最小信号位

staticvolatilebitCCP1M3@(unsigned)&CCP1CON8+3;//CCP1模式选择位

staticvolatilebitCCP1M2@(unsigned)&CCP1CON8+2;//CCP1模式选择位

staticvolatilebitCCP1M1@(unsigned)&CCP1CON8+1;//CCP1模式选择位

staticvolatilebitCCP1M0@(unsigned)&CCP1CON8+0;//CCP1模式选择位



//RCSTAbitsUSART接收控制兼状态寄存器/

staticvolatilebitSPEN@(unsigned)&RCSTA8+7;//串行端口使能位。0:禁止;1:使能。

staticvolatilebitRX9@(unsigned)&RCSTA8+6;//接收数据长度选择位。0:接收8位数据;1:接收9位

staticvolatilebitSREN@(unsigned)&RCSTA8+5;//单字节使能选择位。0:禁止;1:使能。异步模式未使用

staticvolatilebitCREN@(unsigned)&RCSTA8+4;//连续接收使能选择位。0:禁止连续接收使能

staticvolatilebitADDEN@(unsigned)&RCSTA8+3;//地址匹配检测使能位。0:取消地址匹配检测

staticvolatilebitFERR@(unsigned)&RCSTA8+2;//帧格式错误标志位。0:未发生错误

staticvolatilebitOERR@(unsigned)&RCSTA8+1;//溢出标志位。0:未溢出

staticvolatilebitRX9D@(unsigned)&RCSTA8+0;//接收数据的第9位



/CCP2CONbits/

staticvolatilebitCCP2X@(unsigned)&CCP2CON8+5;//PWM最小信号位

staticvolatilebitCCP2Y@(unsigned)&CCP2CON8+4;//PWM最小信号位

staticvolatilebitCCP2M3@(unsigned)&CCP2CON8+3;//CCP2模式选择位

staticvolatilebitCCP2M2@(unsigned)&CCP2CON8+2;//CCP2模式选择位

staticvolatilebitCCP2M1@(unsigned)&CCP2CON8+1;//CCP2模式选择位

staticvolatilebitCCP2M0@(unsigned)&CCP2CON8+0;//CCP2模式选择位



//ADCON0bitsA/D控制寄存器位/

staticvolatilebitADCS1@(unsigned)&ADCON08+7;//选择A/D转换时钟。00:1/2;01:1/8;10:1/32;11:RC

staticvolatilebitADCS0@(unsigned)&ADCON08+6;//选择A/D转换时钟

staticvolatilebitCHS2@(unsigned)&ADCON08+5;//AD模拟通道选择

staticvolatilebitCHS1@(unsigned)&ADCON08+4;//AD模拟通道选择

staticvolatilebitCHS0@(unsigned)&ADCON08+3;//AD模拟通道选择。000:选择信道0.

staticvolatilebitADGO@(unsigned)&ADCON08+2;//A/D转换状态位,ADON=1时,0:不在进行ad转换;1:正在进行转换。

staticvolatilebitADON@(unsigned)&ADCON08+0;//A/D转换器开关位,0:关闭;1:启动。



//OPTIONbits选择寄存器/

staticbank1bitRBPU@(unsigned)&OPTION8+7;//端口B上拉设置允许位

staticbank1bitINTEDG@(unsigned)&OPTION8+6;//外中断源选择位

staticbank1bitT0CS@(unsigned)&OPTION8+5;//时钟选择位。T0CS=0,使用内部时钟;T0CS=1,使用外部时钟。

staticbank1bitT0SE@(unsigned)&OPTION8+4;//计数器使用外部时钟,T0SE=0,上升沿触发;T0SE=1,下降沿触发。

staticbank1bitPSA@(unsigned)&OPTION8+3;//PSA=0,作为time0的预分频器;PSA=1,作为WDT的后分频器。

staticbank1bitPS2@(unsigned)&OPTION8+2;//PS2,PS1,PS0。预分频比例。000=1:2(Timer0)1:1(WDT)...

staticbank1bitPS1@(unsigned)&OPTION8+1;//

staticbank1bitPS0@(unsigned)&OPTION8+0;//



//TRISAbitsPORTA数据方向寄存器/

staticvolatilebank1bitTRISA5@(unsigned)&TRISA8+5;//

staticvolatilebank1bitTRISA4@(unsigned)&TRISA8+4;//

staticvolatilebank1bitTRISA3@(unsigned)&TRISA8+3;//

staticvolatilebank1bitTRISA2@(unsigned)&TRISA8+2;//

staticvolatilebank1bitTRISA1@(unsigned)&TRISA8+1;//

staticvolatilebank1bitTRISA0@(unsigned)&TRISA8+0;//



//TRISBbitsPORTB数据方向寄存器/

staticvolatilebank1bitTRISB7@(unsigned)&TRISB8+7;//

staticvolatilebank1bitTRISB6@(unsigned)&TRISB8+6;//

staticvolatilebank1bitTRISB5@(unsigned)&TRISB8+5;//

staticvolatilebank1bitTRISB4@(unsigned)&TRISB8+4;//

staticvolatilebank1bitTRISB3@(unsigned)&TRISB8+3;//

staticvolatilebank1bitTRISB2@(unsigned)&TRISB8+2;//

staticvolatilebank1bitTRISB1@(unsigned)&TRISB8+1;//

staticvolatilebank1bitTRISB0@(unsigned)&TRISB8+0;//



//TRISCbitsPORTC数据方向寄存器/

staticvolatilebank1bitTRISC7@(unsigned)&TRISC8+7;//

staticvolatilebank1bitTRISC6@(unsigned)&TRISC8+6;//

staticvolatilebank1bitTRISC5@(unsigned)&TRISC8+5;//

staticvolatilebank1bitTRISC4@(unsigned)&TRISC8+4;//

staticvolatilebank1bitTRISC3@(unsigned)&TRISC8+3;//

staticvolatilebank1bitTRISC2@(unsigned)&TRISC8+2;//

staticvolatilebank1bitTRISC1@(unsigned)&TRISC8+1;//

staticvolatilebank1bitTRISC0@(unsigned)&TRISC8+0;//



#ifdef__PINS_40

//TRISDbitsPORTD数据方向寄存器/

staticvolatilebank1bitTRISD7@(unsigned)&TRISD8+7;//

staticvolatilebank1bitTRISD6@(unsigned)&TRISD8+6;//

staticvolatilebank1bitTRISD5@(unsigned)&TRISD8+5;//

staticvolatilebank1bitTRISD4@(unsigned)&TRISD8+4;//

staticvolatilebank1bitTRISD3@(unsigned)&TRISD8+3;//

staticvolatilebank1bitTRISD2@(unsigned)&TRISD8+2;//

staticvolatilebank1bitTRISD1@(unsigned)&TRISD8+1;//

staticvolatilebank1bitTRISD0@(unsigned)&TRISD8+0;//



//TRISEbitsPORTE数据方向寄存器/

staticvolatilebank1bitIBF@(unsigned)&TRISE8+7;//

staticvolatilebank1bitOBF@(unsigned)&TRISE8+6;//

staticvolatilebank1bitIBOV@(unsigned)&TRISE8+5;//

staticvolatilebank1bitPSPMODE@(unsigned)&TRISE8+4;//



staticvolatilebank1bitTRISE2@(unsigned)&TRISE8+2;//

staticvolatilebank1bitTRISE1@(unsigned)&TRISE8+1;//

staticvolatilebank1bitTRISE0@(unsigned)&TRISE8+0;//

#endif



//PIE1bits外围中断独立使能位/

#ifdef__PINS_40

staticvolatilebank1bitPSPIE@(unsigned)&PIE18+7;//并行从端口读写中断使能位。0:禁止psp读写中断

#endif

staticvolatilebank1bitADIE@(unsigned)&PIE18+6;//A/D转换器中断标志位。0:A/D转换没有完成;1:A/D转换完成。

staticvolatilebank1bitRCIE@(unsigned)&PIE18+5;//USART接收中断标志位。0:接收缓冲器空;1:反之。

staticvolatilebank1bitTXIE@(unsigned)&PIE18+4;////USART发送中断标志位。0:发生缓冲器满;1:反之。

staticvolatilebank1bitSSPIE@(unsigned)&PIE18+3;//同步串行端口中断使能位

staticvolatilebank1bitCCP1IE@(unsigned)&PIE18+2;//CCP1中断使能位

staticvolatilebank1bitTMR2IE@(unsigned)&PIE18+1;//TMR2TOPR2匹配中断标志位。0:没有匹配发生

staticvolatilebank1bitTMR1IE@(unsigned)&PIE18+0;//TMR1溢出中断标志位,0:无溢出



/PIE2bits/

staticvolatilebank1bitCMIE@(unsigned)&PIE28+6;//比较器中断使能位

staticvolatilebank1bitEEIE@(unsigned)&PIE28+4;//EEPROM写操作中断使能位

staticvolatilebank1bitBCLIE@(unsigned)&PIE28+3;//总线冲突中断使能位

staticvolatilebank1bitCCP2IE@(unsigned)&PIE28+0;//CCP2中断使能位



//PCONbits电源控制寄存器/

staticvolatilebank1bitPOR@(unsigned)&PCON8+1;//上电复位状态位

staticvolatilebank1bitBOR@(unsigned)&PCON8+0;//掉电复位状态位



//SSPCON2bitsMSSP控制寄存器2/

staticvolatilebank1bitGCEN@(unsigned)&SSPCON28+7;//总调用使能位

staticvolatilebank1bitACKSTAT@(unsigned)&SSPCON28+6;//应答状态位

staticvolatilebank1bitACKDT@(unsigned)&SSPCON28+5;//应答数据位

staticvolatilebank1bitACKEN@(unsigned)&SSPCON28+4;//应答顺序使能位

staticvolatilebank1bitRCEN@(unsigned)&SSPCON28+3;//接收使能位

staticvolatilebank1bitPEN@(unsigned)&SSPCON28+2;//停止条件使能位

staticvolatilebank1bitRSEN@(unsigned)&SSPCON28+1;//重复开始条件使能位

staticvolatilebank1bitSEN@(unsigned)&SSPCON28+0;//开始条件使能位



//SSPSTATbitsSPI同步串口状态寄存器/

staticvolatilebank1bitSTAT_SMP@(unsigned)&SSPSTAT8+7;//SPI采样控制位。SPI主控方式,STAT_SMP=0,在输出的数据中间采样输入数据,为1时,在末端采样;SPI从动方式,STAT_SMP必须置位。

staticvolatilebank1bitSTAT_CKE@(unsigned)&SSPSTAT8+6;//SPI时钟沿选择,CKP=0时,STAT_CKE=0,SCK下降沿发送数据,STAT_CKE=1,SCK上升沿发送数据。CKP=1时,反之。

staticvolatilebank1bitSTAT_DA@(unsigned)&SSPSTAT8+5;//数据/地址位

staticvolatilebank1bitSTAT_P@(unsigned)&SSPSTAT8+4;//停止位

staticvolatilebank1bitSTAT_S@(unsigned)&SSPSTAT8+3;//开始位

staticvolatilebank1bitSTAT_RW@(unsigned)&SSPSTAT8+2;//读写位信息

staticvolatilebank1bitSTAT_UA@(unsigned)&SSPSTAT8+1;//更新地址位

staticvolatilebank1bitSTAT_BF@(unsigned)&SSPSTAT8+0;//缓冲器满标志位。STAT_BF=0,缓冲器空;STAT_BF=1,缓冲器满。



//TXSTAbitsUSART发送控制兼状态寄存器/

staticvolatilebank1bitCSRC@(unsigned)&TXSTA8+7;//同步时钟选择位。0:选外部时钟;1:选内部时钟。异步模式未用。

staticvolatilebank1bitTX9@(unsigned)&TXSTA8+6;//发生长度选择位。0:发送8位数据;1:发送9位

staticvolatilebank1bitTXEN@(unsigned)&TXSTA8+5;//发生使能选择位。0:禁止发送;1:使能发生

staticvolatilebank1bitSYNC@(unsigned)&TXSTA8+4;//同步/异步模式选择位。0:异步;1:同步

staticvolatilebank1bitBRGH@(unsigned)&TXSTA8+2;//高速波特率选择位。0:低速;1:高速。

staticvolatilebank1bitTRMT@(unsigned)&TXSTA8+1;//移位寄存器空标志位。0,发生移位寄存器满,1,为空。

staticvolatilebank1bitTX9D@(unsigned)&TXSTA8+0;//发生第9位的选择位,0,不发生,1,发送。



//CMCONBits比较器控制寄存器/

staticvolatilebank1bitC2OUT@(unsigned)&CMCON8+7;//比较器2输出位

staticvolatilebank1bitC1OUT@(unsigned)&CMCON8+6;//比较器1输出位

staticvolatilebank1bitC2INV@(unsigned)&CMCON8+5;//比较器3输出反向位

staticvolatilebank1bitC1INV@(unsigned)&CMCON8+4;//比较器1输出反向位

staticvolatilebank1bitCIS@(unsigned)&CMCON8+3;//比较器输入开关位

staticvolatilebank1bitCM2@(unsigned)&CMCON8+2;//比较器模式位

staticvolatilebank1bitCM1@(unsigned)&CMCON8+1;//比较器模式位

staticvolatilebank1bitCM0@(unsigned)&CMCON8+0;//比较器模式位



//CVRCONBits比较电压参考寄存器/

staticvolatilebank1bitCVREN@(unsigned)&CVRCON8+7;//比较器电压参考使能位

staticvolatilebank1bitCVROE@(unsigned)&CVRCON8+6;//比较器Vref输出使能位

staticvolatilebank1bitCVRR@(unsigned)&CVRCON8+5;//比较器Vref范围选择位

staticvolatilebank1bitCVR3@(unsigned)&CVRCON8+3;//比较器Vref值选择位

staticvolatilebank1bitCVR2@(unsigned)&CVRCON8+2;//比较器Vref值选择位

staticvolatilebank1bitCVR1@(unsigned)&CVRCON8+1;//比较器Vref值选择位

staticvolatilebank1bitCVR0@(unsigned)&CVRCON8+0;//比较器Vref值选择位



//ADCON1bitsADC控制寄存器ADCON1/

staticvolatilebank1bitADFM@(unsigned)&ADCON18+7;//AD转换结果格式选择位

staticvolatilebank1bitADCS2@(unsigned)&ADCON18+6;//AD转换时钟选择位

staticvolatilebank1bitPCFG3@(unsigned)&ADCON18+3;//PCFG3-PCFG0AD转换引脚功能选择位。详细意义见手册PAGE-130.

staticvolatilebank1bitPCFG2@(unsigned)&ADCON18+2;

staticvolatilebank1bitPCFG1@(unsigned)&ADCON18+1;

staticvolatilebank1bitPCFG0@(unsigned)&ADCON18+0;



//EECON1bitsEEPROM控制寄存器/

staticvolatilebank3bitEEPGD@(unsigned)&EECON18+7;//程序/数据EEPROM选择位。0:选择访问数据存储器

staticvolatilebank3bitWRERR@(unsigned)&EECON18+3;//EEPROM错误标志位。0:写操作完成

staticvolatilebank3bitWREN@(unsigned)&EECON18+2;//EEPROM写使能位。1:允许

staticvolatilebank3bitWR@(unsigned)&EECON18+1;//写控制位

staticvolatilebank3bitRD@(unsigned)&EECON18+0;//读控制位





#defineCONFIG_ADDR0x2007



/oscconfigurations/

#defineRC0x3FFF//resistor/capacitorRC振荡器

#defineHS0x3FFE//highspeedcrystal/resonator

#defineXT0x3FFD//crystal/resonator

#defineLP0x3FFC//lowpowercrystal/resonator



/watchdog/

#defineWDTEN0x3FFF//enablewatchdogtimer

#defineWDTDIS0x3FFB//disablewatchdogtimer



/poweruptimer/

#definePWRTEN0x3FF7//enablepoweruptimer

#definePWRTDIS0x3FFF//disablepoweruptimer



/brownoutreset/

#defineBOREN0x3FFF//enablebrownoutreset

#defineBORDIS0x3FBF//disablebrownoutreset



/LowVoltageProgrammable/

#defineLVPEN0x3FFF//lowvoltageprogrammingenabled

#defineLVPDIS0x3F7F//lowvoltageprogrammingdisabled



/datacodeprotected/

#defineDP0x3EFF//protectdatacode

//alternately

#defineDPROT0x3EFF//useDP

#defineDUNPROT0x3FFF//useUNPROTECT



/Flashmemorywriteenable/protect/

#defineWRTEN0x3FFF/flashmemorywriteenabled/

#defineWP10x3DFF/protect0000-00FF/

#defineWP20x3BFF/protect0000-07FF(76A/77A)/03FF(73A/74A)/

#defineWP30x39FF/protect0000-1FFF(76A/77A)/0FFF(73A/74A)/



/debugoption/

#defineDEBUGEN0x37FF//debuggerenabled

#defineDEBUGDIS0x3FFF//debuggerdisabled



/codeprotection/

#definePROTECT0x1FFF/protectprogramcode/

#defineUNPROTECT0x3FFF/donotprotectthecode/



献花(0)
+1
(本文系chun68tian首藏)