本帖最后由 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;
- }
|