📄 有哪位高手在iccavr下用过pcf8563时钟芯片啊? (ourdev_cn 我们的电子开发社区).mht
字号:
=
<BR><BR>//---------------------------------------------------------------=
-----------------=20
=
<BR>//Func Name: TWI/=
I2C Write Byte=20
=
<BR>//Parameter: Device&nb=
sp;Address (DeviceAddr), Data Address (DataAddr),&nbs=
p;Data (Data)=20
=
<BR>//Return Value: v=
oid=20
=
<BR>//Description: TWI/I2C=
one byte write operation=20
=
<BR>//-------------------------------------------------------------------=
-------------=20
=
<BR>void TWIWriteAddr(unsigned int DeviceAddr,unsigned&nbs=
p;int DataAddr) =20
<BR>{ =20
=
<BR> //unsigned char&=
nbsp;i; =20
<BR> =20
=
<BR> TWCR =
;=3D (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); =20
=
<BR> whi=
le(!(TWCR & (1<<TWINT))); =20
=
<BR> if(=
(TWSR & 0xf8) !=3D START) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> &nb=
sp;TWDR =3D DeviceAddr|TWI_WRITE; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_SLAW_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> &nb=
sp;=20
=
<BR> &nb=
sp;TWDR=3DDataAddr; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_DATA_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> //T=
WDR =3D Data; =20
=
<BR> //T=
WCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;//while (!(TWCR & (1<<TWINT))); =20
=
<BR> //i=
f ((TWSR&0xF8)!=3D MT_DATA_ACK) =20
=
<BR> //&=
nbsp; ErrorCode =3D ER=
ROR_CODE_TWI; =20
=
<BR><BR> TWCR&=
nbsp;=3D(1<<TWINT)|(1<<TWEN)|(1<<TWSTO); =20
<BR>} =20
=
<BR><BR><BR>//-----------------------------------------------------------=
---------------------=20
=
<BR>//Func Name: TWI/=
I2C Write Byte=20
=
<BR>//Parameter: Device&nb=
sp;Address (DeviceAddr), Data Address (DataAddr),&nbs=
p;Data (Data)=20
=
<BR>//Return Value: v=
oid=20
=
<BR>//Description: TWI/I2C=
one byte write operation=20
=
<BR>//-------------------------------------------------------------------=
-------------=20
=
<BR>void TWIWriteByte(unsigned int DeviceAddr,unsigned&nbs=
p;int DataAddr,unsigned int Data) =20
<BR>{ =20
=
<BR> //unsigned char&=
nbsp;i; =20
<BR> =20
=
<BR> TWCR =
;=3D (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); =20
=
<BR> whi=
le(!(TWCR & (1<<TWINT))); =20
=
<BR> if(=
(TWSR & 0xf8) !=3D START) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> &nb=
sp;TWDR =3D DeviceAddr|TWI_WRITE; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_SLAW_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> &nb=
sp;=20
=
<BR> &nb=
sp;TWDR=3DDataAddr; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_DATA_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> TWD=
R =3D Data; =20
=
<BR> TWC=
R =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR&0xF8)!=3D MT_DATA_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR><BR> TWCR&=
nbsp;=3D(1<<TWINT)|(1<<TWEN)|(1<<TWSTO); =20
<BR>} =20
=
<BR><BR><BR>//-----------------------------------------------------------=
---------------------=20
=
<BR>//Func Name: TWI/=
I2C Write Word=20
=
<BR>//Parameter: Device&nb=
sp;Address (DeviceAddr), Data Address (DataAddr),&nbs=
p;Data (Data)=20
=
<BR>//Return Value: v=
oid=20
=
<BR>//Description: TWI/I2C=
one word write operation=20
=
<BR>//-------------------------------------------------------------------=
-------------=20
=
<BR>void TWIWriteWord(unsigned int DeviceAddr,unsigned&nbs=
p;int DataAddr,unsigned int Data) =20
<BR>{ =20
=
<BR> unsigned int&nbs=
p;i; =20
<BR> =20
=
<BR> TWCR =
;=3D (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); =20
=
<BR> whi=
le(!(TWCR & (1<<TWINT))); =20
=
<BR> if(=
(TWSR & 0xf8) !=3D START) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> &nb=
sp;TWDR =3D DeviceAddr|TWI_WRITE; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_SLAW_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> &nb=
sp;=20
=
<BR> &nb=
sp;TWDR=3DDataAddr; =20
=
<BR> &nb=
sp;TWCR =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR & 0xf8)!=3D MT_DATA_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
=
<BR> i=3D=
Data;=20
=
<BR> TWD=
R =3D i>>8; =20
=
<BR> TWC=
R =3D (1<<TWINT)|(1<<TWEN); =20
=
<BR> &nb=
sp;while (!(TWCR & (1<<TWINT))); =20
=
<BR> if&=
nbsp;((TWSR&0xF8)!=3D MT_DATA_ACK) =20
=
<BR> &nb=
sp; ErrorCode =3D ERRO=
R_CODE_TWI; =20
=
<BR> =20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -