⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c04.lst

📁 一个用C语言控制的读写7022
💻 LST
字号:
C51 COMPILER V7.06   24C04                                                                 01/02/2008 09:19:08 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          ////////////////////////////////////////////////////////////////////////
   2          ///////////////////////////////////////////////////////////////////////
   3          //读写2404子程序
   4          /*发送起始条件*/
   5          #include "c8051.h"
   6          void Start(void) /*起始条件*/
   7          {
   8   1      Sda=1;
   9   1      Scl=1;
  10   1      _nop_ ();
  11   1      _nop_ ();
  12   1      _nop_ ();
  13   1      _nop_ ();
  14   1      Sda=0;
  15   1      _nop_ ();
  16   1      _nop_ ();
  17   1      _nop_ ();
  18   1      _nop_ ();
  19   1      }
  20          void Stop(void) /*停止条件*/
  21          {
  22   1      Sda=0;
  23   1      Scl=1;
  24   1      _nop_ ();
  25   1      _nop_ ();
  26   1      _nop_ ();
  27   1      _nop_ ();
  28   1      Sda=1;
  29   1      _nop_ ();
  30   1      _nop_ ();
  31   1      _nop_ ();
  32   1      _nop_ ();
  33   1      }
  34          void Ack(void) /*应答位*/
  35          {
  36   1      Sda=0;
  37   1      _nop_ ();
  38   1      _nop_ ();
  39   1      _nop_ ();
  40   1      _nop_ ();
  41   1      Scl=1;
  42   1      _nop_ ();
  43   1      _nop_ ();
  44   1      _nop_ ();
  45   1      _nop_ ();
  46   1      Scl=0;
  47   1      }
  48          void NoAck(void) /*反向应答位*/
  49          {
  50   1      Sda=1;
  51   1      _nop_ ();
  52   1      _nop_ ();
  53   1      _nop_ ();
  54   1      _nop_ ();
  55   1      Scl=1;
C51 COMPILER V7.06   24C04                                                                 01/02/2008 09:19:08 PAGE 2   

  56   1      _nop_ ();
  57   1      _nop_ ();
  58   1      _nop_ ();
  59   1      _nop_ ();
  60   1      Scl=0;
  61   1      }
  62          
  63          void Send(uchar Data) /*发送数据子程序,Data为要求发送的数据*/
  64          {
  65   1      uchar BitCounter=8; /*位数控制*/
  66   1      uchar temp; /*中间变量控制*/
  67   1      do
  68   1      {
  69   2      temp=Data;
  70   2      Scl=0;
  71   2      _nop_ ();
  72   2      _nop_ ();
  73   2      _nop_ ();
  74   2      _nop_ ();
  75   2      if((temp&0x80)==0x80)/* 如果最高位是1*/
  76   2      Sda=1;
  77   2      else
  78   2      Sda=0;
  79   2      Scl=1;
  80   2      temp=Data<<1; /*RLC*/
  81   2      Data=temp;
  82   2      BitCounter--;
  83   2      }while(BitCounter);
  84   1      Scl=0;
  85   1      }
  86          
  87          uchar Read(void) /*读一个字节的数据,并返回该字节值*/
  88          {
  89   1      uchar temp=0;
  90   1      uchar temp1=0;
  91   1      uchar BitCounter=8;
  92   1      Sda=1;
  93   1      do{
  94   2      Scl=0;
  95   2      _nop_ ();
  96   2      _nop_ ();
  97   2      _nop_ ();
  98   2      _nop_ ();
  99   2      Scl=1;
 100   2      _nop_ ();
 101   2      _nop_ ();
 102   2      _nop_ ();
 103   2      _nop_ ();
 104   2      if(Sda) /*如果Sda=1;*/
 105   2      temp=temp|0x01; /*temp的最低位置1*/
 106   2      else
 107   2      temp=temp&0xfe; /*否则temp的最低位清0*/
 108   2      if(BitCounter-1)
 109   2      { temp1=temp<<1;
 110   3      temp=temp1;
 111   3      }
 112   2      BitCounter--;
 113   2      }while(BitCounter);
 114   1      return(temp);
 115   1      }
 116          
 117          void WrToROM(uchar Data[],uchar Address,uchar Num)
C51 COMPILER V7.06   24C04                                                                 01/02/2008 09:19:08 PAGE 3   

 118          {
 119   1      uchar i;
 120   1      uchar *PData;
 121   1      PData=Data;
 122   1      for(i=0;i<Num;i++)
 123   1      {
 124   2      Start(); /*发送启动信号*/
 125   2      Send(0xa0); /*发送SLA+W*/
 126   2      Ack();
 127   2      Send(Address+i); /*发送地址*/
 128   2      Ack();
 129   2      Send(*(PData+i));
 130   2      Ack();
 131   2      Stop();
 132   2      mDelay(20);
 133   2      }
 134   1      }
 135          
 136          void RdFromROM(uchar Data[],uchar Address,uchar Num)
 137          {
 138   1      uchar i;
 139   1      uchar *PData;
 140   1      PData=Data;
 141   1      for(i=0;i<Num;i++)
 142   1      {
 143   2      Start();
 144   2      Send(0xa0);
 145   2      Ack();
 146   2      Send(Address+i);
 147   2      Ack();
 148   2      Start();
 149   2      Send(0xa1);
 150   2      Ack();
 151   2      *(PData+i)=Read();
 152   2      Scl=0;
 153   2      NoAck();
 154   2      Stop();
 155   2      }
 156   1      
 157   1      }
 158          ////////////////////////////////////////////////////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    281    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -