eeprom
#include "include.h"#define FAIL 1
#define SUCC 0bit ack = 0; //bit定義的變量僅有0和1
unsigned char shi1;
unisgned char fen1;
unsigned char miao1;
unsigned char send[3] = 0;void iic_start()
{SDA = 1;SCL = 1;delay_us(1);SDA = 0;delay_us(1);SCL = 0;
}void iic_stop()
{SDA = 0;SCL = 1;delay_us(1);SDA = 1;delay_us(1);SCL = 0;
}void iic_send_byte(unsigned char byte)
{unsigned char i;for(i = 0; i < 8; i++){SDA = byte & 0x80;SCL = 1;delay_us(1);SCL = 0;byte <<= 1;}SCL = 1;SDA = 1;delay_us(1);if(0 == SDA){ack = 1;}else{ack = 0;}SCL = 0;
// return ack;
}
unsigned char iic_rec_byte()
{unsigned char i,a;unsigned char temp = 0;SDA = 1;for(i = 0; i < 8; i++){SCL = 0;delay_us(1);SCL = 1;if(SDA){a = 0x01;}else{a = 0;}temp |= (a << 7-i);delay_us(1);}SCL = 0;return temp;
}
void iic_ack()
{SDA = 0;SCL = 1;delay_us(1);SCL = 0;
}
void iic_noack()
{SDA = 1;SCL = 1;delay_us(1);SCL = 0;
}
unsigned char AT24C02_send_str(unsigned char devadd, unsigned char romadd, unsigned char *s, unsigned char num)
{unsigned char i;iic_start();iic_send_byte(devadd);if(0 == ack){return FAIL;}iic_send_byte(romadd);if(0 == ack){return FAIL;}for(i = 0; i < num; i++){iic_send_byte(*s);if(0 == ack){return FAIL;}s++;}iic_stop();return SUCC;
}unsigned char AT24C02_rec_str(unsigned char devadd, unsigned char romadd, unsigned char *s, unsigned char num)
{unsigned char i;iic_start();iic_send_byte(devadd);if(0 == ack){return FAIL;}iic_send_byte(romadd);if(0 == ack){return FAIL;}iic_start();iic_send_byte(devadd+1);for(i = 0; i < num - 1; i++){*s = iic_rec_byte();iic_ack();s++;}*s = iic_rec_byte();iic_noack();iic_stop();return SUCC;
}void get_back()
{static unsigned char rec[3] = 0;AT24C02_rec_str(0xae,100,rec,3);shi1 = rec[0];fen1 = rec[1];miao1 = rec[2];
}void eeprom_init()
{send[0] = shi1;send[1] = fen1;send[2] = miao1;AT24C02_send_str(0xae,100,send,3);
}
總結
- 上一篇: uart——51程序
- 下一篇: AD-DA——51