PIC单片机头文件注解.docx
《PIC单片机头文件注解.docx》由会员分享,可在线阅读,更多相关《PIC单片机头文件注解.docx(15页珍藏版)》请在冰豆网上搜索。
PIC单片机头文件注解
PIC单片机头文件注解
/*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)&STATUS*8+7;//寄存器bank选择位(用于间接寻址)。
0:
bank0,1;1:
bank2,3
staticvolatilebitRP1@(unsigned)&STATUS*8+6;//寄存器bank选择位(用于直接寻址)。
PR1:
PR0:
00:
BANK0;01:
BANK1;10:
BANK2;11BANK3.
staticvolatilebitRP0@(unsigned)&STATUS*8+5;//
staticvolatilebitTO@(unsigned)&STATUS*8+4;//超时位。
0:
WDT超时发生;1:
上电后,执行了CLRWDT或者SLEEP指令
staticvolatilebitPD@(unsigned)&STATUS*8+3;//掉电标志位。
0:
执行完SLEEP指令;1:
上电后或者执行CLRWDT指令
staticvolatilebitZERO@(unsigned)&STATUS*8+2;//零标志位。
0:
算术或逻辑操作结果不为0;1:
反之。
staticvolatilebitDC@(unsigned)&STATUS*8+1;//数字进位/退位标志位。
0:
结果的低4位没有发生进位;1:
反之。
staticvolatilebitCARRY@(unsigned)&STATUS*8+0;//进位/退位标志位。
0:
结果的高4位没有发生进位;1:
反之。
/*PORTAbits*/
staticvolatilebitRA5@(unsigned)&PORTA*8+5;//RA5
staticvolatilebitRA4@(unsigned)&PORTA*8+4;//RA4
staticvolatilebitRA3@(unsigned)&PORTA*8+3;//RA3
staticvolatilebitRA2@(unsigned)&PORTA*8+2;//RA2
staticvolatilebitRA1@(unsigned)&PORTA*8+1;//RA1
staticvolatilebitRA0@(unsigned)&PORTA*8+0;//RA0
/*PORTBbits*/
staticvolatilebitRB7@(unsigned)&PORTB*8+7;//RB7
staticvolatilebitRB6@(unsigned)&PORTB*8+6;//RB6
staticvolatilebitRB5@(unsigned)&PORTB*8+5;//RB5
staticvolatilebitRB4@(unsigned)&PORTB*8+4;//RB4
staticvolatilebitRB3@(unsigned)&PORTB*8+3;//RB3
staticvolatilebitRB2@(unsigned)&PORTB*8+2;//RB2
staticvolatilebitRB1@(unsigned)&PORTB*8+1;//RB1
staticvolatilebitRB0@(unsigned)&PORTB*8+0;//RB0
/*PORTCbits*/
staticvolatilebitRC7@(unsigned)&PORTC*8+7;//RC7
staticvolatilebitRC6@(unsigned)&PORTC*8+6;//RC6
staticvolatilebitRC5@(unsigned)&PORTC*8+5;//RC5
staticvolatilebitRC4@(unsigned)&PORTC*8+4;//RC4
staticvolatilebitRC3@(unsigned)&PORTC*8+3;//RC3
staticvolatilebitRC2@(unsigned)&PORTC*8+2;//RC2
staticvolatilebitRC1@(unsigned)&PORTC*8+1;//RC1
staticvolatilebitRC0@(unsigned)&PORTC*8+0;//RC0
/*PORTDbits*/
#ifdef__PINS_40
staticvolatilebitRD7@(unsigned)&PORTD*8+7;//RD7
staticvolatilebitRD6@(unsigned)&PORTD*8+6;//RD6
staticvolatilebitRD5@(unsigned)&PORTD*8+5;//RD5
staticvolatilebitRD4@(unsigned)&PORTD*8+4;//RD4
staticvolatilebitRD3@(unsigned)&PORTD*8+3;//RD3
staticvolatilebitRD2@(unsigned)&PORTD*8+2;//RD2
staticvolatilebitRD1@(unsigned)&PORTD*8+1;//RD1
staticvolatilebitRD0@(unsigned)&PORTD*8+0;//RD0
/*PORTEbits*/
staticvolatilebitRE2@(unsigned)&PORTE*8+2;//RE2
staticvolatilebitRE1@(unsigned)&PORTE*8+1;//RE1
staticvolatilebitRE0@(unsigned)&PORTE*8+0;//RE0
#endif
//*INTCONbits中断控制寄存器*/
staticvolatilebitGIE@(unsigned)&INTCON*8+7;//总中断使能位。
0:
屏蔽所有的中断请求;1:
允许非屏蔽的中断。
staticvolatilebitPEIE@(unsigned)&INTCON*8+6;//外部中断使能位。
0:
禁止;1:
使能
staticvolatilebitT0IE@(unsigned)&INTCON*8+5;//TMR0溢出中断使能位。
0:
禁止;1:
使能
staticvolatilebitINTE@(unsigned)&INTCON*8+4;//RB0/INT外部中断使能位。
0:
不使能;1:
使能。
staticvolatilebitRBIE@(unsigned)&INTCON*8+3;//RB端口变化中断时能位。
0:
不使能;1:
使能。
staticvolatilebitT0IF@(unsigned)&INTCON*8+2;//TMR0溢出中断标志位。
0:
无溢出;1:
溢出。
staticvolatilebitINTF@(unsigned)&INTCON*8+1;//RB0/INT外部中断标志位。
0:
RB0外部中断未发生;1:
RB0外部中断发生。
staticvolatilebitRBIF@(unsigned)&INTCON*8+0;//RB端口变化中断标志位。
0:
RB口无变化;1:
RB口至少有一个引脚变化。
//alternatedefinitions
staticvolatilebitTMR0IE@(unsigned)&INTCON*8+5;//
staticvolatilebitTMR0IF@(unsigned)&INTCON*8+2;//
//*PIR1bits中断标志寄存器PIR1*/
#ifdef__PINS_40
staticvolatilebitPSPIF@(unsigned)&PIR1*8+7;//并行从端口读写中断标志位。
0:
没有读写操作发生;1:
反之
#endif
staticvolatilebitADIF@(unsigned)&PIR1*8+6;//A/D转换器中断标志位。
0:
A/D转换没有完成;1:
A/D转换完成。
staticvolatilebitRCIF@(unsigned)&PIR1*8+5;//USART接收中断标志位。
0:
接收缓冲器空;1:
反之。
staticvolatilebitTXIF@(unsigned)&PIR1*8+4;//USART发送中断标志位。
0:
发生缓冲器满;1:
反之。
staticvolatilebitSSPIF@(unsigned)&PIR1*8+3;//同步串行端口(ssp)中断标志位。
0:
没有ssp中断条件发生;
staticvolatilebitCCP1IF@(unsigned)&PIR1*8+2;//CCP1中断标志位。
staticvolatilebitTMR2IF@(unsigned)&PIR1*8+1;//TMR2TOPR2匹配中断标志位。
0:
没有匹配发生
staticvolatilebitTMR1IF@(unsigned)&PIR1*8+0;//TMR1溢出中断标志位,0:
无溢出
/*PIR2bits*/
staticvolatilebitCMIF@(unsigned)&PIR2*8+6;//比较器中断标志位;0:
比较器输入没有改变
staticvolatilebitEEIF@(unsigned)&PIR2*8+4;//EEPROM写操作中断标志位。
0:
写操作没有完成或没有开始
staticvolatilebitBCLIF@(unsigned)&PIR2*8+3;//总线冲突中断标志位。
0:
没有总线冲突发生
staticvolatilebitCCP2IF@(unsigned)&PIR2*8+0;//CCP2中断标志位
//*T1CONbitsTMR1控制寄存器*/
staticvolatilebitT1CKPS1@(unsigned)&T1CON*8+5;//TMR1输入时钟预分频选择位
staticvolatilebitT1CKPS0@(unsigned)&T1CON*8+4;//TMR1输入时钟预分频选择位
staticvolatilebitT1OSCEN@(unsigned)&T1CON*8+3;//TMR1震荡器使能控制位。
0:
振荡器关闭
staticvolatilebitT1SYNC@(unsigned)&T1CON*8+2;//TMR1外部时钟输入同步控制位。
staticvolatilebitTMR1CS@(unsigned)&T1CON*8+1;//TMR1时钟源选择位。
0:
内部时钟的/4
staticvolatilebitTMR1ON@(unsigned)&T1CON*8+0;//TMR1使能位。
0:
禁止
//*T2CONbitsTMR2控制寄存器*/
staticvolatilebitTOUTPS3@(unsigned)&T2CON*8+6;//TMR2后分频选择位。
staticvolatilebitTOUTPS2@(unsigned)&T2CON*8+5;//TMR2后分频选择位
staticvolatilebitTOUTPS1@(unsigned)&T2CON*8+4;//TMR2后分频选择位
staticvolatilebitTOUTPS0@(unsigned)&T2CON*8+3;//TMR2后分频选择位。
staticvolatilebitTMR2ON@(unsigned)&T2CON*8+2;//TMR2使能位。
staticvolatilebitT2CKPS1@(unsigned)&T2CON*8+1;//TMR2预分频选择位。
staticvolatilebitT2CKPS0@(unsigned)&T2CON*8+0;//TMR2预分频选择位
//*SSPCONbitsSPI同步串口控制寄存器*/
staticvolatilebitWCOL@(unsigned)&SSPCON*8+7;//写操作冲突检测位,在SPI从动方式下,WCOL=0,未发生冲突,WCOL=1,发生冲突。
staticvolatilebitSSPOV@(unsigned)&SSPCON*8+6;//接收溢出标志位,SSPOV=0,未发生接收溢出;SSPOV=1,发生接受溢出。
staticvolatilebitSSPEN@(unsigned)&SSPCON*8+5;//同步串口MSSP允许位,SSPEN=0,关闭串口;SSPEN=1,允许串行端口功能。
staticvolatilebitCKP@(unsigned)&SSPCON*8+4;//时钟极性选择位,CKP=0,空闲时时钟停留在低电平;CKP=1,空闲时时钟停留在高电平。
staticvolatilebitSSPM3@(unsigned)&SSPCON*8+3;//同步串行口MSSP方式选择位,主动参数。
0,1,2,3,4.
staticvolatilebitSSPM2@(unsigned)&SSPCON*8+2;
staticvolatilebitSSPM1@(unsigned)&SSPCON*8+1;
staticvolatilebitSSPM0@(unsigned)&SSPCON*8+0;
/*CCP1CONbits*/
staticvolatilebitCCP1X@(unsigned)&CCP1CON*8+5