打印

PIC单片机12F508内部振荡问题

[复制链接]
4046|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangyi331|  楼主 | 2013-6-21 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大家,我用HI-TEH9.80开发12F508,出现一个问题,软件无法编译OSCCAL,但是头文件已经定义了OSCCAL
#include<pic.h>
//#include<htc.h>
//#include<piclite.h>
#include<pic12f508.h>

其中pic12f508.h里定义了
// Register: OSCCAL
volatile         unsigned char           OSCCAL              @ 0x005;
// bit and bitfield definitions
volatile bit CAL0                @ ((unsigned)&OSCCAL*8)+1;
volatile bit CAL1                @ ((unsigned)&OSCCAL*8)+2;
volatile bit CAL2                @ ((unsigned)&OSCCAL*8)+3;
volatile bit CAL3                @ ((unsigned)&OSCCAL*8)+4;
volatile bit CAL4                @ ((unsigned)&OSCCAL*8)+5;
volatile bit CAL5                @ ((unsigned)&OSCCAL*8)+6;
volatile bit CAL6                @ ((unsigned)&OSCCAL*8)+7;
为什么编译时候说未定义OSCCAL

Error   [800] F:\4TX\111.c; 31. undefined symbol "OSCCAL"
//Warning [1352] F:\4TX\111.c; 30. truncation of operand value (0x1ff) to 8 bits
沙发
zhangyi331|  楼主 | 2013-6-21 11:43 | 只看该作者
大神出来看看!
我个人感觉是编译器有问题,但是没证据。头文件什么都有引用的

使用特权

评论回复
板凳
hemporer| | 2013-6-21 11:58 | 只看该作者
#include<pic12f508.h> 不用也无所谓
看看芯片手册OSCCAL是干什么用的,可读写吗?

使用特权

评论回复
地板
zhangyi331|  楼主 | 2013-6-21 13:09 | 只看该作者
OSCCAL是内部振荡器校准寄存器,写入数据校准用。

使用特权

评论回复
5
yewuyi| | 2013-6-21 13:33 | 只看该作者
这是在PIC.H文件中搜索到的有关PIC12F508的头文件引用说明:
#if defined(_12C508)        || defined(_12C509)        ||\
    defined(_12F508)        || defined(_12F509)        ||\
    defined(_12C508A)        || defined(_12C509A)        ||\
    defined(_12CE518)        || defined(_12CE519)        ||\
    defined(_12C509AG)        || defined(_12C509AF)        ||\
    defined(_12CR509A)        || defined(_RF509AG)        ||\
    defined(_RF509AF)
        #include        <pic125xx.h>
#endif

-----------------------------------------
pic125xx.h这个文件和PIC.H在编译器安装目录的同一路径下。

使用特权

评论回复
6
yewuyi| | 2013-6-21 14:02 | 只看该作者
#include<pic12f508.h>

这个文件不需要,直接#include<pic.h>,然后在MPLAB中设置单片机型号即可,编译器会自动根据PIC.H中的引用路径调用正确的头文件。

使用特权

评论回复
7
llqjmy| | 2013-6-21 23:09 | 只看该作者
PICC 9.80应该很稳定。至于你这里的问题,是不是要设置头文件路径?

使用特权

评论回复
8
diy1997| | 2013-6-21 23:50 | 只看该作者
以前遇到过这种情况, 12F506  PICC 9.80 下编译时也说有个寄存器未定义,换9.65就没有报错.

使用特权

评论回复
9
zhangyi331|  楼主 | 2013-6-22 13:57 | 只看该作者
目前问题初步解决,我把校准寄存器放到程序的最后一行(他的下一行是“}”),编译器居然就能通过编译不在出现OSCCAL未定义的错误,有点邪门!(我猜应该是这个编译器在用F508设计的时候程序起始位置就是最后一行的----我软件仿真的时候发现的),大家怎么看呢?

使用特权

评论回复
10
tt98| | 2013-7-1 11:18 | 只看该作者
__CONFIG    在哪?

使用特权

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

本版积分规则

个人签名:Say you,see me!

4

主题

34

帖子

0

粉丝