亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2c.c

?? msp430應用系統開發典型實例第6章程序代碼
?? C
字號:

#include "I2C.h"

void I2C_Initial( void )
{
    P1DIR |= BIT2;		//將SCL管腳(P1.2)設置為輸出管腳
    I2C_Set_sck_low();
    I2C_STOP();
    Delay_ms(10);
    return;
}
void I2C_Set_sda_high( void )
{
    P1DIR |= SDA;		//將SDA設置為輸出模式
    P1OUT |= SDA;		//SDA管腳輸出為高電平
    
    _NOP();
    _NOP();
    return;
}
void I2C_Set_sda_low ( void )
{
    P1DIR |= SDA;		//將SDA設置為輸出模式
    P1OUT &= ~(SDA);		//SDA管腳輸出為低電平
    
    _NOP();
    _NOP();
    return;
}
void I2C_Set_sck_high( void )
{
    P1DIR |= SCL;		//將SCL設置為輸出模式
    P1OUT |= SCL;		//SCL管腳輸出為高電平
    
    _NOP();
    _NOP();
    return;
}
void I2C_Set_sck_low ( void )
{
    P1DIR |= SCL;		//將SCL設置為輸出模式
    P1OUT &= ~(SCL);		//SCL管腳輸出為低電平
    
    _NOP();
    _NOP();
    return;
}
int  I2C_GetACK(void)
{
    int nTemp = 0;
    int j;
    
    _NOP();
    _NOP();
    I2C_Set_sck_low();
    for(j = 30;j > 0;j--);
    P1DIR &= ~(SDA);		//將SDA設置為輸入方向
    I2C_Set_sck_high();
    
    for(j = 30;j > 0;j--);
    nTemp = (int)(P1IN & SDA);	//獲得數據
    
    I2C_Set_sck_low();
    
    return (nTemp & SDA);
}
void I2C_SetACK(void)
{   
    I2C_Set_sck_low();
    I2C_Set_sda_low();
    I2C_Set_sck_high();
    I2C_Set_sck_low();
    return;
}
void I2C_SetNAk(void)
{
    I2C_Set_sck_low();
    I2C_Set_sda_high();
    I2C_Set_sck_high();
    I2C_Set_sck_low();
    return;
}
void I2C_START(void)
{
    int i;
    
    I2C_Set_sda_high();
    for(i = 5;i > 0;i--);
    I2C_Set_sck_high();
    for(i = 5;i > 0;i--);
    I2C_Set_sda_low();
    for(i = 5;i > 0;i--);
    I2C_Set_sck_low();
    return;
}
void I2C_STOP(void)
{
    int i;
    
    I2C_Set_sda_low();
    for(i = 5;i > 0;i--);
    I2C_Set_sck_low();
    for(i = 5;i > 0;i--);
    I2C_Set_sck_high();
    for(i = 5;i > 0;i--);
    I2C_Set_sda_high();
    for(i = 5;i > 0;i--);
    I2C_Set_sck_low();
    Delay_ms(10);		//延遲一點時間
    
    return;
}
void I2C_TxHToL(int nValue)
{
    int i;
    int j;
  
    for(i = 0;i < 8;i++)
    {
    	if(nValue & 0x80)
    	    I2C_Set_sda_high();
    	else
    	    I2C_Set_sda_low();
    	for(j = 30;j > 0;j--);
    	I2C_Set_sck_high();
    	nValue <<= 1;
    	for(j = 30;j > 0;j--);
    	I2C_Set_sck_low();
    }
    
    return;
}
void I2C_TxLToH(int nValue)
{
    int i;
    int j;
    for(i = 0;i < 8;i++)
    {
    	if(nValue & 0x01)
    	    I2C_Set_sda_high();
    	else
    	    I2C_Set_sda_low();
    	for(j = 30;j > 0;j--);
    	I2C_Set_sck_high();
    	nValue >>= 1;
    	for(j = 30;j > 0;j--);
    	I2C_Set_sck_low();
    }
    
    return;
}
/////////////////////////////////////////////
// 接收是從 LSB 到 MSB 的順序
int  I2C_RxByte(void)
{
    int nTemp = 0;
    int i;
    int j;
    
    I2C_Set_sda_high();
    
    P1DIR &= ~(SDA);			//將SDA管腳設置為輸入方向
    _NOP();
    _NOP();
    _NOP();
    _NOP();
    for(i = 0;i < 8;i++)
    {
    	I2C_Set_sck_high();
    	
    	if(P1IN & SDA)
    	{
    	    nTemp |= (0x01 << i);
    	}
    	for(j = 30;j > 0;j--);
    	I2C_Set_sck_low();
    }
    
    return nTemp;
}
///////////////////////////////////////////
// 獲取時間信息,成功返回 1,錯誤返回 0
int  I2C_Read (char *pBuf)
{
    int nTemp = 0;
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(0x65);			// 發送讀時間信息命令
    
    nTemp = I2C_GetACK();		// 等待 ACK
    
    pBuf[0] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[1] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[2] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[3] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[4] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[5] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[6] = I2C_RxByte();
    I2C_SetACK();
    
    pBuf[7] = I2C_RxByte();
    I2C_SetACK();
    
    I2C_STOP();				// 停止總線
    return nTemp;
}
///////////////////////////////////////
// 寫時間信息,成功返回 1,錯誤返回 0
int  I2C_Write(char *pBuf)
{
    int nTemp = 0;
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(0x64);			// 發送寫時間信息命令
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[0]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[1]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[2]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[3]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[4]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[5]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_TxLToH(pBuf[6]);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return 0;
    
    I2C_STOP();				// 停止總線
    return (nTemp & SDA);
}
int  I2C_Reset(void)
{
    int nTemp = 0;
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(0x60);			// 發送復位命令
    nTemp = I2C_GetACK();		// 等待 ACK
    
    I2C_STOP();				// 停止總線
    return (nTemp & SDA);
}
void Delay_ms(unsigned long nValue)//毫秒為單位,8MHz為主時鐘
{
    unsigned long nCount;
    int i;
    unsigned long j;
    nCount = 2667;
    for(i = nValue;i > 0;i--)
    {
    	for(j = nCount;j > 0;j--);
    }
    return;
}
void Delay_us(unsigned long nValue)//微秒為單位,8MHz為主時鐘
{
    int nCount;
    int i;
    int j;
    nCount = 3;
    for(i = nValue;i > 0;i--)
    {
    	for(j = nCount;j > 0;j--);
    }
    return;
}
void Test(unsigned char nVal)
{
    int nTemp = 0;
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(nVal);			// 發送復位命令
    nTemp = I2C_GetACK();		// 等待 ACK
    
    I2C_STOP();				// 停止總線
    
    return;
}
int  I2C_ReadSta(void)
{
    unsigned char nTemp = 0;
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(0x63);			// 發送讀狀態寄存器命令
    nTemp = I2C_GetACK();		// 等待 ACK
    
    nTemp = I2C_RxByte();
    I2C_SetACK();
    
    
    I2C_STOP();				// 停止總線
    
    return nTemp;
}
void I2C_WriteSta(int nValue)
{
    int nTemp = 0;
    char chrTemp = 0;
    chrTemp = (char)(nValue & 0x00ff);
    
    I2C_START();			// 啟動數據總線
    
    I2C_TxHToL(0x62);			// 發送寫時間信息命令
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return;
    
    I2C_TxLToH(chrTemp);
    nTemp = I2C_GetACK();		// 等待 ACK
    if(nTemp & BIT3) return;
    
    I2C_STOP();				// 停止總線
    
    return;
}
void Set24TimeMode(void)
{
    int nTemp;
    
    nTemp = 0;
    
    nTemp = I2C_ReadSta();
    nTemp |= BIT6;
    I2C_WriteSta(nTemp);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女网站色| 天天色天天操综合| 亚洲综合久久久久| 91激情在线视频| 最新国产の精品合集bt伙计| 国产大陆a不卡| 日本一区二区三区电影| 国产福利一区二区三区| 国产精品色哟哟| 欧美日韩在线电影| 亚洲成人手机在线| 欧美精品视频www在线观看| 热久久一区二区| 久久久久久久久久久99999| 国产精品一区二区不卡| 日韩三区在线观看| 久久99国产精品免费| 2021久久国产精品不只是精品| 亚洲va欧美va人人爽午夜| 在线精品视频免费播放| 午夜影院久久久| 日本不卡1234视频| 日韩美女在线视频| 韩国成人精品a∨在线观看| 9久草视频在线视频精品| www.一区二区| 亚洲欧美一区二区久久| 2欧美一区二区三区在线观看视频| 欧美va亚洲va| 蜜桃av一区二区在线观看| av在线一区二区| 日韩—二三区免费观看av| 精品国产一二三| 精品一区精品二区高清| 欧美电影免费观看完整版| 亚洲午夜影视影院在线观看| 亚洲激情中文1区| 国产日韩欧美精品一区| 久久久亚洲综合| 欧美三级日韩三级| 日韩欧美高清在线| 91久久线看在观草草青青| 欧美一区午夜精品| 国产三级精品三级| 亚洲第四色夜色| 国产精品女同一区二区三区| 日韩女优av电影| 日韩欧美你懂的| 久久精品一区二区三区四区| 欧美精品久久一区二区三区| 99精品国产一区二区三区不卡| 国产99久久精品| 高清国产午夜精品久久久久久| 午夜精品久久久久久久蜜桃app| wwwwww.欧美系列| 精品久久久久久久久久久久包黑料 | 久久九九国产精品| 在线观看一区不卡| 亚洲激情网站免费观看| 亚洲精品videosex极品| 免费的成人av| 久久精品国产免费看久久精品| 国产高清在线观看免费不卡| 91在线一区二区三区| 欧美日韩一区二区在线观看视频| 这里只有精品电影| 99国产一区二区三精品乱码| 蜜臀av一区二区在线免费观看| 精品第一国产综合精品aⅴ| 精品久久久影院| 日韩一级片网站| 国产日韩成人精品| 久久网这里都是精品| 成人精品视频.| 亚洲美女免费视频| 欧美一区二区免费| 99精品国产视频| 麻豆精品久久久| 最新不卡av在线| 欧美大片一区二区| 色国产综合视频| 激情成人综合网| 夜夜亚洲天天久久| 久久免费视频色| 欧美午夜电影网| 成人午夜视频在线观看| 天堂成人免费av电影一区| 欧美国产乱子伦| 欧美精品国产精品| 91老司机福利 在线| 国内精品久久久久影院一蜜桃| 一区二区三区在线观看网站| 久久久久久久久久久黄色| 91精品国产综合久久精品麻豆 | 91麻豆精品一区二区三区| 亚洲成人免费av| 国产精品国产a级| 久久精品欧美日韩| 91麻豆精品91久久久久久清纯| 97se亚洲国产综合自在线| 国产精品一区2区| 免费成人结看片| 亚洲最大成人综合| 国产色产综合产在线视频| 欧美裸体bbwbbwbbw| 色婷婷综合五月| kk眼镜猥琐国模调教系列一区二区| 免费看欧美女人艹b| 视频在线观看91| 亚洲高清一区二区三区| 亚洲免费在线看| 亚洲免费在线电影| 亚洲精品成人在线| 樱花影视一区二区| 一区二区三区日韩精品视频| 亚洲欧洲成人自拍| 亚洲欧洲美洲综合色网| 中文字幕一区二区三区四区不卡 | 国产丶欧美丶日本不卡视频| 麻豆视频一区二区| 蜜臀精品一区二区三区在线观看 | 中文久久乱码一区二区| 久久网站最新地址| 欧美激情在线一区二区| 国产欧美精品一区aⅴ影院| 欧美精品一区二区高清在线观看| 欧美精品三级日韩久久| 91精品欧美综合在线观看最新| 91精品国产欧美一区二区18| 欧美一级搡bbbb搡bbbb| 日韩免费福利电影在线观看| 26uuuu精品一区二区| 国产亚洲精品免费| 国产精品久久久久久久裸模| 亚洲精品视频免费看| 亚洲国产成人91porn| 日本欧美一区二区三区乱码| 经典三级在线一区| 成人免费视频一区二区| 色呦呦网站一区| 91精品福利在线一区二区三区 | 欧美日韩不卡一区二区| 欧美一区二区在线看| 久久久蜜桃精品| 国产精品嫩草99a| 一区二区三区丝袜| 免费成人在线观看| av中文字幕亚洲| 欧美日韩免费一区二区三区视频| 欧美一区二区视频在线观看2020 | 成人性生交大片免费看在线播放| 成人午夜av影视| 欧美日韩免费观看一区二区三区 | 欧美一区二区在线看| 国产婷婷色一区二区三区| 一区二区三区在线免费播放 | 亚洲一级二级三级| 激情都市一区二区| 欧美日韩日日夜夜| 国产精品国产三级国产aⅴ无密码| 亚洲一区二区在线观看视频 | 色婷婷久久综合| 精品久久久久99| 亚洲国产精品尤物yw在线观看| 狠狠色伊人亚洲综合成人| 色婷婷av一区二区三区软件 | 国产综合久久久久久鬼色 | 欧美zozozo| 亚洲一区二区三区在线播放| 国内精品第一页| 精品视频一区 二区 三区| 国产女人18水真多18精品一级做 | 亚洲乱码国产乱码精品精小说| 久久精品国产色蜜蜜麻豆| 欧洲一区二区三区在线| 国产午夜亚洲精品不卡| 日韩激情在线观看| 色狠狠综合天天综合综合| 久久久99精品免费观看不卡| 天堂久久久久va久久久久| 色噜噜狠狠成人网p站| 欧美韩国日本综合| 精品一区二区三区在线观看国产 | 性感美女极品91精品| 一本高清dvd不卡在线观看| 国产日韩欧美一区二区三区乱码| 日韩不卡手机在线v区| 欧美一a一片一级一片| 18欧美亚洲精品| 成人黄色小视频在线观看| 精品免费一区二区三区| 午夜精品一区二区三区免费视频| 91视频在线观看| 1024亚洲合集| 99re这里只有精品6| 国产精品福利影院| 成人免费毛片高清视频| 欧美激情一区二区| 国产精品一区二区久激情瑜伽| 久久免费看少妇高潮|