?? iic.c
字號:
#include <msp430x14x.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define SCL_H P1OUT |= BIT1
#define SCL_L P1OUT &= ~BIT1
#define SDA_H P1OUT |= BIT0
#define SDA_L P1OUT &= ~BIT0
#define SCL_out P1DIR |= BIT1 //SCL設置為輸出模式
#define SDA_in P1DIR &= ~BIT0 //SDA改成輸入模式
#define SDA_out P1DIR |= BIT0 //SDA變回輸出模式
#define SDA_val P1IN&BIT0 //SDA的位值
#define TRUE 1
#define FALSE 0
/*******************************************
函數(shù)名稱:Set_IO
功 能:設置IIC對應IO為輸出方向并輸出高電平
參 數(shù):無
返回值 :無
********************************************/
void Set_IO(void)
{
SCL_out;
SDA_out;
SCL_H;
SDA_H;
}
/*******************************************
函數(shù)名稱:delay
功 能:延時約100us的時間
參 數(shù):無
返回值 :無
********************************************/
void delay(void)
{
uchar i;
for(i = 0;i < 15;i++)
_NOP();
}
/*******************************************
函數(shù)名稱:start
功 能:完成IIC的起始條件操作
參 數(shù):無
返回值 :無
********************************************/
void start(void)
{
SCL_H;
SDA_H;
delay();
SDA_L;
delay();
SCL_L;
delay();
}
/*******************************************
函數(shù)名稱:stop
功 能:完成IIC的終止條件操作
參 數(shù):無
返回值 :無
********************************************/
void stop(void)
{
SCL_H;
SDA_L;
delay();
SDA_H;
delay();
}
/*******************************************
函數(shù)名稱:check
功 能:檢查從機的應答操作
參 數(shù):無
返回值 :從機是否有應答:1--有,0--無
********************************************/
uchar check(void)
{
uchar slaveack;
SDA_in;
SCL_H;
delay();
slaveack = SDA_val; //讀入SDA數(shù)值
SCL_L;
delay();
SDA_out;
if(slaveack) return FALSE;
else return TRUE;
}
/*******************************************
函數(shù)名稱:write1
功 能:向IIC總線發(fā)送一個1
參 數(shù):無
返回值 :無
********************************************/
void write1(void)
{
SDA_H;
delay();
SCL_H;
delay();
SCL_L;
delay();
}
/*******************************************
函數(shù)名稱:write0
功 能:向IIC總線發(fā)送一個0
參 數(shù):無
返回值 :無
********************************************/
void write0(void)
{
SDA_L;
delay();
SCL_H;
delay();
SCL_L;
delay();
}
/*******************************************
函數(shù)名稱:write1byte
功 能:向IIC總線發(fā)送一個字節(jié)的數(shù)據(jù)
參 數(shù):wdata--發(fā)送的數(shù)據(jù)
返回值 :無
********************************************/
void write1byte(uchar wdata)
{
uchar i;
for(i = 8;i > 0;i--)
{
if(wdata & 0x80) write1();
else write0();
wdata <<= 1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -