配置字(__CONFIG): 1) 芯片的振荡模式选择。 2) 片内看门狗的启动。
3) 上电复位延时定时器PWRT的启用。 4) 低电压检测复位BOR模块的启用。 5) 代码保护。
__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_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 Detect Power Up Timer Watchdog Timer Flash Program Write
外部时钟输入(HS, XT或LP OSC配置)如下图:
&_PWRTE_ON &_XT_OSC
陶瓷(ceramic)谐振器电容的选择 如下表:
配置字(__CONFIG):
一般情况为: 11 1111 0011 0001 0x3F31 或0x3F71
位13 CP:闪存程序存储器代码保护位 1 1=代码保护关闭
0=所有程序存储器代码保护
位12 未定义:读此位为1 1 位11 DEBUG:在线调试器模式位 1
1=禁止在线调试器,RB6和RB7是通用I / O引脚 0=在线调试功能开启,RB6和RB7专用于调试
位10:9 WRT1:WRT0:闪存程序存储器的写使能位 11 PIC16F876A / 877A
11=写保护关闭,所有的程序存储器可能被写入由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 Voltage 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:振荡器选择位 01 11=RC振荡器
10=晶体振荡器HS模式。参考振荡频率范围:>2 MHz
01=晶体振荡器XT模式。参考振荡频率范围:100 kHz ~ 4 MHz 00=晶体振荡器LP模式。参考振荡频率范围:<200 kHz
OPTION_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:1 0=预分频器分配给TMR0
位2:0 PS2:PS0:设定预分频器的分频系数如下表所示 分频设定 000 001 010 011 100 101 110 111
TMR0分频比 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 WDT分频比 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128
T1CON寄存器:
位7:6 没有定义,读此两位的结果为0
位5:4 T1CKPS1:T1CKPS0:TMR1预分频设置 11=预分频系数1:8
10=预分频系数1:4 01=预分频系数1:2 00=预分频系数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:1
0001=后分频系数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预分频