PIC 里面关于 __CONFIG( ) 配置位

发布者:东土大唐88最新更新时间:2017-01-04 来源: eefocus关键字:PIC  配置位 手机看文章 扫描二维码
随时随地手机看文章

一.配置字
      PIC单片机的配置字可以用__CONFIG命令来定义:
    #i nclude
         __CONFIG(x)   ;其中x是配置字,头文件中定义了相应的配置说明符。

如:
        __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  配置位 引用地址:PIC 里面关于 __CONFIG( ) 配置位

上一篇:PIC单片机编程小技巧
下一篇:pic16f877a.h中文注释

推荐阅读最新更新时间:2024-03-16 15:28

Microchip推出PIC32CM JH微控制器 基于Arm® Cortex®-M0+架构打造
据外媒报道,为向制造商提供配备符合ISO 26262功能安全和ISO/SAE 21434网络安全工程标准组件的MCU解决方案,Microchip Technology Inc.(美国微芯科技公司)宣布推出PIC32CM JH微控制器(MCU)。这是业界首款基于Arm® Cortex®-M0+架构的MCU,支持AUTOSAR、内存内置自检(MBIST)和安全启动。 图片来源:Microchip
[汽车电子]
Microchip推出<font color='red'>PIC</font>32CM JH微控制器 基于Arm® Cortex®-M0+架构打造
Microchip PIC16F18x MCU在贸泽开售为传感器节点应用提供支持
Microchip PIC16F18x MCU在贸泽开售为传感器节点应用提供支持 2022年9月1日 – 专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics, Inc.) 即日起开售Microchip Technology的PIC16F18015/25/44/45和PIC16F18126/46 系列MCU。 这两个系列专门为需要8位MCU来配合传感器设计的开发人员而设计,拥有丰富的功能,为传感器信号调理和实时控制提供了低成本解决方案。 对于成本敏感型传感器和控制应用,PIC16F18015/25/44/45 MCU提供了7KB到14KB的闪存、稳定的控制和外设功能,以及高
[传感器]
Microchip <font color='red'>PIC</font>16F18x MCU在贸泽开售为传感器节点应用提供支持
什么是PIC单片机及PIC单片机应用和设计
PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。 PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。如果是同样的体系结构,
[单片机]
PIC16F87X单片机中断系统应用须关注的问题
  目前在世界一些著名的单片机产品系列中,PIC16F87X系列单片机是芯片内部包含有外围设备模块数量最多的单片机品种之一。PIC16F874和PIC16F877单片机的芯片内部集成了15个外围设备模块;PIC16F873和PIC16F876单片机的芯片内部集成了12个外围设备模块。在最近推出的该系列的新型号中, PIC16F870单片机的芯片内部集成了10个外围设备模块;PIC16F871单片机的芯片内部集成了13个外围设备模块;PIC16F872单片机的芯片内部也集成了10个外围设备模块(比PIC16F870多了1个USART模块,少了1个SSP模块)。   这些外围设备模块在启用时以及在工作过程中,都或多或少地需要CPU参与
[单片机]
<font color='red'>PIC</font>16F87X单片机中断系统应用须关注的问题
采用TCP协议实现PIC18F97J60 ethernet bootloader
 TCP/IP Stack   Microchip TCP/IP Stack是免费的,广泛应用于PIC单片机中。由于有远程更新程序的需求,我决定开发基于TCP协议的ethernet bootloader, 主要使用了Microchip TCP/IP Stack的TCP模块。最终我开发出来的ethernet bootloader 在PIC18F97J60上验证通过。整个实现上分两部分,一部分是单片机端的基于TCP协议的bootloader程序,我将其命名为PhnBoot_v2.0, 另外一部分是同样基于TCP协议与单片机互动的PC端通信程序,我将其命名为PhnLoader_v2.0。我还定义了PhnBoot_v2.0和PhnLo
[单片机]
PIC16C712功能、特点、应用领域与替代16C711方法、注意事项
一. PIC16C712单片机功能、特点、应用领域 1. 功能、特点: PIC16C712单片机为Microchip公司推出的基于711芯片功能基础上的增强型产品,它与16C711是Pin对Pin兼容。其功能与价格均优于16C711。下表为16C712与16C711的功能对照表: 型 号 振荡(Hz) EPROM RAM A/D8位 定时器 CCP模块 串行口 中断源 电 压 I/O脚 封装 复位锁定 16C710 DC~20M 0.5K×14 36×8 4 1 - - 4 3.0V- 6.0V 13 18脚 有 16C711 DC~20M 1K×14 68×8
[单片机]
<font color='red'>PIC</font>16C712功能、特点、应用领域与替代16C711方法、注意事项
PIC单片机浮点数与十进制数之间的转换
在我们设计的仪表中采用PIC系列单片机,碰到了浮点数的运算问题,查阅其有关资料发现,其浮点数的格式及其与十进制数之间的转换,与我们常用的MCS-51单片机所提供的三字节、四字节浮点数完全不同,本文将说明其浮点数的格式及其与十进制数之间的转换和程序设计步骤。 1 浮点数的格式   Microchip公司单片机所采用的浮点数格式是IEEE-754标准的变异型。32位浮点数格式为:   其中:×表示一位二进制数0或1;eb 为指数的偏差;S为浮点数的符号位,S=0为正数,S=1为负数;小数点“·”在符号位S的右边;BY0 BY1 BY2为尾数的小数部分。 应特别注意:   ⑴ 浮点数隐含其整数部分为1。   ⑵ 十进制数0 的浮点
[单片机]
<font color='red'>PIC</font>单片机浮点数与十进制数之间的转换
基于单片机PIC18F66J10的主动放线机设计
0 引言 速度是工业生产中的主要被控参数之一,与之相关的各种速度控制系统已被广泛应用于冶金、化工、机械、食品等领域。本文介绍的主动放线机速度自动控制系统适用于微细金属线的恒张力主动放线,可广泛用于拉丝机、绕线机的前端放线,并可在放线过程中保持金属线的张力恒定。适用的线材有金、银、铜、铝等,放线速度为0~700 rpm,线径可达φ0.05 mm,张力控制可通过摆臂一边悬挂的砝码来手动调整。 整个系统选用六线式单极性步进电机为执行部件,具有低成本和控制方法简单的优点,核心控制芯片选用美国Microchip公司的PIC单片机PIC18F66J10,该芯片具有实用可靠、代码保密性好、片内集成有模拟、数字功能部件等优点。而系统选用美国A
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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