Я использую MPLABx и компилятор HI Tech PICC.Моя целевая микросхема - PIC16F876.Глядя на включаемый файл pic16f876.h, выясняется, что можно установить системные регистры микросхемы, ссылаясь на них по имени.
Например, в регистре CCP1CON, биты от 0 до 3установить, как работают модули CCP и PWM.Глядя на файл pic16f876.h, похоже, что можно ссылаться только на эти 4 бита, не меняя значения остальных регистров CCP1CON.
Однако я попытался сослаться наэти 4 бита различными способами, но безуспешно.
Я пробовал;
CCP1CON.CCP1M=0xC0; this results in "error: struct/union required
CCP1CON:CCP1M=0xC0; this results in "error: undefined identifier "CCP1M"
, но оба не удалось.Я прочитал руководство по компилятору Hi Tech PICC, но не могу понять, как это сделать.
Из файла pic16f876.h мне кажется, что я должен иметь возможность ссылаться на эти подмножества в системерегистрируется по имени, как они определены в файле .h.Кто-нибудь знает, как этого добиться?
Выдержка из pic16f876.h
// Register: CCP1CON
volatile unsigned char CCP1CON @ 0x017;
// bit and bitfield definitions
volatile bit CCP1Y @ ((unsigned)&CCP1CON*8)+4;
volatile bit CCP1X @ ((unsigned)&CCP1CON*8)+5;
volatile bit CCP1M0 @ ((unsigned)&CCP1CON*8)+0;
volatile bit CCP1M1 @ ((unsigned)&CCP1CON*8)+1;
volatile bit CCP1M2 @ ((unsigned)&CCP1CON*8)+2;
volatile bit CCP1M3 @ ((unsigned)&CCP1CON*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CCP1M : 4;
unsigned CCP1Y : 1;
unsigned CCP1X : 1;
};
struct {
unsigned CCP1M0 : 1;
unsigned CCP1M1 : 1;
unsigned CCP1M2 : 1;
unsigned CCP1M3 : 1;
};
} CCP1CONbits @ 0x017;
#endif