📄 iic.h
字号:
#define IIC_add1 0x48 //the first iic device address
#define IIC_add2 0x49 //the second iic device address
uchar bytectr=0;
uchar flag=0;
long wendu;
long shishu,shishu_inner,shishu_outer;
int IIC_test(uchar dev);
/*
dev: 0:the outer sense
1:the inner sense
return wendu
*/
int IIC_test(uchar dev)
{
uchar IIC_add;
if(dev==0)
{
IIC_add=IIC_add1;
}
else
{
IIC_add=IIC_add2;
}
P3SEL|=0X06;
//ta=IIC_add1<<1+1;
UCB0CTL1|=UCSWRST; //INIT ALL REGESIT AND PORT
UCB0CTL0=UCMODE1+UCMODE0+UCSYNC+UCMST;//USCI MODE SELECT,IIC MODE
// UCB0CTL0&=~
UCB0CTL0&=~UCSLA10;//SLAVE ADDRESS WITH 7BIT
UCB0CTL1=UCSSEL_2+UCSWRST;
UCB0BR0=11;
UCB0BR1=0;
UCB0I2CSA=IIC_add;
UCB0CTL1 &=~UCSWRST; //SOFTWARE RESET,RELEASE
UCB0I2CIE|=UCNACKIE;
IE2|=UCB0RXIE;
_EINT(); //open all interrupt
UCB0CTL1&=~UCTR;
UCB0CTL1|=UCTXSTT;//START
return shishu;
}
/*
the function of the interrupt
*/
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCIAB0RX_ISR()
{
//while((IFG2&UCB0RXIFG));
if(bytectr==1)
{
UCB0CTL1|=UCTXSTP;
wendu|=UCB0RXBUF>>4;
UCB0CTL1|=UCTXSTP;
shishu=wendu*100/1600;
}
else
{
wendu=UCB0RXBUF<<4;
bytectr++;
}
}
void iic_run()
{
IIC_test(1);
shishu_inner=shishu;
IIC_test(0);
shishu_outer=shishi;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -