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

📄 text1.lst

📁 基于80c51的模拟IIC时序
💻 LST
字号:
C51 COMPILER V8.05a   TEXT1                                                                07/04/2008 19:32:44 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit sda=P1^0;      
   5          sbit scl=P1^1;
   6          void IIC_delay(uchar x);
   7          void flash();
   8          void x24c02_init();
   9          void start(); 
  10          void stop();
  11          void writex(uchar j);
  12          uchar readx();
  13          void clock();
  14          uchar x24c02_read(uchar address);
  15          void x24c02_write(uchar address,uchar info);
  16          void delay10ms(void);
  17          void IIC_delay(uchar x)
  18          {  
  19   1              uint i;
  20   1              for(i=0;i<x;i++);
  21   1      }
  22          
  23          void flash()
  24          {  ;  ; }
  25          void x24c02_init()  //24c02初始化子程序
  26          {
  27   1              scl=1; 
  28   1              flash(); 
  29   1              sda=1; 
  30   1              flash();
  31   1      }
  32          void start()        //启动I2C总线
  33          {
  34   1              sda=1; 
  35   1              flash(); 
  36   1              scl=1; 
  37   1              flash(); 
  38   1              sda=0; 
  39   1              flash(); 
  40   1              scl=0; 
  41   1              flash();
  42   1      }
  43          void stop()         //停止I2C总线
  44          {
  45   1              sda=0; 
  46   1              flash(); 
  47   1              scl=1; 
  48   1              flash(); 
  49   1              sda=1; 
  50   1              flash();
  51   1      }
  52          void writex(uchar j)  //写一个字节
  53          {  
  54   1              uchar i,temp;
  55   1          temp=j;
C51 COMPILER V8.05a   TEXT1                                                                07/04/2008 19:32:44 PAGE 2   

  56   1          for (i=0;i<8;i++)
  57   1                      {
  58   2                              temp=temp<<1; 
  59   2                              scl=0; 
  60   2                              flash(); 
  61   2                              sda=CY; 
  62   2                              flash(); 
  63   2                              scl=1; 
  64   2                              flash();
  65   2                      }
  66   1      
  67   1              scl=0; 
  68   1              flash(); 
  69   1              sda=1; 
  70   1              flash();
  71   1      }
  72          uchar readx()   //读一个字节
  73          {
  74   1              uchar i,j,k=0;
  75   1              scl=0; 
  76   1              flash(); 
  77   1              sda=1;
  78   1          for (i=0;i<8;i++)
  79   1                      {  
  80   2                              flash(); 
  81   2                              scl=1; 
  82   2                              flash();
  83   2                              if (sda==1) j=1;
  84   2                              else j=0;
  85   2                              k=(k<<1)|j;
  86   2                              scl=0;
  87   2                      }
  88   1              flash(); 
  89   1              return(k);
  90   1      }
  91          void clock()         //I2C总线时钟
  92          {
  93   1              uchar i=0;
  94   1              scl=1; 
  95   1              flash();
  96   1              while ((sda==1)&&(i<255))i++;
  97   1              scl=0; 
  98   1              flash();
  99   1      }
 100          
 101          ////////从24c02的地址address中读取一个字节数据/////uchar x24c02_read(uchar address)
 102          uchar x24c02_read(uchar address)
 103          {
 104   1              uchar i;
 105   1              start(); 
 106   1              writex(0xa0);
 107   1              clock(); 
 108   1              writex(address);
 109   1              clock(); 
 110   1              start();
 111   1              writex(0xa1); 
 112   1              clock();
 113   1              i=readx(); 
 114   1              stop();
 115   1              IIC_delay(10);
 116   1              return(i);
 117   1      }
C51 COMPILER V8.05a   TEXT1                                                                07/04/2008 19:32:44 PAGE 3   

 118          
 119          //////向24c02的address地址中写入一字节数据info/////
 120          
 121          void x24c02_write(uchar address,uchar info)
 122          {
 123   1              EA=0;
 124   1              start(); 
 125   1              writex(0xa0);
 126   1              clock(); 
 127   1              writex(address);
 128   1              clock(); 
 129   1              writex(info);
 130   1              clock(); 
 131   1              stop(); 
 132   1              EA=1;
 133   1              IIC_delay(100);
 134   1      }
 135          main()
 136          {
 137   1       x24c02_init();
 138   1       x24c02_write(00,0x11);
 139   1       P3=x24c02_read(00);
 140   1       while(1);
 141   1      }
 142           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    252    ----
   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 + -