MPLABx와 HI Tech PICC 컴파일러를 사용하고 있습니다. 내 타겟 칩은 PIC16F876입니다. pic16f876.h 인클루드 파일을 보면 이름을 참조하여 칩의 시스템 레지스터를 설정할 수 있어야합니다.하이테크 PICC를 사용하여 PIC16F876의 레지스터 값 설정
예를 들어 CCP1CON 레지스터 내에서 0 ~ 3 비트는 CCP 및 PWM 모듈의 작동 방식을 설정합니다. pic16f876.h 파일을 보면 CCP1CON 레지스터의 나머지 값을 변경하지 않고 이러한 4 비트 만 참조 할 수 있어야합니다.
그러나 나는이 4 비트를 다양한 방법으로 참조하려고 시도했지만 성공하지 못했습니다.
나는 시도했다.
CCP1CON.CCP1M=0xC0; this results in "error: struct/union required
CCP1CON:CCP1M=0xC0; this results in "error: undefined identifier "CCP1M"
그러나 모두 실패했습니다. 하이테크 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
고마워요! 내가 잃어버린 "비트"추가 사항이었다. 나는 PICC 매뉴얼 어디서나 그것을 찾을 수 없습니다. 내가 놓친 게 있니? 당신은 정확합니다, 이것은 훨씬 더 깨끗합니다. 그래서 나는 그것을하려고 노력했습니다. 나는 지금까지 개별 비트 할당을 해왔다. – Michael