[讨论] 坛子里有XC8的大侠没有,请教一个问题

cawyai23   2014-2-3 11:38 楼主
各位大侠,请问,RB口弱上拉使能位如何设置?我在XC8中设置为RBPU,结果报错,请问,怎么设置啊?还有就是,我设置选项寄存器OPTION,XC8也报错,请问,我该怎么设置啊?我用的单片机型号是PIC16F877A

回复评论 (14)

MPLABX?自己去相应的头文件中找寄存器定义啊。
配置位是可以用软件直接生成代码的。
点赞  2014-2-3 12:09
引用: lcofjp 发表于 2014-2-3 12:09
MPLABX?自己去相应的头文件中找寄存器定义啊。
配置位是可以用软件直接生成代码的。

下面这段,我是在网上博客里复制先来的
请问,我若是设置端口B弱上拉,该怎么书写?

//*  OPTION bits 选择寄存器  */
static bank1 bit RBPU @ (unsigned)&OPTION*8+7; //端口B上拉设置允许位
static bank1 bit INTEDG @ (unsigned)&OPTION*8+6; //外中断源选择位
static bank1 bit T0CS @ (unsigned)&OPTION*8+5; //时钟选择位。T0CS=0,使用内部时钟;T0CS=1,使用外部时钟。
static bank1 bit T0SE @ (unsigned)&OPTION*8+4; //计数器使用外部时钟,T0SE=0,上升沿触发;T0SE=1,下降沿触发。
static bank1 bit PSA  @ (unsigned)&OPTION*8+3; //PSA=0,作为time0的预分频器;PSA=1,作为WDT的后分频器。
static bank1 bit PS2  @ (unsigned)&OPTION*8+2; //PS2,PS1,PS0。预分频比例。000=1:2(Timer0)1:1(WDT)...
static bank1 bit PS1  @ (unsigned)&OPTION*8+1; //
static bank1 bit PS0  @ (unsigned)&OPTION*8+0; //
点赞  2014-2-3 12:27
引用: lcofjp 发表于 2014-2-3 12:09
MPLABX?自己去相应的头文件中找寄存器定义啊。
配置位是可以用软件直接生成代码的。

图是我在网上博客里截出来的,如果我设置端口B弱上拉,怎么书写啊?设置选择寄存器该怎么书写?
  • QQ图片20140203122932.jpg
点赞  2014-2-3 12:31
真不明白你为什么要去网上查寄存器的定义,难道编译器的头文件里没有吗,你能保证网上的和编译器一样吗,最终是要以编译器提供的为准的,网上的仅供参考。
点赞  2014-2-3 12:34
我只是曾经接触过PIC单片机,现在没用,手头也没有他的编译器,具体如何设置要看手册的,不要总去参考网上的东西。要参考你也要保证你参考的开发环境是一样的,否则是一点意义都没有的。
点赞  2014-2-3 12:40
  1. extern volatile __bit                   nPOR                @ (((unsigned) &PCON)*8) + 1;
  2. #define                                 nPOR_bit            BANKMASK(PCON), 1
  3. extern volatile __bit                   nRBPU               @ (((unsigned) &OPTION_REG)*8) + 7;
  4. #define                                 nRBPU_bit           BANKMASK(OPTION_REG), 7
  5. extern volatile __bit                   nRC8                @ (((unsigned) &RCSTA)*8) + 6;
  6. #define                                 nRC8_bit            BANKMASK(RCSTA), 6



这才是XC8里面的定义。
点赞  2014-2-3 14:59
寄存器全名是 OPTION_REG      RB口弱上拉控制位全名为 NOT_RBPU
我用汇编是这样写的:  bcf    OPTION_REG,NOT_RBPU    ; 允许RB口弱上拉

你目前该使用PIC16F887芯片,有详细的中文手册 价格比16F877A便宜---还好用!
专业:PIC单片机软硬件开发 http://shop104728125.taobao.com
点赞  2014-2-4 14:43
引用: lcofjp 发表于 2014-2-3 14:59
这才是XC8里面的定义。

老大,这个编译器里面的头文件,是怎么看的啊?有时间的话,能否讲解一下啊?
点赞  2014-2-5 18:35
引用: youmcu 发表于 2014-2-4 14:43
寄存器全名是 OPTION_REG      RB口弱上拉控制位全名为 NOT_RBPU
我用汇编是这样写的:  bcf    OPTION_REG ...

我买的教材书都是用PIC16F877A的。
寄存器名这些全部在编译器头文件中吗?如何看啊?我找了下编译器里面的头文件,但是看的头大,一点都看不懂,老大,有时间,能否说说怎么看的啊?
点赞  2014-2-5 18:37
汇编的是打开对应的  .inc 头文件,

16f877a.JPG

专业:PIC单片机软硬件开发 http://shop104728125.taobao.com
点赞  2014-2-5 20:39
引用: cawyai23 发表于 2014-2-5 18:37
我买的教材书都是用PIC16F877A的。
寄存器名这些全部在编译器头文件中吗?如何看啊?我找了下编译器里面 ...

寄存器详细说明还是要看芯片手册, 头文件中的定义可能与手册略有不同--在编译出错时可查看:
16f877a.JPG

专业:PIC单片机软硬件开发 http://shop104728125.taobao.com
点赞  2014-2-5 20:55
16f877a.JPG
专业:PIC单片机软硬件开发 http://shop104728125.taobao.com
点赞  2014-2-5 20:58

  1. #define BIT7 0x80
  2. nRBPU = 0xFF;           // 设置PORTB0~7为弱上拉
  3. OPTION_REG &= ~BIT7;    // 使能PRRTB弱上拉

这个是XC8的代码,跟picc 9.83是一样的
科技改变生活
点赞  2014-2-6 22:29
问下,用XC8编译出现cgpic18.exe应用程序错误是什么原因呀??
点赞  2015-1-22 10:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复