打印

头文件

[复制链接]
661|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2020-3-21 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 renyaq 于 2020-3-21 11:50 编辑

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单片机的配置字中,几个不同的功能,但头文件中,地址却是相同的呢?

使用特权

评论回复
沙发
huwr| | 2020-3-21 11:23 | 只看该作者
本帖最后由 huwr 于 2020-3-21 11:50 编辑

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
songqian17| | 2020-3-21 11:25 | 只看该作者
本帖最后由 songqian17 于 2020-3-21 11:51 编辑

RC、WDTEN、BOREN、DUNPROT等都是一个位变量?

使用特权

评论回复
地板
llljh| | 2020-3-21 11:27 | 只看该作者
本帖最后由 llljh 于 2020-3-21 11:51 编辑

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
5
renyaq|  楼主 | 2020-3-21 11:30 | 只看该作者
本帖最后由 renyaq 于 2020-3-21 11:52 编辑

为什么对应同一个地址0x3FFF呢?

使用特权

评论回复
6
renyaq|  楼主 | 2020-3-21 11:31 | 只看该作者
本帖最后由 renyaq 于 2020-3-21 11:52 编辑

地址都是0x3FFF,如何区分不同的位呢?

使用特权

评论回复
7
kangzj| | 2020-3-21 11:33 | 只看该作者
本帖最后由 kangzj 于 2020-3-21 11:53 编辑

还有什么现象?能再详细描述下吗?

使用特权

评论回复
8
wangpe| | 2020-3-21 11:36 | 只看该作者
看芯片的数据手册

使用特权

评论回复
9
wangzsa| | 2020-3-21 11:38 | 只看该作者
是什么原因啊啊

使用特权

评论回复
10
wenfen| | 2020-3-21 11:43 | 只看该作者

设置的问题吧

使用特权

评论回复
11
zwll| | 2020-3-21 11:44 | 只看该作者
本帖最后由 zwll 于 2020-3-21 11:53 编辑

没碰到过

使用特权

评论回复
12
renyaq|  楼主 | 2020-3-21 11:53 | 只看该作者
比如WDTEN=1;BOREN =1;但它们的地址是相同的0x3FFF,如何区分它们的功能呢?

使用特权

评论回复
13
llljh| | 2020-3-21 11:56 | 只看该作者
也有可能是错了,如果是对的,那么会不会是这些地址不是同一区域的地址。

使用特权

评论回复
14
renyaq|  楼主 | 2020-3-21 11:58 | 只看该作者
如果是指的同一个绝对地址,那么会不会这些功能之间是需要同时开启或者同时关闭的

使用特权

评论回复
15
yinxiangh| | 2020-3-21 12:00 | 只看该作者
所以用了一个寄存器作为开关?

使用特权

评论回复
16
renyaq|  楼主 | 2020-3-21 12:01 | 只看该作者
这个问题困惑我好久了,希望哪位高手能回答一下,是不是头文件写错了?

使用特权

评论回复
17
lium| | 2020-3-21 12:03 | 只看该作者
0x3FFF不是地址,是设置的相应位的数据。0x3FFF相当于该位为"1",编译程序生成配置字时,各个配置位“&”,生成最终的配置字数据。

使用特权

评论回复
18
renyaq|  楼主 | 2020-3-21 12:05 | 只看该作者
感觉改成:#define RC  0B 0000 0000 0000 0001 这种形式,然后各个位相或,更容易让人理解。

使用特权

评论回复
19
zyf部长| | 2020-3-21 12:07 | 只看该作者
很有效率的嘛

使用特权

评论回复
20
renyaq|  楼主 | 2020-3-21 12:11 | 只看该作者
多谢大家讨论这么多哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

粉丝