📄 icc.h~
字号:
#ifndef __ICC_H__
#define __ICC_H__
#include "MEGA16.h"
#define TWI_START 0xa5;
#define TWI_STOP 0x95;
#define TWI_EN 0x85;
#define TWI_ACK 0xc5;
#define TWI_NACK 0x85;
#define SLA_W 0xd0;
#define SLA_R 0xd1;
#define MCP_PEIZHI 0x84; //更新、单次、14bit\增益1
bit i2c_w;
bit i2c_r;
uchar dianya[4];
void error(void)
{ ;
}
unsigned char i2c_writew(void)
{
uchar r=1;
TWCR=TWI_START; //START
while(!(TWCR&0x80))
#asm("wdr");
if((TWSR&0xF8)!=0x08)
r=0;
TWDR=SLA_W;
TWCR=TWI_EN;
while(!(TWCR&0x80))
#asm("wdr");
if((TWSR&0xF8)!=0x18)
r=0;
TWDR=MCP_PEIZHI;
TWCR=TWI_EN;
while(!(TWCR&0x80))
#asm("wdr");
if((TWSR&0xF8)!=0x28)
r=0;
TWCR=TWI_STOP;
i2c_w=1;
return r;
}
unsigned char i2c_readw(void)
{
uchar i,r=1;
TWCR=TWI_START;
while(!(TWCR&0x80));
if((TWSR&0xf8)!=0x08)
r=0;
TWDR=SLA_R;
TWCR=TWI_EN;
while(!(TWCR&0x80));
if((TWSR&0xf8)!=0x40)
r=0;
TWCR=TWI_ACK;
for(i=0;i<4;i++)
{
while(!(TWCR&0x80));
if((TWSR&0xf8)!=0x50)
r=0;
dianya[i]=TWDR;
if(i<3)
TWCR=TWI_ACK;
else
TWCR=TWI_NACK;
}
while(!(TWCR&0x80));
if((TWSR&0xf8)!=0x58)
r=0;
TWCR=TWI_STOP;
i2c_r=1;
return r;
}
void i2c_chuli(void)
{
uchar diaoyong;
diaoyong=i2c_writew();
while(i2c_w==0)
#asm("wdr");
i2c_w=0;
if(diaoyong==0)
error();
else
{
diaoyong=i2c_readw();
while(i2c_r==0)
#asm("wdr");
i2c_r=0;
if(diaoyong==0)
error();
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -