对于HI-TECH C18 , 配置字的设定通过宏 __CONFIG(n,x)来实现.
宏__CONFIG(n,x)的声明在文件pic18.h中,各位元的声明在对应芯片型号的头文件中.18F452的例程如下:
//***************************************************************************************
#include <pic18.h>
//***************************************************************************************
//*The declaration of __CONFIG(n,x) is in pic18.h *
//*The __CONFIG(n,x) directive defines configuration data within is in pic18fxx2.h *
//***************************************************************************************
__CONFIG(1,RC) ;
__CONFIG(2,PWRTDIS & WDTPS1 & WDTEN ) ;
__CONFIG(4,STVRDIS) ;
void main(void)
{
//your code
}
//*************************************************************************
在pic18.h中,__CONFIG(n,x)的声明如下
#define __CONFIG(n, x) asm("\tpsect config,class=CONFIG");\
asm("global config_word" ___mkstr(n)); \
asm("config_word" ___mkstr(n)":"); \
asm("\torg ("___mkstr(n)"-1)*2"); \
asm("\tdw "___mkstr(x))
部分在pic18.h中的声明大体如下,具体请参考对应的头文件。
// Configuration bit values
// Config. Register 1
#define OSCSEN 0xDFFF // enable oscillator system clock
#define OSCSDIS 0xFFFF
// oscilator types
#define RCRA6 0xFFFF // RC w/OSC2 config as RA6
#define HSPLL 0xFEFF // HS w/PLL Enabled, Clk Freq = 4xFreq Osc.
#define ECRA6 0xFDFF // EC w/OSC2 config. as RA6
#define ECDB4 0xFCFF // EC w/OSC2 as divide by 4 clock output
#define RC 0xFBFF
#define HS 0xFAFF
#define XT 0xF9FF
#define LP 0xF8FF
// Config. Register 2
// Brown Out reset
#define BOREN 0xFFFF // Brown-out reset enable
n代表 Config. Register n, 例如__CONFIG(1,x); 1 代表Config. Register 1, X可为OSCSEN,RC等。 |