?? i2czxxy.c
字號(hào):
#define uchar unsigned char
#define uint unsigned int
#include "LCD.h"
#include "msp430xE42x.h"
#define SCL BIT0
#define SDA BIT1
#define SCL_IN P2DIR &= ~SCL
#define SCL_OUT P2DIR |= SCL
#define SCL_L P2OUT &= ~SCL
#define SCL_H P2OUT |= SCL
#define SDA_IN P2DIR &= ~SDA
#define SDA_OUT P2DIR |= SDA
#define SDA_L P2OUT &= ~SDA
#define SDA_H P2OUT |= SDA
#define SDA_BIT P2IN & SDA
void start()//開始條件
{
SCL_OUT;
SDA_OUT;
SCL_L;
_NOP();
SDA_H;
_NOP();
SCL_H;
_NOP();
SDA_L;
_NOP();
SCL_L;
_NOP();
}
void stop()//停止條件
{
SCL_OUT;
SDA_OUT;
SCL_L;
_NOP();
SDA_L;
_NOP();
SCL_H;
_NOP();
SDA_H;
_NOP();
}
void ack(void)//應(yīng)答
{
SDA_H;
_NOP();
SCL_L;
_NOP();
SCL_H;
_NOP();
while(SDA_BIT){;}
SCL_L;
_NOP();
}
void no_ack(void)//無需應(yīng)答
{
SDA_H;
_NOP();
SCL_H;
_NOP();
while(SDA_BIT){;}
SCL_L;
_NOP();
}
void write(uchar j) //寫字節(jié)
{
uchar i,temp;
temp=j;
SCL_OUT;
SDA_OUT;
for(i=0; i<8; i++)
{
SCL_L;
_NOP();
if(temp & 0x80)
SDA_H;
else
SDA_L;
SCL_H;
_NOP();
temp <<=1;
}
SCL_L;
_NOP();
SDA_H;
_NOP();
}
uchar read() //讀字節(jié)
{
uchar i,j,byte=0;
SCL_OUT;
SDA_OUT;
SCL_L;
_NOP();
SDA_H;
SDA_IN;
for(i=0;i<8;i++)
{
_NOP();
SCL_H;
_NOP();
if(SDA_BIT)
j = 1;
else
j = 0;
byte =(byte<<1)|j;
SCL_L;
}
_NOP();
return(byte);
}
uchar testack() //測試應(yīng)答
{
uchar i=0,ack;
SDA_H;
SCL_OUT;
SDA_IN;
SCL_H;
_NOP();
while((SDA_BIT ==1)&&(i<100))
i++;
if(SDA_BIT ==1)
{
_NOP();
ack = 1;
}
else ack =0;
SCL_L;
_NOP();
SDA_OUT;
return(ack);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -