PIC单片机的配置字用CONFIG命令的定义
0 2022-11-24

一.配置字

#i nclude

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


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

如:

__CONFIG(WDTDIS & XT & UNPROCT);

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

二.ID 位置

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

#i nclude

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

如:

__IDLOC(15F0);

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

三.EEP 数据

有些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 declaraon of __CONFIG(n,x) is in pic18.h *

//*The __CONFIG(n,x) direcve defines configuraon data within is in pic18fxx2.h *

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

__CONFIG(1,RC) ;

__CONFIG(2,PWRTDIS & WDTPS1 & WDTEN ) ;

__CONFIG(4,STVRDIS) ;

void mn(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中的声明大体如下,具体请参考对应的头文件。

// Configuraon bit values

// Config. Register 1

#define OSCSEN 0xDFFF // enable oscillator system clock

#define OSCS 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版本和6.30)较低,虽然编译不会有问题,但可能会出现配置位设置混乱,推荐使用picc18的8.35版本和MPLAB7.0以上。安装HTSOFT的软件时,也必须保证完全安装,尤其是一定要安装MPLAB_toolsuites工具。

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

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

/* Store a word value to a parcular 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)的形式就行了,这一切只是为了用户更友好的使用这些宏,没什么特别的意思

***/

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • EDA
  • 仿真
  • CAD
  • 芯片
  • 芯片在线烧录不稳定要如何改善

    在线烧录因集烧录测试一体的优势受到众多用户喜爱,但却往往因连接工装,夹具导致接线过长,进而增加不稳定性和烧录不良率,这究竟要如何改善呢?1.增加屏蔽层,防止电磁

    02-03
  • Wifi射频接收性能的测试方法

    WiFi(WirelessFidelity)手机是一种新兴的基于WiFi技术的VOIP电话。使用这种手机可以将模拟语音信号转换为数据包的形式,通过热点(AccessPoint)接入基于IP协议的互联网上进行传输,从而接打电话。与传统固话相比,WiFi手机的资费非常廉价,但使用的前提是,WiFi手机只有在热点覆盖范围以内才能进行通话。但热点的覆盖范围往往非常有限。 有两种方法可以增大热点的覆盖范围:...

    02-01
  • EDA环境结合测量软件 大幅缩短电子产品开发周期

    消费类电子产品的更新换代周期越来越短,且功能复杂度不断提高,使得系统研发人员面临缩短产品开发时间的严峻挑战。所幸,现今自动化测试系统已开始导入开放式FPGA,将有助EDA开发环境与测量软件的整合,让工程师可同时进行系统设计与测试,加快研发时程。 目前测试工程师所面临的最大挑战之一,即是个人观念局限于目前的技术中而停滞不前,因此,本文特别提供技术趋势的相关知识,针对测试与测量产业,探讨足以影响整个产...

    01-31
  • “老司机”总结元器件选型基本原则

    元器件选型基本原则:1)普遍性原则:所选的元器件要是被广泛使用验证过的,尽量少使用冷门、偏门芯片,减少开发风险。2)高性价比原则:在功能、性能、使用率都相近的情

    01-31
  • USB接口IP核关键模块的设计和验证

    USB(通用串行总线)作为一种外设连接技术,是计算机外设连接技术的重大变革,USB具有速度快、通用性好、扩展性强、功耗低、稳定、易开发等众多优点,在实践中获得了

    01-30
  • 不同类型的芯片加密

    芯片的加密,保证了芯片内部信息的安全性。有工程师会问:芯片加密后别人还能解密吗?这芯片安全吗?本文将为大家介绍几种不同类型芯片的加密方式。随着信息技术的发展,信

    01-29
  • 电梯呼梯控制器设计:基于PIC18F258单片机和CAN模块

    1、引言目前电梯的生产情况和使用数量成为一个国家现代化程度的标志之一。电梯是机电一体的高层建筑的复杂运输设备。它涉及机械工程、电子技术、电力电子技术、电机与拖动

    01-18
  • Synaptics推出新一代显示驱动器IC的样品可用于VR显示器上

      兼具独一无二的双显示2K分辨率、业内首创中央凹视觉传输技术、DP1.4优越的连接性能  新突思电子科技(SynapticsIncorporated)推出了新

    01-10
  • 一文解读IIC总线的FPGA实现原理及过程

      IIC总线概述  IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互连方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内

    01-06
  • 单片机仿真器有什么作用?

    单片机仿真器是指以调试单片机软件为目的而专门设计制作的一套专用的硬件装置。目前已经得到了广泛的运用,那么单片机仿真器有什么作用?单片机仿真器发展最早的单片机仿真

    01-03
  • 微流控芯片的原理

    从1990年Manz等人首次提出了微型全分析系统的概念,到2003年Forbes杂志将微流控技术评为影响人类未来15件最重要的发明之一,微流控技术得到了飞速的发

    01-03
下载排行榜
更多
广告