PIC单片机的配置字用CONFIG命令的定义

发布者:快乐的成长最新更新时间:2020-01-15 来源: elecfans关键字:PIC单片机  配置字  CONFIG命令 手机看文章 扫描二维码
随时随地手机看文章

一.配置字

#i nclude

__CONFIG(x) ;其中x是配置字,头文件中定义了相应的配置说明符。


PIC单片机的配置字用CONFIG命令的定义

如:

__CONFIG(WDTDIS & XT & UNPROTECT);

这将关闭看门狗,设置XT振方式,程序不加密。注意:不同的配置符间用‘&’相联,未定义的部分保留未编程状态。详细的情况请参考头文件及PIC数据手册


二.ID 位置

有些PIC单片机在程序空间外还有ID空间,可用下面的方法来定义:

#i nclude

__IDLOC(x) ;其中x是ID标示。

如:

__IDLOC(15F0);

将ID的四个单元定义为:1, 5, 15, 0. ID的具体位置由所指定的PIC芯片自动设定。


三.EEPROM 数据

有些PIC单片机支持用外部编程器对内部的EEPROM进行编程。

__EEPROM_DATA()可以将用于初始化的数据放入HEX文件中。


如:

__EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7)

可将0-7八个数放入HEX文件中,在用外部的编程器进行编程时将 这八个数写入PIC单片机中。


__EEPROM_DATA不是用于运行时写入EEPROM数据的,在运行时请用 EEPROM_READ(), EEPROM_WRITE()。

========================================================================

PIC18__config配置位

PIC18的__CONFIG设置与PIC16的不一样。

PIC16的如:

__CONFIG(_CP_OFF&_WDT_ON&_BODEN_ON&_PWRTE_ON&_RC_OSC); 是写在一起的。

PIC18 不写在一起,CONFIG1..7是分开写的。如:

__CONFIG(1,IESODIS&FCMDIS&HS);

__CONFIG(2,BOREN&PWRTEN&WDTDIS&WDTWINDIS&WDTPS32K);

__CONFIG(3,MCLREN);

__CONFIG(4,DEBUGEN&XINSTEN&STVRDIS);

__CONFIG(5,UNPROTECT);

__CONFIG(N,X) 函数原型在PIC18.H文件中(PICC软件安装目录下的include文件夹中)。里面的各项设置在PIC18Fxx22.H中。N代表配置信息;X代表设置变量。如果要实现处理器的一些特殊功能,则需要查找相关的帮助文件,根据帮助文件的提示,在同文件中定义相关的变量。


上面的各项设置意义是:

//各项内容在PIC18FXX22.H文件中定义

//1.振荡器切换OFF&故障保护时钟监视器OFF&高速模式

//2.欠压复位ON&上电延时ON&看门狗OFF&看门狗分频数

//3.mclr用于复位脚

//4.使能后台调试器&使能指令集扩展&堆栈溢出不复位

//5.代码不保护

==========================================================================

笔者在使用picc18进行基于PIC18F452的软件开发时,发现对于18系列的单片机,手动设置配置位非常麻烦,而且容易出错,所以考虑在源程序中设定配置位,这样编译后,无论是用什么烧写工具,都不需要再进行配置位的设定了。


对于HI-TECH C18 , 配置字的设定通过宏 __CONFIG(n,x)来实现。

宏__CONFIG(n,x)的声明在文件pic18.h中,各位元的声明在对应芯片型号的头文件中.18F452的例程如下:

//***************************************************************************************

#include

//***************************************************************************************

//*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等。


!!!最后还应该注意的是如果在源程序中进行配置位设置,如果使用的软件版本(比如使用picc18的8.20版本和MPLAB6.30)较低,虽然编译不会有问题,但可能会出现配置位设置混乱,推荐使用picc18的8.35版本和MPLAB7.0以上。安装HTSOFT的软件时,也必须保证完全安装,尤其是一定要安装MPLAB_toolsuites工具。

==========================================================================

如下:PIC18F452中PIC18.h (此时源程序,哪位高人可否解析下?共同学习。)

/* Store a word value to a parTIcular configuration word register eg.

* __CONFIG(4, DEBUGEN & LVPDIS); // write to config word 4

* config mask attributes (such as DEBUGEN) defined in chip-specific

* header file. */

#define__CONFIG(n, x)asm(“tpsect config,class=CONFIG”);/**t是制表符,格式需要;psect 是定义class的关键字,意思是将以下的代码放入CONFIG class 中,并命名为config(注意大小写);config为自定义的class名,可以为任何其他名字;CONFIG说明了这个class的起始地址,在连续命令中指定CONFIG的范围delta=2,规定就是这样的。**/


asm(“global config_word” ___mkstr(n)); /***__mkstr(x)是一个将数字转换为字符的宏,目的是让编译器把一个数字当作是一个字符串来处理,如果不用__mkstr,你需要写成__CONFIG(“0x0F”)的形式,使用了__mkstr,直接写成__CONFIG(0x0F)的形式就行了,这一切只是为了用户更友好的使用这些宏,没什么特别的意思

***/

关键字:PIC单片机  配置字  CONFIG命令 引用地址:PIC单片机的配置字用CONFIG命令的定义

上一篇:PIC单片机用于上位机数据采集的设计
下一篇:基于PIC单片机直流电压表的汇编程序分享

推荐阅读最新更新时间:2024-11-11 16:39

关于PIC单片机软件仿真时计算AB程序段的执行时间
在 MPLAB IDE 中当选择Debugger 为MPLAB SIM时在view 菜单下有个simulator logic analyzer,在程序中待计算的程序段之前和之后各加同一个IO口的置0置1输出信号;例如:计算delaynus(160)的延时,中程序中可以RC0=1;RC0=0; delaynus(160); RC0=1;在logic analyzer中的Channels选项中把RC0作人分析信号,这样在程序编译运行后,RC0的信号就出现在 logic analyzer里了;这时通过图形是不好计算时间的;那么在图形中点击右键选择Export Table后可以导出文本方式的数据如: RC0(X) RC0(Y) 93367
[单片机]
pic单片机复位电路
pic单片机复位电路
[单片机]
<font color='red'>pic单片机</font>复位电路
自学PIC单片机必备工具
  P IC 单片机 是一种可编程的芯片,数字 电路 也有些芯片具有可编程的能力。      但是数字电路的编程太简单,因而其功能也很少,但PIC单片机具有很强的编程能力,是数字电路无法实现的目标。例如:笔者用一片PIC16F84制作的多波形电针治疗仪,能在20分钟内变换20种波形,即每分钟变换一次波形(消除人体对单波形刺激的适应性)。如果要用数字电路来实现,需要上10个芯片,这充分证明PIC单片机的可编程的能力十分强大。由于单片机自身不能编程,所以必须借助下述的硬件和软件两种开发工具对它编程之后,才能把PIC单片机变成有用的产品。这些设备价格便宜,功能可靠。      1.PC(个人电脑)和开发软件PC机一台,其配置如下:Mic
[单片机]
PIC单片机-步进电机的正转与反转
一、步进电机单双八拍正转 步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。正常运动情况下,它每转一周具有固定的步数;做连续步进运动时,其旋转转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。 本程序采用单双八拍工作方式:A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度)。 如要实现电机反转,只要更改脉冲方向即可。可更改为:D-CD-C-BC-B-AB-A-DA。 #include htc.h #define uint8 unsigned char #define uint16 unsigned i
[单片机]
pic单片机计数
1 #include pic.h //用的是PICC编译器 2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); 3 //PIC单片机都需要配置该位,HS是外部晶振模式 4 // 使能PROTECT保护程序存储器 5 //BOREN使能掉电保护 6 7 //WDTDIS关闭看门狗 8 void display(int pulse_amount); 9 void
[单片机]
PIC单片机控制DS18B20数字温度传感器原理及实现
#include pic.h #define uchar unsigned char #define uint unsigned int #define DQ RC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31); const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; const uchar table1 ={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,
[单片机]
PIC单片机ADC的编程设计
#include __CONFIG(0X1F71); #define uchar unsigned char #define uint unsigned int const uchar Tab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; const uchar Tab1[]= {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带小数点的代码 void DisPlay(uchar date1,uchar date2,uchar date3,uchar date4); void DelayMS(uint
[单片机]
<font color='red'>PIC单片机</font>ADC的编程设计
PIC单片机程序设计方法和的基本格式
为了快速掌握P IC 单片机 源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84?INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。   TITLE“This is……”;程序标题   ;程序说明   LIST P=16F84,F=1NHX8M   ;   include   -config_RC_Qsc &_WDT_0FF…   ;资源定义和变量定义   STATUS EQU 03   FSR
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved