单片机 > 单片机程序设计 > 详情

PIC单片机的配置字总结

发布时间:2024-10-30 发布时间:
|

平台为:MPLAB V8.92,这个ID有两个编译选项:DEBUG和RELEASE,那么可以根据系统预定宏来自动根据选择模式,配置配置字。

一、PIC18F系列配置字编写

MUC: PIC18F4550

IDE: MPLAB V8.92

编译器:MCC18 V3.47

配置字讲解帮助手册在编译器如下目录:dochlpPIC18ConfigSet.chm

例如:D:Program FilesMicrochipmplabc18v3.47dochlpPIC18ConfigSet.chm

注意:配置字文件必须只能有main.c文件包含。。。。。。

配置字编写:以18F为例

#ifdef  __DEBUG
    #pragma config  EBTRB   =   OFF
#else
    #pragma config  EBTRB   =   ON
#endif

这段代码就编译预定义宏__DEBUG,然后根据用户选择编译模式自动打开和关闭读保护


例子:

#ifndef __PIC18F4550_CONFIG_H__
#define __PIC18F4550_CONFIG_H__


#include    




//看门狗
#define WDT_ENABLE  0//1:打开;0:关闭
//USB
#define USB_ENABLE  0//1:打开;0:关闭






//PLL Prescaler Selection bits
//96 MHz PLL Prescaler
/*
PLLDIV  = 1     No  divide      (4  MHz input)  
PLLDIV  = 2     Divide  by  2   (8  MHz input)  
PLLDIV  = 3     Divide  by  3   (12 MHz input)  
PLLDIV  = 4     Divide  by  4   (16 MHz input)  
PLLDIV  = 5     Divide  by  5   (20 MHz input)  
PLLDIV  = 6     Divide  by  6   (24 MHz input)  
PLLDIV  = 10    Divide  by  10  (40 MHz input)  
PLLDIV  = 12    Divide  by  12  (48 MHz input) 
*/
#pragma config  PLLDIV  =   5






//CPU System Clock Postscaler
/*
CPUDIV  =   OSC1_PLL2   [OSC1/OSC2  Src: /1][96 MHz PLL Src: /2]  
CPUDIV  =   OSC2_PLL3   [OSC1/OSC2  Src: /2][96 MHz PLL Src: /3]  
CPUDIV  =   OSC3_PLL4   [OSC1/OSC2  Src: /3][96 MHz PLL Src: /4]  
CPUDIV  =   OSC4_PLL6   [OSC1/OSC2  Src: /4][96 MHz PLL Src: /6]  
*/
#pragma config  CPUDIV  =   OSC1_PLL2


//USB Clock Selection bit
//used in Full Speed USB mode only; UCFG:FSEN = 1
//USBDIV = 1    Clock source from OSC1/OSC2  
//USBDIV = 2    Clock source from 96 MHz PLL/2 
#pragma config  USBDIV  =   2


//Oscillator Selection bits
/*
FOSC = XT_XT            XT oscillator, XT used by USB  
FOSC = XTPLL_XT         XT oscillator, PLL enabled, XT used by USB  
FOSC = ECIO_EC          External clock, port function on RA6, EC used by USB  
FOSC = EC_EC            External clock, CLKOUT on RA6, EC used by USB  
FOSC = ECPLLIO_EC       External clock, PLL enabled, port function on RA6, EC used by USB  
FOSC = ECPLL_EC         External clock, PLL enabled, CLKOUT on RA6, EC used by USB  
FOSC = INTOSCIO_EC      Internal oscillator, port function on RA6, EC used by USB  
FOSC = INTOSC_EC        Internal oscillator, CLKOUT on RA6, EC used by USB  
FOSC = INTOSC_XT        Internal oscillator, XT used by USB  
FOSC = INTOSC_HS        Internal oscillator, HS used by USB  
FOSC = HS               HS oscillator, HS used by USB  
FOSC = HSPLL_HS         HS oscillator, PLL enabled, HS used by USB
*/
#pragma config  FOSC    =   HSPLL_HS


//Fail-Safe Clock Monitor Enable bit
#pragma config  FCMEN   =   OFF


//Internal/External Oscillator Switchover bit
#pragma config  IESO    =   OFF


//Power-up Timer Enable bit
#pragma config  PWRT    =   ON


//Brown-out Reset Enable bits
#pragma config  BOR     =   ON


//Brown-out Voltage bits
#pragma config  BORV    =   3


//USB Voltage Regulator Enable bit
//VREGEN = OFF USB voltage regulator disabled
//VREGEN = ON USB voltage regulator enabled
#if USB_ENABLE
    #pragma config  VREGEN  =   ON
#else
    #pragma config  VREGEN  =   OFF
#endif




//Watchdog Timer Enable bit
#ifdef  __DEBUG
    #pragma config  WDT =   OFF
#else
    #if WDT_ENABLE
        #pragma config  WDT =   ON
    #else
        #pragma config  WDT =   OFF
    #endif
#endif


//Watchdog Timer Postscale Select bits
/*
WDTPS = 1       1:1  
WDTPS = 2       1:2  
WDTPS = 4       1:4  
WDTPS = 8       1:8  
WDTPS = 16      1:16  
WDTPS = 32      1:32  
WDTPS = 64      1:64  
WDTPS = 128     1:128  
WDTPS = 256     1:256  
WDTPS = 512     1:512  
WDTPS = 1024    1:1024  
WDTPS = 2048    1:2048  
WDTPS = 4096    1:4096  
WDTPS = 8192    1:8192  
WDTPS = 16384   1:16384  
WDTPS = 32768   1:32768 
*/
//看门狗时钟:4ms
#pragma config  WDTPS   =   256


//MCLR Pin Enable bit
#pragma config  MCLRE   =   ON


//Low-Power Timer 1 Oscillator Enable bit
#pragma config  LPT1OSC =   OFF
 
//PORTB A/D Enable bit
#pragma config  PBADEN  =   OFF


//CCP2 MUX bit
#pragma config  CCP2MX  =   OFF


//Stack Full/Underflow Reset Enable bit
#pragma config  STVREN  =   ON


//Single-Supply ICSP Enable bit
#pragma config  LVP     =   OFF


//Dedicated In-Circuit Debug/Programming Port (ICPORT) Enable bit
#pragma config  ICPRT   =   OFF


//Extended Instruction Set Enable bit
#pragma config  XINST   =   OFF


//Background Debugger Enable bit
#ifdef  __DEBUG
    #pragma config  DEBUG   =   ON
#else
    #pragma config  DEBUG   =   OFF
#endif


//Code Protection bit Block 0
#pragma config  CP0     =   OFF


//Code Protection bit Block 1
#pragma config  CP1     =   OFF


//Code Protection bit Block 2
#pragma config  CP2     =   OFF


//Code Protection bit Block 3
#pragma config  CP3     =   OFF


//Boot Block Code Protection bit
#pragma config  CPB     =   OFF


//Data EEPROM Code Protection bit
#pragma config  CPD     =   OFF


//Write Protection bit Block 0
#pragma config  WRT0    =   OFF


//Write Protection bit Block 1
#pragma config  WRT1    =   OFF


//Write Protection bit Block 2
#pragma config  WRT2    =   OFF


//Write Protection bit Block 3
#pragma config  WRT3    =   OFF


//Boot Block Write Protection bit
#pragma config  WRTB    =   OFF


//Configuration Register Write Protection bit
#ifdef  __DEBUG
    #pragma config  WRTC=   OFF
#else
    #pragma config  WRTC=   ON
#endif


//Data EEPROM Write Protection bit
#pragma config  WRTD    =   OFF


//Table Read Protection bit Block 0
#pragma config  EBTR0   =   OFF


//Table Read Protection bit Block 1
#pragma config  EBTR1   =   OFF


//Table Read Protection bit Block 2
#pragma config  EBTR2   =   OFF


//Table Read Protection bit Block 3
#pragma config  EBTR3   =   OFF


//Boot Block Table Read Protection
#ifdef  __DEBUG
    #pragma config  EBTRB   =   OFF
#else
    #pragma config  EBTRB   =   ON
#endif


#endif


二、PIC32MX系列配置字编写

MCU: PIC32MX564F128L

IDE: MPLAB V8.92

编译器:C32 V2.02 (本版本不支持MZ系列,XC32支持)

参考手册同样:D:Program FilesMicrochipmplabc32v2.02dochlpPIC32MXConfigSet


说明:这个例子没有用预定义宏__DEBUG进行处理,请自行设置



#ifndef __PIC32CONFIG_H__
#define __PIC32CONFIG_H__




/*****用户自定义16位值标识***********/
//#pragma config USERID =


/*****影子寄存器分配中断优先级*******/
#pragma config FSRSSEL =PRIORITY_7//PRIORITY_0/PRIORITY_1/PRIORITY_2
//PRIORITY_3/PRIORITY_4/PRIORITY_5
//PRIORITY_6/PRIORITY_7


/*****CAN引脚选择********************/
#pragma config FCANIO =ON//ON:Default CAN I/OOFF:Alternate CAN I/O


/*****USBID控制位********************/
#pragma config FUSBIDIO =OFF//ON:Controlled by the USB Module 
//OFF:Controlled by Port Function 


/*****VBUSON控制位*******************/
#pragma config FVBUSONIO= OFF//ON:Controlled by USB Module 
//OFF:Controlled by Port Function


/*****PLL输入分频比******************/
#pragma config FPLLIDIV =DIV_5//4MHz<= Fin <=5MHz
//DIV_1/DIV_2/DIV_3/DIV_4/DIV_5
//DIV_6/DIV_10/DIV_12


/*****PLL倍频系数********************/
#pragma config FPLLMUL =MUL_20//MUL_15/MUL_16/MUL_17/MUL_18/MUL_19
//MUL_20/MUL_21/MUL_24


/*****USB PLL输入分频比**************/
#pragma config UPLLIDIV =DIV_2//Fin=4MHz
//DIV_1/DIV_2/DIV_3/DIV_4/DIV_5/DIV_6
//DIV_10/DIV_12


/*****USB PLL 使能位*****************/
#pragma config UPLLEN =OFF//ON:使能OFF:禁止


/*****PLL后分频器********************/
#pragma config FPLLODIV =DIV_1//DIV_1/DIV_2/DIV_4/DIV_8/DIV_16/DIV_32/DIV_64/DIV_256


/*****振荡器选择*********************
FNOSC = FRC Fast RC Osc (FRC)  
FNOSC = FRCPLL Fast RC Osc with PLL  
FNOSC = PRI Primary Osc (XT,HS,EC)  
FNOSC = PRIPLL Primary Osc w/PLL (XT+,HS+,EC+PLL)  
FNOSC = SOSC Low Power Secondary Osc (SOSC)  
FNOSC = LPRC Low Power RC Osc (LPRC)  
FNOSC = FRCDIV16 Fast RC Osc w/Div-by-16 (FRC/16)  
FNOSC = FRCDIV Fast RC Osc w/Div-by-N (FRCDIV)  
*************************************/
#pragma config FNOSC =PRI


/*****辅助振荡器选择位***************/
#pragma config  FSOSCEN = OFF//OFF:Disabled  ON:Enabled 


/*****内/外部振荡器切换位************/
#pragma config  IESO =OFF//OFF:Disabled  ON:Enabled 


/*****主振荡器配置位*****************
POSCMOD = EC External clock mode  
POSCMOD = XT XT osc mode  
POSCMOD = HS HS osc mode  
POSCMOD = OFF Primary osc disabled  
*************************************/
#pragma config POSCMOD=HS


/*****CLKO使能位*********************/
#pragma config OSCIOFNC=OFF//OFF:Disabled  ON:Enabled 


/*****外设总线时钟分频比*************/
#pragma config FPBDIV=DIV_1//DIV_1/DIV_2/DIV_4/DIV_8


/*****时钟切换和监视器选择配置位*****
FCKSM = CSECME Clock Switch Enable,  FSCM Enabled  
FCKSM = CSECMD Clock Switch Enable,  FSCM Disabled  
FCKSM = CSDCMD Clock Switch Disable, FSCM Disabled  
*************************************/
#pragma config FCKSM=CSDCMD


/*****看门狗时钟后分频比*************
WDTPS = PS1 1:1  
WDTPS = PS2 1:2  
WDTPS = PS4 1:4  
WDTPS = PS8 1:8  
WDTPS = PS16 1:16  
WDTPS = PS32 1:32  
WDTPS = PS64 1:64  
WDTPS = PS128 1:128  
WDTPS = PS256 1:256  
WDTPS = PS512 1:512  
WDTPS = PS1024 1:1024  
WDTPS = PS2048 1:2048  
WDTPS = PS4096 1:4096  
WDTPS = PS8192 1:8192  
WDTPS = PS16384 1:16384  
WDTPS = PS32768 1:32768  
WDTPS = PS65536 1:65536  
WDTPS = PS131072 1:131072  
WDTPS = PS262144 1:262144  
WDTPS = PS524288 1:524288  
WDTPS = PS1048576 1:1048576 
*************************************/
#pragma config WDTPS=PS2


/*****看门狗使能位*******************/
#pragma config FWDTEN=OFF //ON:WDT Enabled OFF:WDT Disabled (SWDTEN Bit Controls)


/*****ICE/ICD Comm Channel Select****
ICESEL = ICS_PGx1 ICE EMUC1/EMUD1 pins shared with PGC1/PGD1  
ICESEL = ICS_PGx2 ICE EMUC2/EMUD2 pins shared with PGC2/PGD2 
*************************************/
#pragma config ICESEL=ICS_PGx1


/******程序闪存写保护位**************
PWP = PWP512K First 512K  
PWP = PWP508K First 508K  
PWP = PWP504K First 504K  
PWP = PWP500K First 500K  
PWP = PWP496K First 496K  
PWP = PWP492K First 492K  
PWP = PWP488K First 488K  
PWP = PWP484K First 484K  
PWP = PWP480K First 480K  
PWP = PWP476K First 476K  
PWP = PWP472K First 472K  
PWP = PWP468K First 468K  
PWP = PWP464K First 464K  
PWP = PWP460K First 460K  
PWP = PWP456K First 456K  
PWP = PWP452K First 452K  
PWP = PWP448K First 448K  
PWP = PWP444K First 444K  
PWP = PWP440K First 440K  
PWP = PWP436K First 436K  
PWP = PWP432K First 432K  
PWP = PWP428K First 428K  
PWP = PWP424K First 424K  
PWP = PWP420K First 420K  
PWP = PWP416K First 416K  
PWP = PWP412K First 412K  
PWP = PWP408K First 408K  
PWP = PWP404K First 404K  
PWP = PWP400K First 400K  
PWP = PWP396K First 396K  
PWP = PWP392K First 392K  
PWP = PWP388K First 388K  
PWP = PWP384K First 384K  
PWP = PWP380K First 380K  
PWP = PWP376K First 376K  
PWP = PWP372K First 372K  
PWP = PWP368K First 368K  
PWP = PWP364K First 364K  
PWP = PWP360K First 360K  
PWP = PWP356K First 356K  
PWP = PWP352K First 352K  
PWP = PWP348K First 348K  
PWP = PWP344K First 344K  
PWP = PWP340K First 340K  
PWP = PWP336K First 336K  
PWP = PWP332K First 332K  
PWP = PWP328K First 328K  
PWP = PWP324K First 324K  
PWP = PWP320K First 320K  
PWP = PWP316K First 316K  
PWP = PWP312K First 312K  
PWP = PWP308K First 308K  
PWP = PWP304K First 304K  
PWP = PWP300K First 300K  
PWP = PWP296K First 296K  
PWP = PWP292K First 292K  
PWP = PWP288K First 288K  
PWP = PWP284K First 284K  
PWP = PWP280K First 280K  
PWP = PWP276K First 276K  
PWP = PWP272K First 272K  
PWP = PWP268K First 268K  
PWP = PWP264K First 264K  
PWP = PWP260K First 260K  
PWP = PWP256K First 256K  
PWP = PWP252K First 252K  
PWP = PWP248K First 248K  
PWP = PWP244K First 244K  
PWP = PWP240K First 240K  
PWP = PWP236K First 236K  
PWP = PWP232K First 232K  
PWP = PWP228K First 228K  
PWP = PWP224K First 224K  
PWP = PWP220K First 220K  
PWP = PWP216K First 216K  
PWP = PWP212K First 212K  
PWP = PWP208K First 208K  
PWP = PWP204K First 204K  
PWP = PWP200K First 200K  
PWP = PWP196K First 196K  
PWP = PWP192K First 192K  
PWP = PWP188K First 188K  
PWP = PWP184K First 184K  
PWP = PWP180K First 180K  
PWP = PWP176K First 176K  
PWP = PWP172K First 172K  
PWP = PWP168K First 168K  
PWP = PWP164K First 164K  
PWP = PWP160K First 160K  
PWP = PWP156K First 156K  
PWP = PWP152K First 152K  
PWP = PWP148K First 148K  
PWP = PWP144K First 144K  
PWP = PWP140K First 140K  
PWP = PWP136K First 136K  
PWP = PWP132K First 132K  
PWP = PWP128K First 128K  
PWP = PWP124K First 124K  
PWP = PWP120K First 120K  
PWP = PWP116K First 116K  
PWP = PWP112K First 112K  
PWP = PWP108K First 108K  
PWP = PWP104K First 104K  
PWP = PWP100K First 100K  
PWP = PWP96K First 96K  
PWP = PWP92K First 92K  
PWP = PWP88K First 88K  
PWP = PWP84K First 84K  
PWP = PWP80K First 80K  
PWP = PWP76K First 76K  
PWP = PWP72K First 72K  
PWP = PWP68K First 68K  
PWP = PWP64K First 64K  
PWP = PWP60K First 60K  
PWP = PWP56K First 56K  
PWP = PWP52K First 52K  
PWP = PWP48K First 48K  
PWP = PWP44K First 44K  
PWP = PWP40K First 40K  
PWP = PWP36K First 36K  
PWP = PWP32K First 32K  
PWP = PWP28K First 28K  
PWP = PWP24K First 24K  
PWP = PWP20K First 20K  
PWP = PWP16K First 16K  
PWP = PWP12K First 12K  
PWP = PWP8K First 8K  
PWP = PWP4K First 4K  
PWP = OFF Disable 
*************************************/
#pragma config PWP=OFF


/******引导闪存写保护位**************
BWP = ON Protection Enabled  
BWP = OFF Protection Disabled  
*************************************/
#pragma config BWP=OFF


/******代码保护位********************
CP = ON Protection Enabled  
CP = OFF Protection Disabled 
*************************************/
#pragma config CP=OFF

#endif




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断