日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] #ifndef __AT24C02_H__ #define __AT24C02_H__ #include"stm32f10x.h" void iICinit(void); void iicwrite(u8 add,u8 Achar); u8 iicread(u8 add); #endif #include"stm32f10x.h" #include"a

#ifndef __AT24C02_H__

#define __AT24C02_H__

#include"stm32f10x.h"

void iICinit(void);

void iicwrite(u8 add,u8 Achar);

u8 iicread(u8 add);

#endif

#include"stm32f10x.h"

#include"at24c02.h"

void iicstart(void);

void iicstop(void);

void ack(void);

void iicwritebyte(u8 a);

u8 iicreadbyte(void);

void iicwrite(u8 add,u8 Achar);

u8 iicread(u8 add);

void iicinit(void);

/////////////////////////////

void delay5us(void)//ums

{

unsigned short i, j;

unsigned short time;

time=5;

for(; time > 0; time--){

for(j = 0; j < 5; j++){

for(i = 0; i < 1; i++);

}

}

}

void delayms(unsigned short time)//nms

{

unsigned short i, j;

for(; time > 0; time--){

for(j = 0; j < 10; j++){

for(i = 0; i < 1004; i++);

}

}

}

void iicinit(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphCLOCkCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStructure.GPIO_PIN= GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void iicstart(void)

{

GPIO_SetBits(GPIOB,GPIO_Pin_7); //sda=1;

delay5us();

GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

delay5us();

GPIO_ResetBits(GPIOB,GPIO_Pin_7); //sda=0;

delay5us();

}

void iicstop(void)

{

GPIO_ResetBits(GPIOB,GPIO_Pin_7); //sda=0;

delay5us();

GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

delay5us();

GPIO_SetBits(GPIOB,GPIO_Pin_7); //sda=1;

delay5us();

}

void ack(void)

{

u16 i;

GPIO_SetBits(GPIOB,GPIO_Pin_6);//scl=1;

delay5us();

while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)&&(i<0x2b0)) {i++;}

GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

delay5us();

}

void iicwritebyte(u8 a)

{

u16 i;

GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

delay5us();

for(i=0;i<8;i++)

{

if(a&0x80)

GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

else

GPIO_ResetBits(GPIOB,GPIO_Pin_7);;

a=a<<1;

GPIO_SetBits(GPIOB,GPIO_Pin_6);//scl=1;

delay5us();

GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

delay5us();

}

GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

delay5us();

}

u8 iicreadbyte()

{

u8 i,temp;

temp=0;

GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

delay5us();

GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

delay5us();

for(i=0;i<8;i++)

{

GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

delay5us();

delay5us();

temp=(temp<<1)|GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);

delay5us();

GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

delay5us();

}

GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

delay5us();

GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

delay5us();

return temp;

}

void iicwrite(u8 add,u8 Achar)

{

iicstart();

iicwritebyte(0xa0);

ack();

iicwritebyte(add);

ack();

iicwritebyte(Achar);

ack();

iicstop();

delayms(20);

}

u8 iicread(u8 add)

{

u8 temp;

iicstart();

iicwritebyte(0xa0);

ack();

iicwritebyte(add);

ack();

iicstart();

iicwritebyte(0xa1);

ack();

temp=iicreadbyte();

ack();

iicstop();

return temp;

}


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉