[8/16位单片机] PIC16F1503的ADCON1寄存器

[复制链接]
371|11
 楼主 | 2019-2-12 15:39 | 显示全部楼层 |阅读模式
PIC16F1503的SPEC中描述ADCON1是有ADCS寄存器的,但是编译的时候却说没定义。这是什么原因

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2019-2-12 15:56 | 显示全部楼层
语法错误。看芯片头文件里的定义
 楼主 | 2019-2-12 16:04 | 显示全部楼层
郑朝清 发表于 2019-2-12 15:56
语法错误。看芯片头文件里的定义

芯片头文件里没有定义
| 2019-2-12 16:25 | 显示全部楼层
直接用ADCON1bits.ADCS = xx;
| 2019-2-13 10:04 | 显示全部楼层
问编译相关的问题, 最好
1. 所用的编译环境IDE, 编译器版本
2.贴出有问题的原始代码, 而不是错误信息
不然, 人家怎么猜到你的到底是什么原因导致的错误嘛? 是吧.

下面是XC8 v2.00的PIC16F1503.h文件中关于ADCS的定义,
// bitfield definitions
typedef union {
    struct {
        unsigned ADPREF                 :2;
        unsigned                        :2;
        unsigned ADCS                   :3;
        unsigned ADFM                   :1;
    };
    struct {
        unsigned ADPREF0                :1;
        unsigned ADPREF1                :1;
    };
} ADCON1bits_t;
extern volatile ADCON1bits_t ADCON1bits __at(0x09E);

除此之外, 再无ADCS相关的声明了, 因此, 你需要使用楼上的方法:
ADCON1bits.ADCS = xx;
或者自行#define ADCS ADCON1bits.ADCS
然后才是你习惯的用法:
ADCS = xxx;
推荐使用第一种方法...

 楼主 | 2019-2-13 16:12 | 显示全部楼层
CoolSilicon 发表于 2019-2-13 10:04
问编译相关的问题, 最好
1. 所用的编译环境IDE, 编译器版本
2.贴出有问题的原始代码, 而不是错误信息

我还是MPLAB V8.90的,都没有你说的这个头文件。只能搜到p16f1503.inc
| 2019-2-14 10:16 | 显示全部楼层
inc是汇编头文件,你到底是用C还是汇编?用C得安装XC8编译器,MPLAB IDE v8是古董了,转用MPLAB X吧
 楼主 | 2019-2-14 14:59 | 显示全部楼层
systemchip 发表于 2019-2-14 10:16
inc是汇编头文件,你到底是用C还是汇编?用C得安装XC8编译器,MPLAB IDE v8是古董了,转用MPLAB X吧 ...

我用的C啊,C编译器是HI-TECH C V8.93但是我没找到C的头文件
 楼主 | 2019-2-14 15:06 | 显示全部楼层
CoolSilicon 发表于 2019-2-13 10:04
问编译相关的问题, 最好
1. 所用的编译环境IDE, 编译器版本
2.贴出有问题的原始代码, 而不是错误信息

今天找到1503的头文件了,确实没定义。自己加上去可以吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2019-2-14 17:37 | 显示全部楼层
根据你贴的头文件的图片, ADCS已经有定义,下面一条语句就可以把3个ADCS比特位都配置好了。

ADCON1bits.ADCS = xx;

| 2019-2-14 18:16 | 显示全部楼层
对啊,本来写一条语句就好,有必要非要使用三条语句来操作吗?
 楼主 | 2019-2-14 19:03 | 显示全部楼层
systemchip 发表于 2019-2-14 18:16
对啊,本来写一条语句就好,有必要非要使用三条语句来操作吗?

扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表