头文件

[复制链接]
3972|22
 楼主| renyaq 发表于 2021-8-8 21:55 | 显示全部楼层 |阅读模式
PIC单片机头文件中,关于芯片配置字有如下内容:
#define CONFIG_ADDR        0x2007
/*osc configurations*/
#define RC                0x3FFF        // resistor/capacitor
#define HS                0x3FFE        // high speed crystal/resonator
#define XT                0x3FFD        // crystal/resonator
#define LP                0x3FFC        // low power crystal/resonator
/*watchdog*/
#define WDTEN                0x3FFF        // enable watchdog timer
#define WDTDIS                0x3FFB        // disable watchdog timer
/*power up timer*/
#define PWRTEN                0x3FF7        // enable power up timer
#define PWRTDIS                0x3FFF        // disable power up timer
/*brown out reset*/
#define BOREN                0x3FFF        // enable brown out reset
#define BORDIS                0x3FBF        // disable brown out reset
/*Low Voltage Programmable*/
#define LVPEN                0x3FFF        // low voltage programming enabled
#define LVPDIS                0x3F7F        // low voltage programming disabled
/*data code protected*/
#define DP                0x3EFF        // protect data code
// alternately
#define DPROT                0x3EFF        // use DP
#define DUNPROT                0x3FFF        // use UNPROTECT
/* Flash memory write enable/protect */
#define WRTEN                0x3FFF        /* flash memory write enabled */
#define WP1                0x3DFF  /* protect 0000 - 00FF */
#define WP2                0x3BFF  /* protect 0000 - 07FF(76A/77A) / 03FF(73A/74A) */
#define WP3                0x39FF  /* protect 0000 - 1FFF(76A/77A) / 0FFF(73A/74A) */
/*debug option*/
#define DEBUGEN                0x37FF        // debugger enabled
#define DEBUGDIS        0x3FFF        // debugger disabled
/*code protection*/
#define PROTECT                0x1FFF        /* protect program code */
#define UNPROTECT        0x3FFF        /* do not protect the code */

问题:
为什么PIC单片机的配置字中,几个不同的功能,但头文件中,地址却是相同的呢?
zhanghqi 发表于 2021-8-8 21:58 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了
chuxh 发表于 2021-8-8 22:00 | 显示全部楼层
RC、WDTEN、BOREN、DUNPROT等都是一个位变量?
llljh 发表于 2021-8-8 22:03 | 显示全部楼层
你有什么打算呢?或者你想知道什么?
 楼主| renyaq 发表于 2021-8-8 22:04 | 显示全部楼层
为什么对应同一个地址0x3FFF呢?
 楼主| renyaq 发表于 2021-8-8 22:07 | 显示全部楼层
地址都是0x3FFF,如何区分不同的位呢?
kangzj 发表于 2021-8-8 22:12 | 显示全部楼层
还有什么现象?能再详细描述下吗?
shimx 发表于 2021-8-8 22:15 | 显示全部楼层
看芯片的数据手册
wangzsa 发表于 2021-8-8 22:17 | 显示全部楼层
是什么原因啊啊
zhanghqi 发表于 2021-8-8 22:19 | 显示全部楼层
设置的问题吧
zwll 发表于 2021-8-8 22:25 | 显示全部楼层
没碰到过
 楼主| renyaq 发表于 2021-8-8 22:27 | 显示全部楼层
比如WDTEN=1;BOREN =1;但它们的地址是相同的0x3FFF,如何区分它们的功能呢?
llljh 发表于 2021-8-8 22:29 | 显示全部楼层
也有可能是错了,如果是对的,那么会不会是这些地址不是同一区域的地址。
 楼主| renyaq 发表于 2021-8-8 22:32 | 显示全部楼层
如果是指的同一个绝对地址,那么会不会这些功能之间是需要同时开启或者同时关闭的
yinxiangh 发表于 2021-8-8 22:34 | 显示全部楼层
所以用了一个寄存器作为开关?
 楼主| renyaq 发表于 2021-8-8 22:36 | 显示全部楼层
这个问题困惑我好久了,希望哪位高手能回答一下,是不是头文件写错了?
chuxh 发表于 2021-8-8 22:39 | 显示全部楼层
0x3FFF不是地址,是设置的相应位的数据。0x3FFF相当于该位为"1",编译程序生成配置字时,各个配置位“&”,生成最终的配置字数据。
 楼主| renyaq 发表于 2021-8-8 22:41 | 显示全部楼层
感觉改成:#define RC  0B 0000 0000 0000 0001 这种形式,然后各个位相或,更容易让人理解。
zyf部长 发表于 2021-8-8 22:43 | 显示全部楼层
很有效率的嘛
xxrs 发表于 2021-8-8 22:46 | 显示全部楼层
这个是寄存器配置的值,不是寄存器地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部