eeprom.lst

来自「LCD显示电子计价秤方案 1. 该方案使用的传感器为20KG,灵敏度约为0.5」· LST 代码 · 共 168 行

LST
168
字号
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 + =
减小字号Ctrl + -
显示快捷键?