使用未声明的标识符“ RD16”

时间:2018-10-07 18:13:52

标签: c pic mplab xc8

我正在尝试为PIC18F4550设置TMR1 T1CON寄存器,但出现与RD16位有关的错误。我得到:

config.c:17:1: error: use of undeclared identifier 'RD16'
RD16 = 1;
^
1 error generated.

根据数据表:

  

RD16:16位读/写模式使能位

     

1 =通过16位操作使能Timer1的寄存器读/写

     

0 =通过两个8位操作使能Timer1的寄存器读/写

我阅读了一些帖子,应该是正确的。我在使用XC8和MPLab

我的config.c完整代码:

#include <xc.h>
void configPIC(void){
    T3CCP2:T3CCP1 = 01;   //TMR1 para CCP1    
    CCP1M0 = 0;           //Captura flancos de subida
    CCP1M1 = 1;
    CCP1M2 = 0;
    CCP1M3 = 1;
    CCP1IF = 0 ;          //Bandera de Captura CCP1
}

void timer1config(void){
    //TMR1 Config Registros   
    TMR1ON = 1;
    RD16   = 1;
    T1RUN  = 0;     //Usar reloj interno
    TMR1CS = 0;     // FOSC / 4
    T1CKPS1:T1CKPS0 = 00;
    T1OSCEN = 0;
}

2 个答案:

答案 0 :(得分:1)

RD16 位于T1CON 字节 /寄存器中。 xc.h标头将其指定为这样的T1CONbits结构中的位域成员,该结构取自here

extern volatile near union {
  struct {
    unsigned TMR1ON:1;
    unsigned TMR1CS:1;
    unsigned T1SYNC:1;
    unsigned T1OSCEN:1;
    unsigned T1CKPS0:1;
    unsigned T1CKPS1:1;
    unsigned T1RUN:1;
    unsigned RD16:1;
  };
  struct {
    unsigned :2;
    unsigned NOT_T1SYNC:1;
  };
} T1CONbits;

您应该这样使用它:

T1CONbits.RD16 = 1;

与PIC器件上任何寄存器内的所有其他位一样。检查p18f4500.h标头以找出所有寄存器的名称。

PS。无论如何,我想补充一点,如果您正在使用免费的xc8编译器或sdcc编译器将PIC18用于自定义项目,请不要这样做,请将所有pic设备放入垃圾桶,并购买更便宜,更快,更好和更简单的产品STM32器件。除非您使用付费xc8编译器或为必须使用PIC的项目工作,否则不要浪费时间。

答案 1 :(得分:1)

尝试这样的事情:

#include <xc.h>
void configPIC(void){
    T3CONbits.T3CCP2   = 0;      //TMR1 para CCP1    
    T3CONbits.T3CCP1   = 0;
    CCP1CONbits.CCP1M0 = 0;      //Captura flancos de subida
    CCP1CONbits.CCP1M1 = 1;
    CCP1CONbits.CCP1M2 = 0;
    CCP1CONbits.CCP1M3 = 1;
    PIR1bits.CCP1IF    = 0;      //Bandera de Captura CCP1
}



void timer1config(void){
    T1CONbits.TMR1ON  = 1;
    T1CONbits. RD16   = 1;
    T1CONbits.T1RUN   = 0;      //Usar reloj interno
    T1CONbits.TMR1CS  = 0;      // FOSC / 4
    T1CONbits.T1CKPS1 = 0;
    T1CONbits.T1CKPS0 = 0;
    T1CONbits.T1OSCEN = 0;
}

您可能想看看Microchip代码配置器。它可以为您完成很多配置工作。