//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/
|
|