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

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

?? two_memsic_lib.c

?? 美新加速度傳感器
?? C
字號:
/*      所需包含的頭文件
#include <avr/io.h>
#include <util/delay.h>
*/

//      系統為雙通道IO口模擬IIC總線
/*****************首先掉用Memsic1_Init(0x00,0x00);或*****************/
/*******Memsic2_Init(0x00,0x00);函數,初始化加速度傳感器***********/
/********以后每次獲取加速度數值,掉用Memsic1_Read(0x01);**********/
/*******************或Memsic2_Read(0x01);函數即可********************/


//管腳定義:
#define I2C_DDR DDRA
#define I2C_PORT PORTA
#define I2C_PIN PINA
#define SDA1 PA1	//1通道IIC總線管腳定義
#define SCL1 PA0
#define SDA2 PA3	//2通道IIC總線管腳定義
#define SCL2 PA2

#define SDA1_OUT() (I2C_DDR |= (1<<SDA1))
#define SCL1_OUT() (I2C_DDR |= (1<<SCL1))
#define SDA2_OUT() (I2C_DDR |= (1<<SDA2))
#define SCL2_OUT() (I2C_DDR |= (1<<SCL2))
// 釋放SDA1,上拉輸入
#define SDA1_RLS() do{ I2C_PORT |= (1<<SDA1); I2C_DDR &= ~(1<<SDA1); }while(0) 
#define SDA2_RLS() do{ I2C_PORT |= (1<<SDA2); I2C_DDR &= ~(1<<SDA2); }while(0) 

#define SDA1_SET() (I2C_PORT |= (1<<SDA1))
#define SDA1_CLR() (I2C_PORT &= ~(1<<SDA1))
#define SCL1_SET() (I2C_PORT |= (1<<SCL1))
#define SCL1_CLR() (I2C_PORT &= ~(1<<SCL1))
#define READ_SDA1() ((I2C_PIN & (1<<SDA1)) ? 1 : 0)

#define SDA2_SET() (I2C_PORT |= (1<<SDA2))
#define SDA2_CLR() (I2C_PORT &= ~(1<<SDA2))
#define SCL2_SET() (I2C_PORT |= (1<<SCL2))
#define SCL2_CLR() (I2C_PORT &= ~(1<<SCL2))
#define READ_SDA2() ((I2C_PIN & (1<<SDA2)) ? 1 : 0)

#define MEMSIC_WRITE_ADDR 0x20		//加速度傳感器寫地址
#define MEMSIC_READ_ADDR 0x21		//加速度傳感器讀地址

unsigned int ZuoBiao[3];		//讀出的X軸、Y軸、Z軸數據存于全局數組ZuoBiao中


// 發送起始信號
void IIC1_Start(void)
{
	SDA1_OUT();
	SCL1_OUT();

	SDA1_SET();
	SCL1_SET();
		_delay_us(4);
	SDA1_CLR();
		_delay_us(4);
	SCL1_CLR();
}

// 發送停止信號
void IIC1_Stop(void)
{
	SDA1_OUT();
	SCL1_OUT();

	SDA1_CLR();
		_delay_us(4);
	SCL1_SET();
		_delay_us(4);
	SDA1_SET();
		_delay_us(4);
}

// 向總線寫1字節,并返回從機有無應答
unsigned char IIC1_Write(unsigned char byte)
{
	unsigned char i, ack;
	SDA1_OUT();
	SCL1_OUT();

	ack = 0;
	for( i = 0; i < 8; ++i )
	{
		if ( byte & 0x80)
		SDA1_SET();
		else
		SDA1_CLR();
		byte <<= 1;
		SCL1_SET();
		_delay_us(4);
		SCL1_CLR();
	}
	SDA1_RLS();
		_delay_us(4);
	SCL1_SET();
		_delay_us(4);
	ack = READ_SDA1();
	SCL1_CLR();
		_delay_us(4);
	return ack;
}

// 讀1字節,ack=1時,發送ACK,ack=0,發送nACK
unsigned char IIC1_Read(unsigned char ack)
{
	unsigned char i, r = 0;

	SDA1_RLS();
	SCL1_OUT();
	for( i = 0; i < 8; ++i )
	{
		SCL1_SET();
		_delay_us(4);
		r <<= 1;
		if ( READ_SDA1() == 1)
		{
			r |= 1;
		}
		SCL1_CLR();
		_delay_us(4);
	}

	SDA1_OUT();
	// Send ACK
	if (!ack)
		SDA1_SET(); // Send nACK
	else
		SDA1_CLR(); // Send ACK
		_delay_us(4);
	SCL1_SET();
		_delay_us(4);
	SCL1_CLR();
		_delay_us(4);

	return r;
}


void Memsic1_Init(unsigned int addr1, unsigned char addr2)
{
	IIC1_Start();
	IIC1_Write(MEMSIC_WRITE_ADDR);
	IIC1_Write(addr1);
	IIC1_Write(addr2);
	IIC1_Stop();
	_delay_ms(80); // 等待80ms
}
void Memsic1_Read(unsigned char byte_addr)
{
	unsigned int X1,X2,Y1,Y2;

	IIC1_Start();
	IIC1_Write(MEMSIC_WRITE_ADDR);
	IIC1_Write(byte_addr);
	IIC1_Start();
	IIC1_Write(MEMSIC_READ_ADDR);
	X1 = IIC1_Read(1); // 讀1字節,返回ACK
	X2 = IIC1_Read(1); 
	Y1 = IIC1_Read(1); 
	Y2 = IIC1_Read(0); // 讀1字節,返回NoACK
	IIC1_Stop();
	ZuoBiao[0]=(X1<<8)+X2;
	ZuoBiao[1]=(Y1<<8)+Y2;
}
// 發送起始信號
void IIC2_Start(void)
{
	SDA2_OUT();
	SCL2_OUT();

	SDA2_SET();
	SCL2_SET();
		_delay_us(4);
	SDA2_CLR();
		_delay_us(4);
	SCL2_CLR();
}

// 發送停止信號
void IIC2_Stop(void)
{
	SDA2_OUT();
	SCL2_OUT();

	SDA2_CLR();
		_delay_us(4);
	SCL2_SET();
		_delay_us(4);
	SDA2_SET();
		_delay_us(4);
}

// 向總線寫1字節,并返回從機有無應答
unsigned char IIC2_Write(unsigned char byte)
{
	unsigned char i, ack;
	SDA2_OUT();
	SCL2_OUT();

	ack = 0;
	for( i = 0; i < 8; ++i )
	{
		if ( byte & 0x80)
		SDA2_SET();
		else
		SDA2_CLR();
		byte <<= 1;
		SCL2_SET();
		_delay_us(4);
		SCL2_CLR();
	}
	SDA2_RLS();
		_delay_us(4);
	SCL2_SET();
		_delay_us(4);
	ack = READ_SDA2();
	SCL2_CLR();
		_delay_us(4);
	return ack;
}

// 讀1字節,ack=1時,發送ACK,ack=0,發送nACK
unsigned char IIC2_Read(unsigned char ack)
{
	unsigned char i, r = 0;

	SDA2_RLS();
	SCL2_OUT();
	for( i = 0; i < 8; ++i )
	{
		SCL2_SET();
		_delay_us(4);
		r <<= 1;
		if ( READ_SDA2() == 1)
		{
			r |= 1;
		}
		SCL2_CLR();
		_delay_us(4);
	}

	SDA2_OUT();
	// Send ACK
	if (!ack)
		SDA2_SET(); // Send nACK
	else
		SDA2_CLR(); // Send ACK
		_delay_us(4);
	SCL2_SET();
		_delay_us(4);
	SCL2_CLR();
		_delay_us(4);

	return r;
}


void Memsic2_Init(unsigned int addr1, unsigned char addr2)
{
	IIC2_Start();
	IIC2_Write(MEMSIC_WRITE_ADDR);
	IIC2_Write(addr1);
	IIC2_Write(addr2);
	IIC2_Stop();
	_delay_ms(80); // 等待80ms
}
void Memsic2_Read(unsigned char byte_addr)
{
	unsigned int X1,X2,Y1,Y2;

	IIC2_Start();
	IIC2_Write(MEMSIC_WRITE_ADDR);
	IIC2_Write(byte_addr);
	IIC2_Start();
	IIC2_Write(MEMSIC_READ_ADDR);
	X1 = IIC2_Read(1); // 讀1字節,返回ACK
	X2 = IIC2_Read(1); 
	Y1 = IIC2_Read(1); 
	Y2 = IIC2_Read(0); // 讀1字節,返回NoACK
	IIC2_Stop();
	ZuoBiao[2]=(Y1<<8)+Y2;
}
/*  例:
int main(void)
{
	Print_USART_Init();
	Memsic1_Init(0x00,0x00);
	
	while(1)
	{
		Memsic1_Read(0x01);
		printf("%8d",Ax1);
		printf("%8d\n",Ay1);
	}
}*/
/*****************首先掉用Memsic1_Init(0x00,0x00);或*****************/
/*******Memsic2_Init(0x00,0x00);函數,初始化加速度傳感器***********/
/********以后每次獲取加速度數值,掉用Memsic1_Read(0x01);**********/
/*******************或Memsic2_Read(0x01);函數即可********************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级欧美一级| 亚洲精品视频在线观看网站| 亚洲成人自拍一区| 欧美日韩在线播放| 卡一卡二国产精品| 久久久久久97三级| 成人动漫中文字幕| 一区二区三区欧美视频| 91精品国产一区二区人妖| 久久99精品国产| 18成人在线观看| 欧美日韩在线一区二区| 麻豆精品一区二区| 中文字幕欧美一| 3atv一区二区三区| 丁香一区二区三区| 一区二区不卡在线播放| 3d动漫精品啪啪1区2区免费| 国产一区二区三区在线观看免费视频 | 麻豆精品国产传媒mv男同| 精品理论电影在线| 99久久99久久综合| 蜜桃视频在线观看一区| 国产精品免费人成网站| 在线播放91灌醉迷j高跟美女| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩国产电影| 国产成人综合视频| 午夜国产精品影院在线观看| 国产午夜精品久久久久久久| 色偷偷一区二区三区| 久久国产三级精品| 亚洲.国产.中文慕字在线| 中文字幕不卡一区| 欧美v国产在线一区二区三区| 99久久99久久综合| 国产综合一区二区| 婷婷国产v国产偷v亚洲高清| 亚洲视频一二三| 国产亚洲午夜高清国产拍精品 | 风流少妇一区二区| 日韩精品一区第一页| 国产精品美女久久久久aⅴ| 欧美一区二区精品| 99视频有精品| 国产精品主播直播| 免播放器亚洲一区| 视频在线观看一区| 无吗不卡中文字幕| 一区二区视频在线| 中文字幕综合网| 国产精品色婷婷| 国产亚洲一区二区在线观看| 久久综合九色综合97婷婷| 91精品国产一区二区三区蜜臀| 色婷婷综合久久久久中文一区二区| 国产成人av影院| 国产一区二区福利| 韩国成人在线视频| 久久国产精品无码网站| 久久99久久精品| 美脚の诱脚舐め脚责91 | 精品久久久三级丝袜| 欧美日韩精品高清| 欧美视频日韩视频| 欧美男男青年gay1069videost| 日本伦理一区二区| 欧美三级在线播放| 日韩视频免费观看高清完整版在线观看| 欧美网站大全在线观看| 欧美精三区欧美精三区 | 国产精品影视网| 国产精品一区二区果冻传媒| 国产福利91精品一区二区三区| 精品一区二区国语对白| 精品一区二区三区在线播放| 国产主播一区二区| 99在线精品视频| 欧美色图在线观看| 日韩免费观看2025年上映的电影 | 一区二区久久久久| 丝袜国产日韩另类美女| 国内精品免费**视频| 不卡欧美aaaaa| 欧美日韩在线不卡| 久久久久国产精品麻豆| 国产亚洲成aⅴ人片在线观看| 亚洲三级在线看| 欧美a级一区二区| 成人在线视频首页| 欧美日韩一区二区三区在线| 日韩一区二区视频| 国产精品美女久久久久久久久| 亚洲激情自拍视频| 精品制服美女丁香| 91免费视频网| 日韩美女在线视频| 一区二区三区在线观看动漫| 人妖欧美一区二区| 成人黄色软件下载| 欧美肥妇bbw| 亚洲四区在线观看| 精品亚洲国内自在自线福利| 一本色道久久综合亚洲aⅴ蜜桃 | 精品精品国产高清一毛片一天堂| 欧美激情自拍偷拍| 肉肉av福利一精品导航| 成人免费高清在线| 日韩欧美一区二区视频| 国产欧美一区二区精品久导航| 亚洲国产欧美一区二区三区丁香婷| 国产在线精品国自产拍免费| 91福利在线播放| 精品国产乱码久久| 亚洲一卡二卡三卡四卡| 国产伦精一区二区三区| 欧美日韩免费观看一区三区| 国产精品乱码久久久久久| 日本欧美肥老太交大片| 91亚洲国产成人精品一区二区三| 日韩欧美久久久| 亚洲高清视频在线| 一本色道亚洲精品aⅴ| 国产精品久久久久一区| 国产精品一线二线三线精华| 欧美一区二区在线观看| 悠悠色在线精品| 99国产一区二区三精品乱码| 2020国产精品久久精品美国| 人人爽香蕉精品| 欧美日韩久久久一区| 亚洲精品欧美专区| 成人国产精品免费观看动漫 | 久久精品噜噜噜成人88aⅴ | 久久亚洲综合av| 麻豆国产欧美一区二区三区| 91精品国产91热久久久做人人 | 亚洲老司机在线| 91原创在线视频| 亚洲欧洲国产日韩| 99久久精品国产一区二区三区| 国产日本欧洲亚洲| 成a人片亚洲日本久久| 国产精品动漫网站| 99久久婷婷国产综合精品 | 成人黄色片在线观看| 久久亚洲综合色一区二区三区 | 国产精品网站一区| 国产精品1区2区| 欧美激情综合在线| 成人黄色小视频| 亚洲免费观看高清完整版在线观看熊| 9色porny自拍视频一区二区| 国产精品美女久久久久aⅴ| 国产99久久精品| 国产精品毛片久久久久久久| 成人国产一区二区三区精品| 一区二区高清免费观看影视大全| 在线观看www91| 日韩电影网1区2区| 久久久影院官网| 91福利小视频| 狠狠色狠狠色综合日日91app| 国产精品成人免费在线| 欧美日韩中文一区| 国产精华液一区二区三区| 国产精品国产精品国产专区不蜜| 欧美在线啊v一区| 麻豆91在线播放| 中文字幕一区二区三区精华液 | 日韩精品影音先锋| 成人性生交大片免费看中文| 亚洲精品乱码久久久久久久久 | 高清beeg欧美| 天天操天天色综合| 欧美极品aⅴ影院| 91精品在线观看入口| 成人av电影在线观看| 日韩激情中文字幕| 亚洲欧洲www| 日韩女优av电影| 色综合久久中文综合久久97| 蜜桃精品视频在线| 亚洲综合小说图片| 欧美高清在线一区二区| 91精品国产美女浴室洗澡无遮挡| 成人听书哪个软件好| 麻豆精品国产91久久久久久| 一级女性全黄久久生活片免费| 久久蜜桃一区二区| 欧美精品久久一区二区三区| 成人免费毛片片v| 久久97超碰国产精品超碰| 亚洲精品成人悠悠色影视| 久久精品免视看| 日韩精品一区国产麻豆| 欧美日韩一区成人| 色噜噜夜夜夜综合网| 东方欧美亚洲色图在线| 激情图片小说一区|