历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2020年09月09日 | PIC __CONFIG( ) 配置位

2020-09-09 来源:eefocus

一.配置字 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)的形式就行了,这一切只是为了用户更友好的使用这些宏,没什么特别的意思

***/


推荐阅读

史海拾趣

Eurotech公司的发展小趣事

随着全球对环保问题的日益关注,Eurofarad公司也积极响应这一趋势。公司注重环保理念在产品设计和生产过程中的应用,努力减少对环境的影响。同时,公司还积极推动可持续发展战略,通过优化生产流程和采用环保材料等方式,降低能源消耗和废弃物排放。这些努力不仅符合了社会的期望,也为公司的长期发展提供了有力保障。

扬州国芯(Gcore)公司的发展小趣事

Eurofarad公司自创立之初,就专注于电容器技术的研发。在当时,电容器市场已经相当成熟,但Eurofarad公司凭借对材料科学的深入研究,成功开发出一种新型的高性能电容器。这种电容器不仅具有更高的能量密度,而且寿命更长,稳定性更好。这一技术突破为Eurofarad公司赢得了市场的初步认可,也为公司后续的发展奠定了坚实的基础。

蜂鸟无线公司的发展小趣事
如汽车风扇、雨刷等汽车电子部件,通过PWM调速电路可以实现转速的自动调节,提高汽车的舒适性和安全性。
Chemtronics公司的发展小趣事

为满足电子行业对无铅应用的需求,Chemtronics专门设计了完整的无铅产品线,并成为业内第一个向市场提供此类产品的公司。这一创新不仅满足了市场对环保和高效产品的需求,也进一步巩固了Chemtronics在电子行业的领先地位。

Altitude Technology公司的发展小趣事

随着产品的不断升级和市场的不断扩大,Altitude Technology开始将目光投向海外市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立海外销售渠道等方式,积极推广自己的产品。经过一番努力,Altitude Technology的产品逐渐在国际市场上获得了认可,公司的知名度也得到了提升。

Alpha Wire公司的发展小趣事

在电子行业中,创新是企业永恒的主题。Altitude Technology始终坚持以创新驱动发展,不断推出新产品、新技术。公司建立了一支高效的研发团队,不断跟踪行业最新动态和技术趋势,确保公司在技术创新方面始终走在前列。正是这种持续创新的精神,使得Altitude Technology在电子行业中保持了长久的竞争力。


以上五个故事均基于虚构的Altitude Technology公司进行创作,旨在展示一个电子行业企业在不同发展阶段可能遇到的挑战和机遇,以及如何通过技术创新、市场拓展和合作共赢等方式实现持续发展。请注意,这些故事并非基于真实事件,因此可能与实际情况存在出入。

问答坊 | AI 解惑

用ras拨号出现硬件不存在和端口打不开的问题

操作系统是ce5.0的 rasdial返回的是633,有时候是608,cdma模块是在com1,但我用串口调试工具能打开com1,发送at指令也一切正常 是不是需要改一下注册表里关于驱动的东西…

查看全部问答>

谐波控制

用ATT7022B如何对谐波进行检查,校验之类的操作…

查看全部问答>

mp4 产品研发。需要搭建那些软件开发环境?

mp4 产品研发。需要搭建那些软件开发环境? 谢谢各位,给点建议吧…

查看全部问答>

MP3的设计思想

                                     项目的开发思 ...…

查看全部问答>

FPGA设计时常用的开发工具

FPGA开发工具包括软件工具和硬件工具两种。其中硬件工具主要是FPGA厂商或第三方厂商开发的FPGA开发板及其下载线,另外还包括示波器、逻辑分析仪等板级的调试仪器。在软件方面,针对FPGA设计的各个阶段,FPGA厂商和EDA软件公司提供了很多优秀的EDA工 ...…

查看全部问答>

反激电源的设计步骤

准备 在初次设计电源之前,应确保电源所采用的印刷电路板符合Power Integrations器件数据手册中指定的布局指南。如果在实验用面包板或原始样板上搭建设计的电路,会引入很多寄生元件,这样会影响电源的正常工作。而且,许多实验用面包板都无法承载 ...…

查看全部问答>

无线电在实际的空间中的传输损耗

最近学习无线电!找了很多资料,包括在理想大气中的损耗,但是,和实际的应用情况好像有很大差别,如何计算实际应用的距离与发射功率,发射频率的关系?…

查看全部问答>

【问TI】请教:用28335实现SCI的程序在线升级

硬件28335 controlCARD experimendter\'s KIT ,LM3S9B90, FPGA 软件环境:CCV4.2   目的:以LM3S9B90作为上位机,28335 以及若干FPGA作为下位机,实现在线升级功能。(先讨论28335的情况吧)   当前思路:LM3与28335 通信采用SCI, ...…

查看全部问答>

周教授

上周二,周庆国教授打来电话,一阵寒嘘之后,周教授提到自己刚升为正教授,我可以读他的研究生了。毕竟工作这么多年了,有了自己的事业,再去读书有些不现实了,但心中还是感谢,同时也为他这么多年一直的付出终于得到大家的认可而感到高兴。周 ...…

查看全部问答>