打印

请教:为啥PIC单片机头文件不同位变量对应同一地址?

[复制链接]
1176|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wf8u8|  楼主 | 2018-9-17 19: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单片机的配置字中,几个不同的功能,但头文件中,地址却是相同的呢?
比如:RC、WDTEN、BOREN、DUNPROT等都是一个位变量,为什么对应同一个地址0x3FFF呢?
地址都是0x3FFF,如何区分不同的位呢?比如WDTEN=1;BOREN =1;但它们的地址是相同的0x3FFF,如何区分它们的功能呢?
沙发
北极风| | 2018-9-18 08:23 | 只看该作者
那不是地址,是配置字各位的定义。

使用特权

评论回复
板凳
ayb_ice| | 2018-9-18 10:20 | 只看该作者
那是值,不是地址

使用特权

评论回复
地板
hyxstrive| | 2018-9-19 22:10 | 只看该作者
ayb_ice 发表于 2018-9-18 10:20
那是值,不是地址

学习了。

使用特权

评论回复
5
JLennon| | 2018-10-19 08:22 | 只看该作者
宏定义。

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝