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

📄 ex.lst

📁 CT107D测试程序(含超声测距)
💻 LST
字号:
C51 COMPILER V9.02   EX                                                                    01/01/2006 01:36:36 PAGE 1   


C51 COMPILER V9.02, COMPILATION OF MODULE EX
OBJECT MODULE PLACED IN .\output\ex.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ex.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\ex.lst) OBJECT(.\output\ex.obj)

line level    source

   1          #include<AT89X52.h>
   2          #include<intrins.h>
   3          #define somenop(); {_nop_();_nop_();_nop_();_nop_();_nop_();} 
   4          sbit SCK = P2^0;
   5          sbit SDA = P2^1;
   6          void delay(int cnt);
   7          void i2c_start(void);
   8          void i2c_stop(void);
   9          void i2c_ACK(unsigned char ck);
  10          bit i2c_waitACK();
  11          void i2c_sendbyte(unsigned char ch);
  12          unsigned char i2c_readbyte(unsigned char add);
  13          void delay(int cnt)
  14          {
  15   1          int i;
  16   1          for(i=0;i<cnt;i++);
  17   1      }
  18          void i2c_start()
  19          {
  20   1          SDA = 1;
  21   1          _nop_();
  22   1          SCK = 1;
  23   1          somenop();
  24   1          SDA = 0;
  25   1          somenop();
  26   1          SCK = 0;
  27   1      }
  28          void i2c_stop()
  29          {
  30   1          SDA = 0;
  31   1          _nop_();
  32   1          SCK = 1;
  33   1          somenop();
  34   1          SDA = 1;
  35   1      }
  36          void i2c_ACK(unsigned char ck)
  37          {
  38   1          if(ck) 
  39   1                      SDA = 0;
  40   1              else 
  41   1                      SDA = 1; 
  42   1              somenop();
  43   1              SCK = 1;
  44   1              somenop();
  45   1              SCK = 0;
  46   1          SDA = 1; 
  47   1          somenop();
  48   1      }
  49          
  50          bit i2c_waitACK()
  51          {
  52   1          SDA = 1;
  53   1          somenop();
  54   1          SCK = 1;
  55   1          somenop();
C51 COMPILER V9.02   EX                                                                    01/01/2006 01:36:36 PAGE 2   

  56   1          if(SDA)    
  57   1          {   
  58   2                      SCK = 0;
  59   2                      i2c_stop();
  60   2                      return 0;
  61   2          }
  62   1              else  
  63   1          { 
  64   2                      SCK = 0;
  65   2                      return 1;
  66   2          }
  67   1      }
  68          
  69          void i2c_sendbyte(unsigned char ch)
  70          {
  71   1          unsigned char i;
  72   1          for(i=0;i<8;i++)
  73   1          {   
  74   2                      if(ch&0x80) 
  75   2                              SDA = 1;
  76   2                      else 
  77   2                              SDA = 0;
  78   2                      somenop();
  79   2                      SCK = 1;
  80   2                      ch<<=1;
  81   2                      somenop();
  82   2              SCK = 0;
  83   2              }
  84   1      }
  85           
  86          unsigned char i2c_recbyte()
  87          {
  88   1          unsigned char da;
  89   1          unsigned char j;
  90   1          for(j=0;j<8;j++)
  91   1          {   
  92   2                      SCK = 1;
  93   2                      somenop();
  94   2                      da<<=1;
  95   2                      if(SDA) 
  96   2                      da=da|0x01;
  97   2                      SCK = 0;
  98   2                      somenop();
  99   2           }
 100   1           return da;
 101   1      }
 102          void i2c_writebyte(unsigned char add,unsigned char dat)
 103          {
 104   1          i2c_start();
 105   1          i2c_sendbyte(0xa0);
 106   1          i2c_waitACK();
 107   1          i2c_sendbyte(add);
 108   1          i2c_waitACK();
 109   1          i2c_sendbyte(dat);
 110   1          i2c_waitACK();
 111   1          i2c_stop();
 112   1          delay(124);
 113   1      }
 114          unsigned char i2c_readbyte(unsigned char add)
 115          {
 116   1          unsigned char da;
 117   1          i2c_start();
C51 COMPILER V9.02   EX                                                                    01/01/2006 01:36:36 PAGE 3   

 118   1          i2c_sendbyte(0xa0);
 119   1          i2c_waitACK();
 120   1          i2c_sendbyte(add);
 121   1          i2c_waitACK();
 122   1      i2c_start();
 123   1          i2c_sendbyte(0xa1);
 124   1          i2c_waitACK();
 125   1          da = i2c_recbyte();
 126   1          i2c_ACK(0); 
 127   1      i2c_stop();
 128   1          return da;
 129   1      }
 130          void main()
 131          {
 132   1          i2c_writebyte(0x00,0x11);
 133   1              P0=i2c_readbyte(0x00);//观察P0口的状态是否为0xAA
 134   1              P2=0x80;
 135   1              P2=0x00;
 136   1          while(1);
 137   1      } 


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