PIC单片机的配置位(Configuration Bits)允许用户根据应用需要配置器件。当单片机上电时,这些位的状态决定了PIC单片机的工作模式。配置位只能在编程模式下存取。通过对配置位编程(读为0)或不编程(读为1)可选择不同的器件配置。配置位编程后,是否能够更改其设置取决于器件的存储工艺和封装形式。
对于PIC16F877A单片机,表1-4列出了它的所有相关配置位。
表1-4 PIC16F877A所有相关配置位
各配置位的说明如下。
CP(Flash Program Memory Code Protection bit):Flash程序内存代码保护位。
1=代码保护关;0=保护所有程序内存。
DEBUG:在线调试器模式配置位。
1=禁止调试,RB6/RB7为通用I/O引脚;0=使能调试,RB6/RB7用作调试器引脚。
WRT1:WRT0(Flash Program Memory Write Enable bits):Flash程序内存写使能控制位。
11=取消写保护,所有程序内存均可以被EECON控制写入。
10=0000H~00FFH被写保护,0100h~1FFFh可被EECON控制写入。
01=0000H~07FFH被写保护,0800h~1FFFh可被EECON控制写入。
00=0000H~0FFFH被写保护,1000h~1FFFh可被EECON控制写入。
CPD(Data EEPROM Memory Code Protection bit):数据内存代码保护位。
1=Data EEPROM保护关;0=Data EEPROM被保护。
LVP(Low-Voltage/Single-Supply In-Circuit Serial Programming Enable bit)低压/单电源在线串行编程使能位。
1=RB3/PGM引脚用于PGM功能,使能低电编程。
0=RB3引脚用作数字I/O引脚,编程必须使用MCLR引脚的高电压(HV)。
BODEN(Brown-out Reset Enable bit):欠压复位使能位。
1=BOR使能;0=BOR禁止。
PWRTE(Power-up Timer Enable bit):上电定时器(PWRT)使能位。
1=PWRT禁止;0=PWRT使能。
WDTE:看门狗定时器(WDT)使能位。
1=WDT使能;0=WDT禁止。
FOSC1:FOSC0:振荡器选择位。
11=RC振荡器;10=HS振荡器;01=XT振荡器;00=LP振荡器。
配置字中的标识说明如下:
R=可读位,P=可编程位,U=未用位,读为‘0’;
−n=POR复位后的值,u=编程后状态不变。
MPLAB X IDE提供了非常方便的配置位管理及源代码生成功能,单击MPLAB X IDE的菜单“窗口/PIC存储器视图/配置位”,可打开如图1-11所示的MPLAB X IDE配置位功能窗口。
图1-11 MPLAB X IDE配置位功能窗口
完成配置位设置后,单击窗口下方的“输出生成源代码”按钮,“输出”窗口将出现类似于下面的配置位代码:
将这些代码直接复制粘贴到主程序中的#include<xc.h>语句下面即可。
另外,通过在线串行编程(ICSP,In-Circuit Serial Programming)设备下载PIC单片机程序时,源程序的配置位将显示在相关对话框中,例如图1-12所示的PIC16F877A单片机及PIC18F452单片机在某型号ICSP编程器中的配置位设置对话框。
图1-12 ICSP中两款PIC单片机配置位设置对话框(PIC16F877A/PIC18F452)
如果源程序中没有设置配置位,在用ICSP编程器下载程序时,可在编程器软件中直接调整配置位,然后将程序(包括配置位)下载到PIC单片机。
全书提供的案例源代码绝大多数未设置配置位,在实物电路中测试时注意添加配置。