📄 24c01.c
字号:
#include <reg51.h>
#include <string.h>
#include <stdio.h>
#include <intrins.h>
#include "types.h"
#include "24c01.h"
#include "key.h"
#include "managment.h"
void DelayMs(uint number);
void EEdaly();
//void int0_EEWrite();
void Initeeprom();
uchar EERead(uchar RomAddress,uchar RamAddress);
void EEWrite(uchar Wdata,uchar RomAddress);
void Start();
void Stop();
sbit SCL=P3^7;
sbit SDA=P1^0;
//-------------------------------------------------------------
void Initeeprom()
{
// uint i,ttp;
SCL=0;
Stop();
EEdaly();
EEdaly();
EEdaly();
EEdaly();
led_buf[0]=EERead(led_buf0,led_buf[0]);
led_buf[1]=EERead(led_buf1,led_buf[1]);
if(led_buf[0]>8) led_buf[0]=8;
if(led_buf[1]>99) led_buf[1]=99;
}
//--------------------------------
void EEdaly()
{
uchar i;
for(i=10;i;i--)
_nop_();
}
/***************************************************************************/
void DelayMs(uint number)
{
uint i,j;
for(i=number;i!=0;i--)
{
for(j=112;j!=0;j--) ;
}
}
/***************************************************************************/
void Start() {
SCL=1;
EEdaly();
SDA=1;
EEdaly();
SDA=0;
EEdaly();
SCL=0;
EEdaly();
}
/***************************************************************************/
void Stop() {
SCL=0;
EEdaly();
SDA=0;
EEdaly();
SCL=1;
EEdaly();
SDA=1;
EEdaly();
EEdaly();
}
/***************************************************************************/
void Ack() {
SDA=0;
EEdaly();
SCL=1;
EEdaly();
SCL=0;
EEdaly();
SDA=1;
EEdaly();
}
/***************************************************************************/
void NoAck() {
SDA=1;
EEdaly();
SCL=1;
EEdaly();
SCL=0;
EEdaly();
}
/***************************************************************************/
//bit TestAck() {
// bit ErrorBit;
// SDA=1;
// EEdaly();
// SCL=1;
// EEdaly();
// ErrorBit=SDA;
// EEdaly();
// SCL=0;
// EEdaly();
// return(ErrorBit);
//}
//**************************************************/
bit Write8Bit(uchar input)
{
uchar i;
for(i=8;i;i--)
{
input=input<<1;
if(CY) SDA=1;
else SDA=0;
EEdaly();
SCL=1;
EEdaly();
SCL=0;
EEdaly();
}
return(i);
}
//***************************************************************************/
void EEWrite(uchar Wdata,uchar RomAddress) {
Start();
Write8Bit(WriteDeviceAddress);
Ack();
// if(TestAck())
// goto EEWriteEnd;
Write8Bit((uchar)RomAddress);
Ack();
// if(TestAck())
// goto EEWriteEnd;
// for(;number;number--)
// {
Write8Bit(Wdata);
// if(TestAck())
// goto EEWriteEnd;
// Wdata++;
// }
// EEWriteEnd:
Ack();
Stop();
DelayMs(20);
}
/***************************************************************************/
uchar Read8Bit()
{
uchar i,rbyte=0;
for(i=8;i;i--)
{
SCL=1;
EEdaly();
rbyte<<=1;
rbyte|=(uchar)SDA;
SCL=0;
EEdaly();
}
return(rbyte);
}
//***************************************************************************/
uchar EERead(uchar RomAddress,uchar RamAddress) {
// uchar temp,rbyte;
Start();
Write8Bit(WriteDeviceAddress);
Ack();
// if(TestAck())
// goto EEReadFail;
Write8Bit((uchar)RomAddress);
Ack();
// if(TestAck())
// goto EEReadFail;
Start();
Write8Bit(ReadDviceAddress);
Ack();
// if(TestAck())
// goto EEReadFail;
//for(;bytes;bytes--)
// {
RamAddress=Read8Bit();
// if(bytes>1) Ack(); R
// else
// NoAck;
// RamAddress++;
// }
// *RamAddress=Read8Bit();
NoAck();
// EEReadFail:
Stop();
return(RamAddress);
}
/***************************************************************************/
// void int0_EEWrite(void)
// {
// uint i,ttp;
// clrscr(); //清屏
// EPutstr(0,0,modalstring[ModalNumber&0x7f]);
// EEWrite((uchar)ModalNumber&0x7f,MODALNUMBERADDRESS);
// for(i=0;i<3;i++)
// {
// ttp=(ModalNumber&0x7f)*4+i;
// EEWrite((uchar)Para[i],PARAADDRESS+ttp);
// }
// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -