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

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

?? i2c.txt

?? 開發環境
?? TXT
字號:
用單片機控制一個3軸加速度計,希望有人幫忙寫一下控制程序…… 
單片機:0718I ATMEGA8L-8PU 
加速度計:SMB380 
存儲芯片:24LC256 
協議為i2c 

單片機 與 加速度計的引腳定義:3(SCL)-SCK, 4(SDA)-SDI, 5(ISR)-INT 
單片機 與 24lc256 引腳定義:16(PL1/A0)-SDA, 17(PL0/A1)-SCL 

目的是每各1s從加速計中讀取一次數據存到24lc256中,試驗結束后再從24lc256中讀取數據到電腦…… 



目 的: 建立I2C操作庫 
目標系統: 基于AVR單片機 
應用軟件: ICCAVR 
版 本: Version 1.0 
圓版時間: 2005-06-25 
開發人員: SEE 
說 明: 若用于商業用途,請保留此段文字或注明代碼來源 
深 圳 市 微 雪 電 子 有 限 公 司 保 留 所 有 的 版 權 
*********************************************************************/ 

/*01010101010101010101010101010101010101010101010101010101010101010101 
---------------------------------------------------------------------- 
版本更新記錄: 

---------------------------------------------------------------------- 
入口參數說明: 

---------------------------------------------------------------------- 
待定參數說明: 

---------------------------------------------------------------------- 
對外變量說明: 

---------------------------------------------------------------------- 
對外程序說明: 

---------------------------------------------------------------------- 
10101010101010101010101010101010101010101010101010101010101010101010*/ 

#ifndef I2C_H 
#define I2C_H 

#include "D:\ICC_H\CmmICC.H" 

/* TWSR values (not bits) */ 
/* Master */ 
#define I2C_START 0x08 
#define I2C_RESTART 0x10 

/* Master Transmitter */ 
#define I2C_MT_SLA_ACK 0x18 
#define I2C_MT_SLA_NACK 0x20 
#define I2C_MT_DATA_ACK 0x28 
#define I2C_MT_DATA_NACK 0x30 
#define I2C_MT_ARB_LOST 0x38 

/* Master Receiver */ 
#define I2C_MR_ARB_LOST 0x38 
#define I2C_MR_SLA_ACK 0x40 
#define I2C_MR_SLA_NACK 0x48 
#define I2C_MR_DATA_ACK 0x50 
#define I2C_MR_DATA_NACK 0x58 

/* Slave Transmitter */ 
#define I2C_ST_SLA_ACK 0xA8 
#define I2C_ST_ARB_LOST_SLA_ACK 0xB0 
#define I2C_ST_DATA_ACK 0xB8 
#define I2C_ST_DATA_NACK 0xC0 
#define I2C_ST_LAST_DATA 0xC8 

/* Slave Receiver */ 
#define I2C_SR_SLA_ACK 0x60 
#define I2C_SR_ARB_LOST_SLA_ACK 0x68 
#define I2C_SR_GCALL_ACK 0x70 
#define I2C_SR_ARB_LOST_GCALL_ACK 0x78 
#define I2C_SR_DATA_ACK 0x80 
#define I2C_SR_DATA_NACK 0x88 
#define I2C_SR_GCALL_DATA_ACK 0x90 
#define I2C_SR_GCALL_DATA_NACK 0x98 
#define I2C_SR_STOP 0xA0 

/* Misc */ 
#define I2C_NO_INFO 0xF8 
#define I2C_BUS_ERROR 0x00 

/* 
* The lower 3 bits of TWSR are reserved on the ATmega163. 
* The 2 LSB carry the prescaler bits on the newer ATmegas. 
*/ 
#define I2C_STATUS_MASK (_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|_BV(TWS3)) 
#define I2C_STATUS (TWSR & I2C_STATUS_MASK) 

/* 
* R/~W bit in SLA+R/W address field. 
*/ 
#define I2C_READ 1 
#define I2C_WRITE 0 

#define I2CStart() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)) 
#define I2CStop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)) 
#define I2CWaitAck() {while(!(TWCR&(1<<TWINT)));} 
#define I2CChkAck() (TWSR&0xf8) //check ack 
#define I2CSendAck() (TWCR|=(1<<TWEA)) 
#define I2CSendNoAck() (TWCR&=~(1<<TWEA)) 
#define I2CSendByte(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);} 
#define I2CRcvNckByte() (TWCR=(1<<TWINT)|(1<<TWEN)) 
#define I2CRcvAckByte() (TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA)) 

/* For Program */ 
#define I2C_Stop() I2CStop() 
#define I2C_SendAck() I2CSendAck() 
#define I2C_SendNoAck() I2CSendNoAck() 
#define I2C_WaitAck() I2CWaitAck() 

/* I2C Config */ 
#define I2C_ERR 0 
#define I2C_CRR 1 

/*-------------------------------------------------------------------- 
程序名稱:I2C Start 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_Start() 
{ 
I2CStart(); 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_START ) 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C ReStart 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_Restart() 
{ 
I2CStart(); 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_RESTART ) 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)發送 7位 器件寫地址: XXXX XXX0 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_SendWrDAdr(uint8 wrDAdr) 
{ 
I2CSendByte(wrDAdr); //設置 器件寫地址 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_MT_SLA_ACK ) 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)發送 10位 器件寫地址: 1111 0XX0, XXXX XXXX 
程序功能: 
注意事項: 
提示說明:兼容 發送 7位 器件寫地址: XXXX XXX0 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_SendWrDAdr_(uint16 wrDAdr) 
{ 
if( wrDAdr&0xF000 == 0xF000 ) //判斷是否為 10位 器件地址 
if( I2C_SendWrDAdr( (uint8)wrDAdr>>8 )==I2C_ERR ) //設置 (高位)器件寫地址 
return I2C_ERR; 
if( I2C_SendWrDAdr( (uint8)wrDAdr )==I2C_ERR ) //設置 (低位)器件寫地址 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)發送 7位 器件讀地址: XXXX XXX1 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_SendRdDAdr(uint8 rdDAdr) 
{ 
I2CSendByte(rdDAdr); //設置 器件讀地址 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_MR_SLA_ACK ) 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)發送 10位 器件讀地址: 1111 0XX0, XXXX XXXX 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_SendRdDAdr_(uint8 rdDAdr) 
{ 
if( rdDAdr&0xF000 == 0xF000 ) //判斷是否為 10位 器件地址 
if( I2C_SendWrDAdr( (uint8)rdDAdr>>8 )==I2C_ERR ) //設置 (高位)器件讀地址 
return I2C_ERR; 
if( I2C_SendWrDAdr( (uint8)rdDAdr )==I2C_ERR ) //設置 (低位)器件讀地址 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)發送數據 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_SendDat(uint8 configDat) 
{ 
I2CSendByte(configDat); 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_MT_DATA_ACK ) 
return I2C_ERR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)接收數據且不產生應答 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_RcvNAckDat(uint8 *pRdDat) 
{ 
I2CRcvNckByte(); 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_MR_DATA_NACK ) 
return I2C_ERR; 
*pRdDat=TWDR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)接收數據且產生應答 
程序功能: 
注意事項: 
提示說明: 
輸 入: 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_RcvAckDat(uint8 *pRdDat) 
{ 
I2CRcvAckByte(); 
I2CWaitAck(); 
if( I2CChkAck()!=I2C_MR_DATA_ACK ) 
return I2C_ERR; 
*pRdDat=TWDR; 
return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)寫器件,寫一個數據 
程序功能: 
注意事項: 
提示說明: 
輸 入:wrDAdr: write device-address 寫器件地址 
wordAdr: word address 字地址 
dat: data 數據 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_Write(uint16 wrDAdr,uint8 wordAdr,uint8 dat) 
{ 
if( I2C_Start()==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendDat(wordAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendDat(dat)==I2C_ERR ) 
return I2C_ERR; 

I2C_Stop(); 

return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)寫器件,寫N個數據 
程序功能: 
注意事項: 
提示說明: 
輸 入:wrDAdr: write device-address 寫器件地址 
wordAdr: word address 字地址 
*pWrDat: p->write data 寫入數據指針 
num: number 寫入數據個數 
返 回: 
--------------------------------------------------------------------*/ 
//bool I2C_Write_(uint16 wrDAdr,uint8 wordAdr, 
// uint8 *pWrDat,uint8 num) 
//{ 
// 
//} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)讀器件,讀一個數據 
程序功能: 
注意事項: 
提示說明: 
輸 入:wrDAdr: write device-address 寫器件地址 
wordAdr: word address 字地址 
rdDAdr: read device-address 讀器件地址 
*pRdDat: p->read data 讀取數據指針 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_Read(uint16 wrDAdr,uint8 wordAdr, 
uint8 rdDAdr,uint8 *pRdDat) 
{ 
if( I2C_Start()==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendDat(wordAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_Restart()==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_RcvNAckDat(pRdDat)==I2C_ERR ) 
return I2C_ERR; 

I2C_Stop(); 

return I2C_CRR; 
} 
/*-------------------------------------------------------------------- 
程序名稱:I2C(TWI)讀器件,讀N個數據 
程序功能: 
注意事項: 
提示說明: 
輸 入:wrDAdr: write device-address 寫器件地址 
wordAdr: word address 字地址 
rdDAdr: read device-address 讀器件地址 
*pRdDat: p->read data 讀取數據指針 
num: number 讀取數據個數 
返 回: 
--------------------------------------------------------------------*/ 
bool I2C_Read_(uint16 wrDAdr,uint8 wordAdr, 
uint8 rdDAdr,uint8 *pRdDat,uint8 num) 
{ 
uint8 i; 

if( I2C_Start()==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendDat(wordAdr)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_Restart()==I2C_ERR ) 
return I2C_ERR; 

if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR ) 
return I2C_ERR; 

for(i=0;i<num-1;i++) 
if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR ) 
return I2C_ERR; 

if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR ) 
return I2C_ERR; 

I2C_Stop(); 

return I2C_CRR; 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合色天天综合| 日本一区二区成人| 日本免费新一区视频| 欧美男女性生活在线直播观看| 亚洲在线观看免费| 精品视频色一区| 欧美bbbbb| 欧美经典一区二区| 99精品久久只有精品| 亚洲国产综合91精品麻豆| 欧美区视频在线观看| 国产在线播放一区二区三区| 国产精品另类一区| 欧美视频完全免费看| 精品一区二区在线视频| 国产精品久久久久影院老司 | 亚洲欧洲日韩综合一区二区| www.欧美亚洲| 丝袜诱惑亚洲看片| 精品少妇一区二区三区在线视频| 国产精品资源站在线| 亚洲精品伦理在线| 精品日韩在线一区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲综合一区在线| 久久久久久久久久美女| 91福利视频在线| 精品一区二区三区在线播放| 中文字幕亚洲精品在线观看| 欧美肥妇bbw| www.亚洲精品| 经典一区二区三区| 夜夜嗨av一区二区三区中文字幕| 日韩欧美亚洲一区二区| 91社区在线播放| 精品亚洲porn| 亚洲va国产天堂va久久en| 国产精品美女久久久久高潮| 91麻豆精品国产91久久久久久久久 | 99精品一区二区| 日本麻豆一区二区三区视频| 国产精品电影院| 2021国产精品久久精品| 欧美亚洲国产一区二区三区va| 国产在线播放一区二区三区 | 日韩国产精品大片| 亚洲欧美怡红院| 久久尤物电影视频在线观看| 欧美日韩一区久久| 91免费看片在线观看| 国产一区二区日韩精品| 亚洲成av人片在www色猫咪| 亚洲婷婷在线视频| 国产亚洲欧洲一区高清在线观看| 欧美三区免费完整视频在线观看| 福利一区二区在线观看| 久久黄色级2电影| 日韩不卡手机在线v区| 亚洲一区二区精品视频| 亚洲欧洲另类国产综合| 久久久久99精品国产片| 欧美不卡视频一区| 日韩亚洲欧美在线| 欧美高清激情brazzers| 精品视频一区三区九区| 91麻豆福利精品推荐| 波多野结衣欧美| 国产99精品国产| 精彩视频一区二区| 九一九一国产精品| 美女网站色91| 男女男精品视频| 久久国产精品99久久久久久老狼| 免费成人性网站| 美女在线一区二区| 美女爽到高潮91| 美国毛片一区二区三区| 美女视频一区二区三区| 久久国产日韩欧美精品| 久久精品噜噜噜成人av农村| 久草中文综合在线| 国产真实乱偷精品视频免| 国产在线精品免费av| 国产成人综合亚洲网站| 风间由美一区二区三区在线观看| 成人高清视频在线观看| 99re6这里只有精品视频在线观看| 99久久婷婷国产| 欧美手机在线视频| 欧美日韩视频不卡| 欧美一区二区视频在线观看| 久久综合九色综合欧美就去吻| 久久综合九色综合欧美98 | 日韩视频123| 精品国产乱子伦一区| 国产欧美一区二区精品久导航 | 成人动漫视频在线| 在线亚洲人成电影网站色www| 色综合天天狠狠| 555www色欧美视频| 久久综合成人精品亚洲另类欧美| 国产精品污网站| 亚洲一区二区三区爽爽爽爽爽 | 久久久国产精品午夜一区ai换脸| 亚洲国产精品t66y| 亚洲一区二区三区小说| 乱一区二区av| 99精品国产91久久久久久| 欧美日韩免费观看一区三区| 精品国产精品一区二区夜夜嗨| 国产精品色婷婷| 婷婷综合在线观看| 成人福利视频在线| 91精品蜜臀在线一区尤物| 久久久噜噜噜久噜久久综合| 亚洲免费观看高清完整版在线观看| 午夜久久福利影院| 粉嫩aⅴ一区二区三区四区五区| 色综合久久久久网| 久久久久久久久蜜桃| 亚洲一区二区在线播放相泽| 精品一区二区三区久久| 色噜噜狠狠色综合欧洲selulu| 日韩欧美电影一二三| 亚洲精品亚洲人成人网在线播放| 久99久精品视频免费观看| 欧日韩精品视频| 国产欧美精品一区二区三区四区| 偷窥少妇高潮呻吟av久久免费| 成人免费av在线| 欧美大胆一级视频| 亚洲一区日韩精品中文字幕| 国产福利精品一区| 91精品欧美福利在线观看| 亚洲人123区| 丰满白嫩尤物一区二区| 欧美大片一区二区| 婷婷六月综合亚洲| 在线观看精品一区| 国产精品国产三级国产有无不卡| 久久av中文字幕片| 欧美老女人在线| 亚洲精品国久久99热| jvid福利写真一区二区三区| 2欧美一区二区三区在线观看视频| 亚洲大片免费看| 色猫猫国产区一区二在线视频| 久久久久久久电影| 精品综合免费视频观看| 这里只有精品电影| 视频一区中文字幕| 欧美日韩国产精选| 亚洲一区二区三区视频在线| 一本到一区二区三区| 亚洲美女精品一区| 91首页免费视频| 中文字幕日韩一区二区| 国产成人av电影免费在线观看| 精品噜噜噜噜久久久久久久久试看| 天天亚洲美女在线视频| 884aa四虎影成人精品一区| 一区二区三区高清不卡| 色综合av在线| 一区二区三区欧美久久| 在线精品观看国产| 亚洲电影中文字幕在线观看| 欧美视频在线一区| 三级亚洲高清视频| 欧美一级视频精品观看| 久久99精品久久久久久动态图| 欧美一区二区三区系列电影| 秋霞电影一区二区| 欧美精品一区二区不卡| 国产成人av自拍| 亚洲视频一区二区在线| 欧美亚洲动漫另类| 婷婷开心激情综合| 精品免费一区二区三区| 国产精品1区二区.| 国产精品国产三级国产普通话99 | 不卡视频在线观看| 亚洲欧美一区二区三区久本道91 | 亚洲激情五月婷婷| 欧美性一二三区| 免费av成人在线| 久久精品欧美一区二区三区麻豆| 国产成人av影院| 夜夜嗨av一区二区三区中文字幕 | 亚洲六月丁香色婷婷综合久久| 欧美亚洲国产bt| 黄网站免费久久| 国产精品国产三级国产专播品爱网 | 91女人视频在线观看| 亚洲va欧美va人人爽| 久久综合色天天久久综合图片| 成人av网址在线| 日韩电影在线一区二区| 国产日韩欧美精品在线| 91精彩视频在线| 久久国产精品99久久久久久老狼|