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

📄 text1.lst

📁 iic 写入数据测试 有详细的源代码! 希望可以帮助有需要的朋友
💻 LST
字号:
C51 COMPILER V8.08   TEXT1                                                                 08/01/2008 09:29:47 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\keil\程序\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define addwr 0xa0       //定义写数据地址
   6          #define addrd 0xa1
   7          #define _nop_();
   8          
   9          sbit sda=P2^0;
  10          sbit scl=P2^1;
  11          void delay(uint j)
  12          {
  13   1              uchar i;
  14   1              for(;j>0;j--)
  15   1              for(i=0;i<125;i++);
  16   1      
  17   1      
  18   1      }
  19          
  20          //起始条件
  21          void start()
  22          {
  23   1              sda=1;
  24   1              scl=1;
  25   1              _nop_();_nop_();_nop_();_nop_();
  26   1              sda=0;
  27   1              _nop_();_nop_();_nop_();_nop_();
  28   1      }
  29          
  30          //停止条件
  31          void stop()
  32          {
  33   1              sda=0;
  34   1              scl=1;
  35   1              _nop_();_nop_();_nop_();_nop_();
  36   1              sda=1;
  37   1              _nop_();_nop_();_nop_();_nop_();
  38   1      }
  39          
  40          //应答位
  41          void ack()
  42          {
  43   1              sda=0;
  44   1              _nop_();_nop_();_nop_();_nop_();
  45   1              scl=1;
  46   1                      _nop_();_nop_();_nop_();_nop_();
  47   1              scl=0;
  48   1      }       
  49          
  50          //反向应答位
  51          
  52          void noack()
  53          {
  54   1              sda=1;
  55   1                      _nop_();_nop_();_nop_();_nop_();
C51 COMPILER V8.08   TEXT1                                                                 08/01/2008 09:29:47 PAGE 2   

  56   1              scl=1;
  57   1                      _nop_();_nop_();_nop_();_nop_();
  58   1              scl=0;
  59   1      }
  60          
  61          //发送数据子程序
  62          
  63          void send (uchar date)
  64          {
  65   1              uchar bitcouter=8;
  66   1              uchar temp;
  67   1              do
  68   1               {
  69   2               
  70   2                      temp=date;
  71   2                      scl=0;
  72   2                              _nop_();_nop_();_nop_();_nop_();
  73   2                      if((temp&0x80)==0x80)//如果最高位是1
  74   2                      sda=1;
  75   2                      else 
  76   2                      sda=0;
  77   2                      
  78   2                      scl=1;
  79   2                              _nop_();_nop_();_nop_();_nop_();
  80   2                      date=date<<1;
  81   2                      bitcouter--;
  82   2               }while(bitcouter);
  83   1                      scl=0;
  84   1      }
  85          
  86          //读一字节的数据
  87          uchar read()
  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_();_nop_();_nop_();_nop_();
  96   2                      scl=1;
  97   2                              _nop_();_nop_();_nop_();_nop_();
  98   2      temp=temp<<1;
  99   2                      if(sda)
 100   2                      temp=temp|0x01;
 101   2                      else
 102   2                      temp=temp&0xfe;
 103   2                      //temp=temp<<1;
 104   2                      bitcounter--;
 105   2                }while(bitcounter);
 106   1      return(temp);
 107   1      
 108   1      
 109   1      }
 110          
 111          void wrtorom(uchar date[],uchar address,uchar num)
 112          {
 113   1              uchar i;
 114   1              uchar*pdate;
 115   1              pdate=date;
 116   1              for(i=0;i<num;i++)
 117   1                      {
C51 COMPILER V8.08   TEXT1                                                                 08/01/2008 09:29:47 PAGE 3   

 118   2                              start();
 119   2                              send(0xa0);
 120   2                              ack();
 121   2                              send(address+i);
 122   2                              ack();
 123   2      
 124   2                              send(*(pdate+i));
 125   2                              ack();
 126   2                              stop();
 127   2                              delay(20);
 128   2                                                      
 129   2                      }
 130   1      }
 131          
 132          void rdfromrom(uchar date[],uchar address,uchar num)
 133          {
 134   1              uchar i;
 135   1              uchar*pdate;
 136   1              pdate=date;
 137   1              for(i=0;i<num;i++)
 138   1                      {
 139   2                              start();
 140   2                              send(0xa0);
 141   2                              ack();
 142   2                              send(address+i);
 143   2                              ack();
 144   2                              start();
 145   2                              send(0xa1);
 146   2                              ack();
 147   2                              *(pdate+i)=read();
 148   2                              scl=0;
 149   2                              noack();
 150   2                              stop();
 151   2                              
 152   2              
 153   2                      }
 154   1      
 155   1      }
 156          
 157          void main()
 158          {
 159   1              uchar i;
 160   1              uchar number[8]={0xaa,0xfe,0x55,0xfc,0xd4,0xf2,0x56,0x88};
 161   1      
 162   1      //    uchar number1[8];
 163   1              wrtorom(number,0,8);
 164   1              delay(30);
 165   1              number[0]=0;
 166   1              number[1]=0;
 167   1      
 168   1              rdfromrom(number,0,8);
 169   1              for(i=0;i<8;i++)
 170   1              {
 171   2              P1=number[i];
 172   2       //     P1=numbe1[i];
 173   2      
 174   2       //     uchar number1[8]=number[i];
 175   2              delay(4000);
 176   2      
 177   2              }
 178   1      delay(400);
 179   1      delay(400);
C51 COMPILER V8.08   TEXT1                                                                 08/01/2008 09:29:47 PAGE 4   

 180   1      //delay(4000);
 181   1      //P1=number[2];
 182   1      delay(400);
 183   1      delay(400);
 184   1              
 185   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    347    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      25
   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 + -