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

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

?? msp430f169的i2c程序(僅供參考).c

?? MSP430讀寫24C02模擬IIC程序和硬件I2C程序
?? C
字號:
MSP430F169的i2c程序(僅供參考)

/************************************************************
*文件名:msp430f169i2c.c
*整體描述:MSP430F169單片機硬件IIC軟件,字節方式,主方式
* IIC接口:P3.3=SCL,P3.1=SDA;(開漏輸出)
* 相應寄存器:地址寄存器 I2COA 用于存放自身從地址(從方式時才有用)
* 地址寄存器 I2CSA 用于存放外圍的從機地址(主方式時才有用)
* 控制寄存器 U0CTL 硬件I2C的設置、使能、模式等。
發送控制寄存器 I2CTCTL
* 數據控制寄存器 I2CDCTL 指示I2C總線的狀態
*
* U0CTL -- RXDMAEN,TXDMAEN,I2C, XA, LISREN,SYNC,MST,I2CEN 
* 0 0 1 0 0 1 1 1 (0x17)
* I2CTCTL --I2CWORD,I2CRM,I2CSSEL1,I2XSSEL0, I2CTRX,I2CSTB, I2CSTP, I2CSTT 
* 0 1 1 0 * 0 * * 
* I2C從機AT24C512,注意從機讀寫地址的定義:(MSB) 1 0 1 0 0 A1 A0 R/W (LSB)
*作者: jy
*狀態: 通過
************************************************************/
#include <msp430x16x.h>
#include "fpgacode.h"

#define WR24C512
#define SDA_1 P3OUT |= BIT1 //串行數據線,SDA = 1
#define SDA_0 P3OUT &=~ BIT1 //SDA = 0
#define SCL_1 P3OUT |= BIT3 //串行時鐘線,SCL = 1
#define SCL_0 P3OUT &=~ BIT3 //SCL = 0

#define SDADIR_IN P3DIR &=~ BIT1 //SDA,I/O口為輸入
#define SDADIR_OUT P3DIR |= BIT1 //I/0口為輸出
#define SDA_IN ((P3IN >> 1) & 0x01) //Read SDA

#define SCLDIR_IN P3DIR &=~ BIT3 //SCL,I/O口為輸入
#define SCLDIR_OUT P3DIR |= BIT3 //I/0口為輸出
#define SCL_IN ((P3IN >> 3) & 0x01) //Read SCL

#ifdef WR24C512
static int numi = 0; //Data Pointer
#else
static int numj = 0; //Data Pointer
#endif

#define I2CSLA 0x50

/*--------------------------------------------------------
--功能描述: 檢查總線是否空閑
--子程序狀況: 09-23調試通過
----------------------------------------------------------
--*/
void I2c_Idle_Check(void)
{
while (I2CBUSY & I2CDCTL); // I2C ready? 在空閑狀態:0,空閑;1:忙
}

/*--------------------------------------------------------
--功能描述: 延時
----------------------------------------------------------
--*/
void DelayTime10us(unsigned char n)
{
unsigned char i;
while(n--) // 5 cycles 
for(i=0;i<10;i++); // 8mhz 110:771 + 4 to while
}

/*---------------------------------------------------------
--功能描述:發送數據:用于向總線發送數據
--子程序狀況: 09-23調試通過
-----------------------------------------------------------
--*/
void I2cBusSendByte(unsigned char c)
{ 
while((I2CIFG & TXRDYIFG) != TXRDYIFG); // 檢測發送準備
I2CDRB = c; // 寫發送寄存器 
}

/*------------------ MSP430 I2C 寫數據 09-23調試通過---------------------*/ 
/*--------------------------------------------------------
--功能描述:申請總線:進行I2C總線的初始化-發送起始信號
--子程序狀況: 09-23調試通過
----------------------------------------------------------
--*/
void I2C_Send(unsigned char ndatNum)
{ 
// 注意:通訊結束,I2CMST 自動清零,再次通訊必須重新置位
P3OUT = 0x00; // clear P3 output register 
P3SEL = 0x0A; // P3.1=SDA, P3.3=SCL,Select I2C pins, Setup I2C module 
U0CTL |= (I2C + SYNC); // select I2C mode;XA=0,7bit_addresing;
U0CTL &= ~I2CEN; // i2c功能使能無效 
// I2CTCTL = I2CRM + I2CSSEL_2; // x(x>256)字節模式 ,new start測試使用

// 選擇方式 I2CRM=0,最終用戶使用
I2CTCTL = I2CSSEL_2; 
I2CNDAT = 2 + ndatNum; // 最終用戶使用,2byte地址 + 128byte數據 

I2CPSC = 2; // set scl
I2CIFG = 0;
I2CSA = 0x50; // Sl××e address of At24c512 
U0CTL |= I2CEN; // ena××e I2C module, 7 bit addr, master mode 08-26 
U0CTL |= MST;


while (I2CBUSY & I2CDCTL); // I2C ready? 在空閑狀態:0,空閑;1:忙
I2CTCTL |= I2CTRX + I2CSTT + I2CSTP ; // I2CRM =0,啟動總線,發送從器件地址
while((I2CIFG & NACKIFG) == 0x02); // ack 為低電平,等待地址應答位 ,判斷 無應答NACKIFG = 1 
}
/*----------------------------------------------------------------
--子程標號 :I2cWrSlaSubAddr 
--子程功能 :主機發送從機的子地址 
--入口參數 :unsigned char sla,unsigned int suba 
--參數說明 :子地址 
--子程序狀況 :09-23調試通過 
--說明 :完成地址信息的定位,先確定順序讀寫的起始地址 
-----------------------------------------------------------------
--*/ 
unsigned char I2cSendSubAddr(unsigned int suba,unsigned char ndatNum)
{
unsigned char Hi_suba,Lo_suba;

I2C_Send(ndatNum); // 啟動總線,等待地址應答位

Hi_suba = ( unsigned char )( suba >> 8 );
Lo_suba = ( unsigned char )( suba & 0x00ff );
I2cBusSendByte( Hi_suba ); //發送器件子地址
while((I2CIFG & 0x02) == NACKIFG ) // 等待數據的應答
{
I2CTCTL |= I2CSTP; // 無應答,結束總線
return(0); 
}
I2cBusSendByte( Lo_suba ); //發送器件子地址 
while((I2CIFG & 0x02 )==0x02 ) // 等待數據的應答
{
I2CTCTL |= I2CSTP; // 無應答,結束總線
return(0); 
}
return(1);
}

/*------------------------------------------------------------------
--子程標號 :I2cWriteStr (用戶函數) 
--子程功能 :向I2C從器件寫入數據 
--入口參數 :unsigned char *ps,unsigned char num 
--參數說明 :寫入數據的地址指針,數據個數 
--子程序狀況 : 09-23調試通過 
--說明 :I2C讀取數據 
-------------------------------------------------------------------
--*/
unsigned char I2cSendStr(const unsigned char * ps,unsigned char num)
{
// unsigned char i;
unsigned char tempnum;
tempnum = num-1;
for(numi=0;numi<tempnum;numi++)
{
I2cBusSendByte(*ps);
while((I2CIFG & 0x02) == NACKIFG) // 等待數據的應答
{
I2CTCTL |= I2CSTP; // 無應答,結束總線
return(0); 
}
ps++;
}

// I2CTCTL |= I2CSTP; //I2CRM =1模式中,在發送最后一個數據之前將停止位置位,*特別注意,必須
I2cBusSendByte(*ps);
while((I2CIFG & 0x02) == NACKIFG) // 等待數據的應答
{
I2CTCTL |= I2CSTP; // 無應答,結束總線
return(0); 
}
return(1);
}

//------------------寫at24c512----
void I2cWrAt24c512(void)
{
unsigned int j=0;
unsigned char m,n;
unsigned int tempAddr;

for (j = 0;j <462;j++) // page write
{ 
tempAddr = 128*j; 
while (I2CBUSY & I2CDCTL); // I2C ready?
I2cSendSubAddr(tempAddr,0x80);
I2cSendStr(FPGACfg+tempAddr,0x80); 
P4OUT ^= 0x80; 
for (m=0;m<125;m++) {for (n=0;n<110;n++);}
P4OUT ^= 0x80; 
} 

tempAddr = 128*j;
while (I2CBUSY & I2CDCTL); // I2C ready?
I2cSendSubAddr(tempAddr,0x4f);
I2cSendStr(FPGACfg+tempAddr,0x4f); 
P4OUT ^= 0x80; 
for (m=0;m<125;m++) {for (n=0;n<110;n++);}
P4OUT ^= 0x80; 
}
/*-------------------------- MSP430 I2C 讀取數據-----------------------------*/
/*---------------------------------------------------------------------
--子程標號 :I2cSlaSubAddr 
--子程功能 :主器件發送從機器件地址和子地址 
--入口參數 :unsigned int suba 
--參數說明 :子地址 
--子程調用 :I2cBusSendByte 
--子程序狀況 :Y 
--說明 :完成地址信息的定位,先確定順序讀寫的起始地址 
---------------------------------------------------------------------
--*/
void I2cReceSubAddr(unsigned int suba) // test 09-25 讀之前先寫地址
{
unsigned char Hi_suba,Lo_suba;
P3OUT = 0x00; // clear P3 output register 
P3SEL = 0x0A; // P3.1=SDA, P3.3=SCL,Select I2C pins, Setup I2C module 
U0CTL |= I2C + SYNC; // select I2C mode;XA=0,7bit_addresing;
U0CTL &= ~I2CEN; // i2c功能使能無效 

I2CTCTL = I2CSSEL_2; // I2CRM = 0,
I2CNDAT = 2; // I2CRM = 0,2byte地址 + 128byte數據,固定字節
I2CIFG = 0;
I2CPSC = 1; // set scl
I2CSA = 0x50; // Sl××e address of At24c512 
U0CTL |= I2CEN; // ena××e I2C module, 7 bit addr, master mode 08-26 
U0CTL |= MST;

Hi_suba = ( unsigned char )( suba >> 8 );
Lo_suba = ( unsigned char )( suba & 0x00ff );

while (I2CBUSY & I2CDCTL); // I2C ready? 在空閑狀態:0,空閑;1:忙
I2CTCTL |= I2CTRX + I2CSTT + I2CSTP ; // I2CRM =0,啟動總線,發送從器件地址
while((I2CIFG & NACKIFG) == 0x02) // ack 為低電平,等待地址應答位 ,判斷 無應答NACKIFG = 1 
{ 
I2CTCTL |= I2CSTP; // 結束總線
} 

I2cBusSendByte( Hi_suba ); //發送器件子地址 
while((I2CIFG & NACKIFG) == 0x02) // ack 為低電平,等待地址應答位 ,判斷 無應答NACKIFG = 1 
{ 
I2CTCTL |= I2CSTP; // 結束總線
} 
I2cBusSendByte( Lo_suba ); //發送器件子地址
while((I2CIFG & NACKIFG) == 0x02) // ack 為低電平,等待地址應答位 ,判斷 無應答NACKIFG = 1 
{ 
I2CTCTL |= I2CSTP; // 結束總線 
} 
DelayTime10us(250);
DelayTime10us(250);
DelayTime10us(250);
DelayTime10us(250);
}

/*---------------------------------------------------------------------
--子程標號 :I2cSlaSubAddr 
--子程功能 :主器件接收初始化 
--入口參數 :無 
---------------------------------------------------------------------
--*/
void InitI2cRece(unsigned char num)
{
P3OUT = 0x00; // clear P3 output register 
P3SEL = 0x0A; // P3.1=SDA, P3.3=SCL,Select I2C pins, Setup I2C module 
U0CTL |= I2C + SYNC; // select I2C mode;XA=0,7bit_addresing;
U0CTL &= ~I2CEN; // i2c功能使能無效 
// I2CTCTL = I2CRM + I2CSSEL_2; // I2CRM=1 x(x>256)字節模式 

I2CTCTL = I2CSSEL_2; // I2CRM=0
I2CNDAT = num; // 1個字節
I2CPSC = 1; // set scl
I2CIFG = 0;
I2CSA = 0x50; // Sl××e address of At24c512 
I2CTCTL &= ~I2CTRX; 
U0CTL |= I2CEN; // ena××e I2C module, 7 bit addr, master mode 08-26 
}

/*---------------------------------------------------------------
--功能描述 : 讀一個字節
--子程序狀況 :
------------------------------------------------------------------
--*/
unsigned char I2cReceSlaByte(void)
{
unsigned char ch;
DelayTime10us(15);
U0CTL |= MST; //主模式 
while (I2CBUSY & I2CDCTL); // I2C ready? 在空閑狀態:0,空閑;1:忙
I2CTCTL |= I2CSTT + I2CSTP; // I2CRM =0; Receive, ST, SP (clears MST)
while((I2CIFG & RXRDYIFG) != RXRDYIFG); // 等待地址應答位 ,判斷 
ch = I2CDRB; 
return(ch); 
}

/*---------------------------------------------------------------
--功能描述 : 連續讀數據
--子程序狀況 :
------------------------------------------------------------------
--*/
void I2cReceSlaStr(unsigned char num)
{
unsigned char i;
DelayTime10us(15);
U0CTL |= MST; //主模式
while (I2CBUSY & I2CDCTL); // I2C ready? 在空閑狀態:0,空閑;1:忙
I2CTCTL |= I2CSTT + I2CSTP; // I2CRM =0; Receive, ST, SP (clears MST)
for (i=0;i<num;i++)
{
while((I2CIFG & RXRDYIFG) != RXRDYIFG); // 等待地址應答位 ,判斷 
rxDataArray = I2CDRB; 
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱子伦一区| 国产三级精品视频| 亚洲日本丝袜连裤袜办公室| aaa欧美色吧激情视频| www日韩大片| 91成人国产精品| 美日韩一级片在线观看| 久久久精品影视| 欧美日韩精品一区二区| 国模套图日韩精品一区二区| 亚洲欧洲日本在线| 日韩午夜中文字幕| www.66久久| 国产91在线观看| 国产主播一区二区| 日韩国产精品久久久久久亚洲| 欧美日本在线观看| 欧美一区二区三区四区高清| 粉嫩av一区二区三区| 成人福利视频网站| 国产日产亚洲精品系列| 26uuu另类欧美| 国产精品国产a级| 欧美精品一区二区三区一线天视频| 精品国产一区二区亚洲人成毛片| 2023国产精品自拍| 成人欧美一区二区三区小说| 夜夜精品视频一区二区| 国产亚洲一区二区三区在线观看| 欧美电影在哪看比较好| 91福利在线播放| 欧美一区二区播放| 欧美经典一区二区| 欧美一区日韩一区| 国产精品久久福利| 久久国产精品色婷婷| 亚洲午夜免费电影| 亚洲天堂网中文字| 久久99久国产精品黄毛片色诱| 日韩在线一区二区| 日韩国产精品91| 99精品视频在线播放观看| 国产91露脸合集magnet| 欧美日本在线观看| 亚洲欧洲性图库| 国产在线一区二区综合免费视频| 欧美亚洲图片小说| 欧美羞羞免费网站| 国产精品嫩草99a| 1区2区3区欧美| 激情综合色综合久久综合| 91久久国产最好的精华液| 精品日韩在线一区| 欧美激情一区二区三区全黄| 免费成人在线影院| 国产久卡久卡久卡久卡视频精品| 国产乱国产乱300精品| 67194成人在线观看| 精品电影一区二区| 天天色天天爱天天射综合| 精品一区二区三区在线观看| 欧美三区在线视频| 日韩精品一区二区三区视频在线观看| 精品对白一区国产伦| 日本一不卡视频| 欧美久久一二三四区| 亚洲美女精品一区| 免费成人在线播放| 欧美日韩第一区日日骚| 午夜免费欧美电影| 欧美日韩中文字幕精品| 一区二区三区高清在线| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日本一道本在线视频| 亚洲一区二区三区激情| 国产资源精品在线观看| 精品粉嫩超白一线天av| 韩日精品视频一区| 久久久一区二区| 国产成人精品免费| 欧美精品v国产精品v日韩精品| 一区二区三区不卡视频在线观看| 色综合天天综合| 亚洲精品一区二区三区蜜桃下载| 麻豆国产欧美一区二区三区| 精品国产第一区二区三区观看体验 | 狠狠色狠狠色合久久伊人| 日韩一级在线观看| 国产精品中文字幕日韩精品| 国产精品网站在线观看| 91麻豆高清视频| 精品噜噜噜噜久久久久久久久试看 | 亚洲美腿欧美偷拍| 欧美私模裸体表演在线观看| 日韩中文字幕麻豆| 欧美成人精品高清在线播放| 国产精品一卡二卡| 亚洲人快播电影网| 欧美日韩在线免费视频| 久久精品国产亚洲a| 日本一区二区久久| 在线观看欧美精品| 亚洲日本电影在线| 日韩一区二区电影| 岛国av在线一区| 久久久久久久久99精品| 99精品国产91久久久久久| 亚洲一区二区视频在线| 精品电影一区二区三区| 777久久久精品| 成人永久aaa| 一区二区三区四区国产精品| 欧美系列亚洲系列| 久久精品国产免费| 亚洲男人天堂av| 日韩视频不卡中文| 91在线你懂得| 国产中文一区二区三区| 亚洲黄网站在线观看| 国产传媒欧美日韩成人| 亚洲另类一区二区| 久久久国产综合精品女国产盗摄| 在线观看日韩毛片| 国产成人av电影| 免费成人在线播放| 亚洲第一狼人社区| 欧美日精品一区视频| 国产毛片精品一区| 欧美国产激情二区三区| 7777女厕盗摄久久久| 色悠悠亚洲一区二区| 国产精品一区二区三区乱码| 亚洲va韩国va欧美va精品| 国产精品久久久久天堂| 亚洲精品一区二区三区四区高清| 欧美视频在线播放| 色一情一乱一乱一91av| 高清免费成人av| 麻豆91在线观看| 日本中文字幕不卡| 亚洲午夜免费福利视频| 亚洲青青青在线视频| 国内久久精品视频| 亚洲成av人片在线| 一区二区视频在线看| 国产欧美一区二区精品久导航| 欧美一区2区视频在线观看| 在线亚洲一区二区| 色av成人天堂桃色av| 91丝袜美腿高跟国产极品老师| 99精品视频中文字幕| 99久久精品久久久久久清纯| 国产成人高清在线| 成人精品免费看| 成人精品gif动图一区| 成人av在线一区二区三区| 国产精品小仙女| 国产宾馆实践打屁股91| 本田岬高潮一区二区三区| 丁香网亚洲国际| 91麻豆自制传媒国产之光| 99精品国产视频| 欧美亚洲高清一区二区三区不卡| 欧美这里有精品| 欧美精品丝袜中出| 日韩视频一区二区三区在线播放| 日韩欧美一级在线播放| 国产亚洲午夜高清国产拍精品 | 韩国欧美国产一区| 激情综合亚洲精品| 成人精品高清在线| 欧美在线观看视频在线| 91精品国产综合久久香蕉麻豆| 91精品视频网| 久久一夜天堂av一区二区三区| 国产精品入口麻豆九色| 一区二区三区高清| 麻豆91小视频| 成人av资源站| 欧美美女网站色| 久久一留热品黄| 亚洲欧美日韩国产综合在线| 午夜电影网一区| 国产91高潮流白浆在线麻豆| 欧美在线观看视频一区二区 | 久久99久久99精品免视看婷婷| 国产成人综合精品三级| 欧美在线高清视频| 欧美精品一区男女天堂| 一区二区国产盗摄色噜噜| 久久成人麻豆午夜电影| 色综合久久综合| 欧美tickling网站挠脚心| 亚洲视频在线一区二区| 久久国产精品99久久久久久老狼| www.日韩精品| 日韩欧美一级精品久久| 亚洲综合视频网| 粉嫩av一区二区三区粉嫩| 7777精品久久久大香线蕉|