📄 eeprom.lst
字号:
C51 COMPILER V8.05a EEPROM 05/17/2008 09:11:47 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<def.h>
2 #define time 1
3 #define icaddress_w 0xa0
4 #define icaddress_r 0xa1
5 #define wordaddress 0x00
6 #define parameter 0xaa
7 #if board==finishboard
//-----------------------------------------------发送开始信号--------------------------------------------
------------------------
void sendstart()
{
SDA=1;
SCLK=1;
_delay_us(time);
SDA=0;
_delay_us(time);
SCLK=0;
_delay_us(time);
}
//-----------------------------------------------发送结束信号--------------------------------------------
------------------------
void sendend()
{
SDA=0;
SCLK=0;
_delay_us(time);
SCLK=1;
_delay_us(time);
SDA=1;
_delay_us(time);
}
//-----------------------------------------------发送ACK信号---------------------------------------------
------------------------
void sendack_eeprom()
{
SDA=0;
SCLK=0;
_delay_us(time);
SDA=1; //释放数据线,交给24CO1控制
while(SDA==1); //等待SDA=0
//发送一个时钟
SCLK=1;
_delay_us(time);
SCLK=0;
_delay_us(time);
}
//-----------------------------------------------发送8bit数据--------------------------------------------
-------------------------
void sendbyte(uchar sdata)
{
uchar i; //控制循环次数
SCLK=0;
SDA=0;
_delay_us(time);
for(i=1;i<=8;i++)
C51 COMPILER V8.05a EEPROM 05/17/2008 09:11:47 PAGE 2
{
if((sdata&0x80)==0x80) //高位在前
{
SDA=1;
_delay_us(time);
SCLK=1;
}
else
{
SDA=0;
_delay_us(time);
SCLK=1;
}
_delay_us(time);
SCLK=0;
_delay_us(time);
SDA=0;
sdata=sdata<<1;
_delay_us(time);
}
}
//-----------------------------------------------读8bit数据----------------------------------------------
-----------------------
uchar readbyte()
{
uchar i,sdata; //i控制循环次数,sdata临时数据寄存器
sdata=0;
SCLK=0;
SDA=0;
_delay_us(time);
SDA=1; //释放数据线
for(i=1;i<=8;i++)
{
SCLK=1;
_delay_us(time);
if(SDA==1) //高位在前
{
sdata=sdata&&0xff;
}
else
{
sdata=sdata&&0xfe;
}
SCLK=0;
_delay_us(time);
sdata=sdata<<1;
}
SCLK=0;
SDA=0;
return (sdata);
}
//------------------------------------------------读eeprom-----------------------------------------------
------------------
void writeeeprom()
{
//写一字节数据到指定的地址单元
sendstart();
sendbyte(icaddress_w);
sendack_eeprom();
sendbyte(wordaddress);
sendack_eeprom();
sendbyte(parameter);
C51 COMPILER V8.05a EEPROM 05/17/2008 09:11:47 PAGE 3
sendack_eeprom();
sendend();
_delay_ms(10);
}
//------------------------------------------------写eeprom-----------------------------------------------
------------------
uchar readeeprom()
{
uchar readdata=0;
//从指定的地址单元读一字节数据
sendstart();
sendbyte(icaddress_w);
sendack_eeprom();
sendbyte(wordaddress);
sendack_eeprom();
sendstart();
sendbyte(icaddress_r);
sendack_eeprom();
readdata=readbyte();
sendend();
return (readdata);
}
*** WARNING C316 IN LINE 132 OF eeprom.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -