当前位置:文档之家› PIC单片机各寄存器汇总资料讲解

PIC单片机各寄存器汇总资料讲解

1) 芯片的振荡模式选择。

2) 片内看门狗的启动。

3) 上电复位延时定时器PWRT的启用。

4) 低电压检测复位BOR模块的启用。

5) 代码保护。

__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;_CP_OFF 代码保护关闭_WDT_OFF 看门狗关闭_BODEN_OFF_PWRTE_ON 上电延时定时器打开_XT_OSC XT振荡模式_WRT_OFF 禁止Flash程序空间写操作_LVP_OFF 禁止低电压编程_CPD_OFF EEPROM数据读保护关闭LVP Low Voltage Program 低电压编程CP Code Protect 代码保护Date EE Read Protect EEPROM数据读保护Brown Out DetectPower Up TimerWatchdog TimerFlash Program Write外部时钟输入(HS,XT或LP OSC配置)如下图:陶瓷(ceramic)谐振器电容的选择如下表:一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭0=上电定时器开启位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择1=看门狗开启如右图:0=看门狗关闭位1:0 Fosc1:Fosc0:振荡器选择位0111=RC振荡器10=晶体振荡器HS模式。

参考振荡频率范围:>2 MHz01=晶体振荡器XT模式。

参考振荡频率范围:100 kHz ~ 4 MHz00=晶体振荡器LP模式。

参考振荡频率范围:<200 kHzOPTION_REG寄存器:位7 RBPU:PORTB输入引脚内部弱上拉使能控制位1=所有PORTB的内部弱上拉被禁止0=设定为输入状态的引脚内部弱上拉被使能位6 INTEDG:选择RB0/INT引脚的中断沿1=RB0/INT 上升沿中断0=RB0/INT 下降沿中断位5 T0CS:选择TMR0的计数时钟源1=外部脉冲沿跳变计数0=内部指令周期计数位4 T0SE:选择计数的外部脉冲沿1=T0CKI脉冲上升沿计数0=T0CKI脉冲下降沿计数位3 PSA:预分频器指派1=预分频器分配给看门狗定时器WDT,此时TMR0的计数预分频为1:10=预分频器分配给TMR0位2:0 PS2:PS0:设定预分频器的分频系数如下表所示分频设定TMR0分频比WDT分频比000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128T1CON寄存器:位7:6 没有定义,读此两位的结果为0位5:4 T1CKPS1:T1CKPS0:TMR1预分频设置11=预分频系数1:810=预分频系数1:401=预分频系数1:200=预分频系数1:1位3 T1OSCEN:TMR1内部振荡器控制位1=打开内部振荡器,反相放大器工作,需外接晶体产生振荡时钟0=关闭内部振荡电路位2 T1SYNC:TMR1同步/异步计数控制位1=异步计数模式0=同步计数模式位1 TMR1CS:选择TMR1的计数时钟源1=T1CKI引脚上的上升沿计数0=内部指令周期计数(Fosc/4)位0 TMR1ON:TMR1计数允许/禁止控制位1=TMR1可以计数0=TMR1计数暂停T2CON寄存器:位7 没有定义,读此位的结果为0位6:3 TOUTPS3:TOUTPS0:TMR2计数溢出后分频设置0000=后分频系数1:10001=后分频系数1:2……1111=后分频系数1:16位2 TMR2ON:TMR2计数允许/禁止控制位1=TMR2可以计数0=TMR2计数暂停位1:0 T2CKPS1:T2CKPS0:TMR2预分频设置00= 1:1预分频01= 1:4预分频1x= 1:16预分频CCPxCON寄存器:位7:6 没有定义,读此两位的结果为0位5:4 CCPxX:CCPxY:TMR1预分频设置捕捉模式:未用比较模式:未用PWM模式:PWM模式占空比控制字为10位,最低2位即放在CCPxX:CCPxY中,高8位数据放入专门的一个寄存器CCPRxL位3:0 CCPxM2:CCPxM0:CCP模块工作模式选择位0000 =关闭所有模式,CCPx模块处于复位状态0100 =捕捉模式,每一个上升沿捕捉一次0101 =捕捉模式,每一个下降沿捕捉一次0110 =捕捉模式,每4个上升沿捕捉一次0111 =捕捉模式,每16个上升沿捕捉一次1000 =比较模式,预置CCPx引脚输出为0,比较一致时CCPx引脚输出为11001 =比较模式,预置CCPx引脚输出为1,比较一致时CCPx引脚输出为01010 =比较模式,当比较一致时CCPxIF=1产生软中断,CCPx引脚没有变化1011 =比较模式,当比较一致时CCPxIF=1且触发特殊事件11xx =PWM模式INTCON寄存器:位7 GIE:全局中断使能控制位1=允许中断,但各中断还有独立的使能控制位0=禁止所有的中断,不管各自的中断是否允许位6 PEIE:外围功能模块中断允许控制位1=允许外围功能模块中断0=禁止所有外围功能模块中断位5 TMR0IE(T0IE):TMR0中断使能控制位1=允许TMR0中断0=禁止TMR0中断位4 INTE:RB0/INT引脚沿跳变中断允许控制位1=允许RB0/INT引脚中断0=禁止RB0/INT引脚中断位3 RBIE:PORTB引脚状态变化中断使能控制位1=允许PORTB状态变化中断0=禁止PORTB状态变化中断位2 TMR0IF(T0IF):TMR0中断标志位1=TMR0计数溢出发生中断,必须用软件将其清除0=TMR0没有溢出中断位1 INTF:RB0/INT引脚沿跳变中断标志1=RB0/INT引脚发生中断,必须用软件将其清除0=没有发生RB0/INT引脚中断位0 RBIF:PROTB引脚状态变化中断标志位1=PORTB引脚出现状态变化中断,必须用软件将其清除0=PORTB引脚没有发生状态变化中断STATUS寄存器:PIE1寄存器:PIR1寄存器:PIE2寄存器:PIR2寄存器:SSPSTAT寄存器:位7 SMP:SPI模式下数据输入采样点控制(sample采样)SPI主模式(Serial Peripheral interface 串行外围设备接口)1=输出时间的中点对输入数据采样0=输出时间结束时对输入数据采样SPI从模式此位必须保持为0位6 CKE:SPI模式下时钟沿选择,与CKE位一起实现SPI时钟极性的4中模式CKP=0 (clock edge 时钟沿)0=数据在时钟的上升沿时发送1=数据在时钟的下降沿时发送CKP=10=数据在时钟的下降沿时发送1=数据在时钟的上升沿时发送位5 D/A:数据/地址控制位,只适用于I2C模式0=表明接收或发送的是地址码1=表明接收或发送的是普通数据位4 P:停止位指示,只适用于I2C模式。

当SSP模块没有启用时,此位为0 1=表明刚才检测到一个停止位(芯片复位后此位为0)0=没有检测到停止位位3 S:起始位指示,只适用于I2C模式。

当SSP模块没有启用时,此位为0 1=表明刚才检测到一个起始位(芯片复位后此位为0)0=没有检测到起始位位2 R/W:读/写命令指令,只适用于I2C模式。

在I2C通信时如果寻址地址匹配,该位就留有读或写的标志。

其有效期限到出现下一个起始位/停止位/无应答信号为止0=此次I2C通信为写操作1=此次I2C通信为读操作,与BF位配合可以判断主器件有/无应答位输出位1 UA:地址更新标志,只适用于I2C通信时的10位寻址模式0=无需地址更新1=表明SSPADD寄存器需要更新地址位0 BF:数据缓冲器满标志接收时(SPI和I2C)0=接收没有完成,SSPBUF寄存器为空1=接收已经完成,SSPBUF寄存器满发送时(只适用于I2C)0=发送完成,SSPBUF寄存器为空1=正在发送过程中,SSPBUF寄存器满SSPCON(SSPCON1)寄存器:位7 WCOL:发送数据写入时的冲突标志0=写入时没有冲突发生1=当SSPBUF正在发送数据时程序又对其进行数据写入而发送冲突,此位被置位后必须有软件将其清0位6 SSPOV:接收数据溢出标志位SPI模式0=数据接收没有溢出1=当SSPBUF寄存器中所接收的数据还没有被读走时,内部的移位寄存器SSPSR内又有新的数据就绪,此时SSPSR内的数据将被丢弃,SSPBUF不会被更新。

SPI模式下接收数据溢出只可能发生在从模式下。

如果在从模式下只发送数据,发送完毕后应用程序也必须读一次SSPBUF以免发生溢出标志。

在主模式下得一次接收(或发送)过程都必须通过写SSPBUF才能启动,故一般不会出现接收溢出,除非你在接收数据到来后故意不去读SSPBUF寄存器。

相关主题