本帖最后由 hu9jj 于 2020-7-22 10:49 编辑
将SSP1替换成SSP2之后编译出错:
提示没有该成员:error: no member named 'RSSP2CON2bits' in 'SSP2CON2bits_t'。
替换后的代码如下:
void write_onchar(unsigned char chip_add, unsigned char reg_add, unsigned char data)
{
//PIF18F4520数据手册page194
PIR3bits.SSP2IF=0;
SSP2CON2bits.SEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=chip_add|0x00; //R/W=0;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=reg_add; //从器件寄存器地址
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=data; //从器件寄存器数据
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2CON2bits.PEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
}
unsigned char read_onechar(unsigned char chip_add, unsigned char reg_add)
{
//PIF18F4520数据手册page195
unsigned char TEMP;
PIR3bits.SSP2IF=0;
SSP2CON2bits.SEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=chip_add|0x00; //写器件地址,R/W=0,下一步写入;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=reg_add; //写DS1307寄存器地址;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
NOP();
SSP2CON2bits.RSSP2CON2bits.SEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2BUF=chip_add|0x01; //写器件地址,R/W=1,下一步读出;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
NOP();NOP();NOP();
SSP2CON2bits.RCEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
TEMP=SSP2BUF; //读收到的数据//////////////////
//while(!PIR3bits.SSP2IF);
//PIR3bits.SSP2IF=0;
SSP2CON2bits.ACKDT=1; //应答数据是高是低
SSP2CON2bits.ACKEN=1; //产生应答
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
SSP2CON2bits.PEN=1;
while(!PIR3bits.SSP2IF);
PIR3bits.SSP2IF=0;
return TEMP;
}
|