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

📄 iic.lst

📁 89c51的iic 读写的程序
💻 LST
字号:
C51 COMPILER V6.23a  IIC                                                                   09/12/2006 06:49:11 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <reg51.h>
   3          #include <absacc.h>
   4          
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          #define ulong unsigned long
   8          
   9          sbit scl=P3^0;                                                          //24c02 SCL
  10          sbit sda=P3^1;                                                          //24c02 SDA
  11          
  12          uchar code disptable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,  //0,1,2,3,4,5,6,7,8
  13                                  0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff};                //9,null 
  14          sbit P20=P2^0;
  15          sbit P21=P2^1;
  16          sbit P22=P2^2;
  17          sbit P23=P2^3;
  18          sbit P24=P2^4;
  19          sbit P25=P2^5;
  20          
  21          bdata  uchar  flag;
  22          sbit   flag0=flag^0;            
  23          sbit   flag1=flag^1; 
  24          sbit   flag2=flag^2; 
  25          sbit   flag3=flag^3; 
  26          sbit   flag4=flag^4; 
  27          sbit   flag5=flag^5; 
  28          sbit   flag6=flag^6;
  29          sbit   flag7=flag^7; 
  30          
  31          uchar x24c02_read(uchar address);                       //从24c02的地址address中读取一个字节数据
  32          void x24c02_write(uchar address,uchar info);//向24c02的address地址中写入一字节数据info
  33                                                                                                  
  34          void x24c02_init();                                                 //24c02初始化子程序
  35          void delay1(uchar x);
  36          void x24c01_init();
  37          void start();
  38          void stop();
  39          void writex(uchar j);
  40          uchar readx();
  41          void clock();
  42          uchar i;
  43          void delay(uchar x) {            /*--延时子程序--*/
  44   1          uchar y;
  45   1          while(x-->0) {
  46   2               for(y=0;y<125;y++) {;}
  47   2          }
  48   1        }
  49          void x24c02_init()
  50             {
  51   1           scl=1; sda=1; 
  52   1          }
  53          void start()
  54             {
  55   1           sda=1;  
C51 COMPILER V6.23a  IIC                                                                   09/12/2006 06:49:11 PAGE 2   

  56   1           scl=1; 
  57   1           sda=0; 
  58   1           scl=0;
  59   1          }
  60          void stop()
  61             {
  62   1           scl=0; 
  63   1           sda=0; 
  64   1           scl=1; 
  65   1           sda=1; 
  66   1          }
  67          void writex(uchar j)
  68             {
  69   1           uchar i,temp;
  70   1           temp=j;
  71   1           for (i=0;i<8;i++)
  72   1             {
  73   2               sda=(bit)(temp&0x80);
  74   2               scl=1; 
  75   2               scl=0; 
  76   2               temp=temp<<1; 
  77   2              }
  78   1           scl=0;
  79   1           sda=1; 
  80   1          }
  81          uchar readx()
  82             {
  83   1            uchar i,j,k=0;
  84   1            scl=0;
  85   1            sda=1;
  86   1            for (i=0;i<8;i++)
  87   1              {
  88   2                scl=1;
  89   2                if (sda==1) j=1;
  90   2                       else j=0;
  91   2                k=(k<<1)|j; 
  92   2                scl=0;
  93   2               } 
  94   1            return(k);
  95   1          }
  96          void clock()
  97             {
  98   1           uchar i=0;
  99   1           sda=1;
 100   1           scl=1; 
 101   1           i=sda;
 102   1           scl=0; 
 103   1          }
 104          uchar x24c02_read(uchar address)
 105             {
 106   1           uchar i;
 107   1           start(); 
 108   1           writex(0xa0);
 109   1           clock(); 
 110   1           writex(address);
 111   1           clock(); 
 112   1           start();
 113   1           writex(0xa1); 
 114   1           clock();
 115   1           i=readx(); 
 116   1           stop();
 117   1           delay(5);
C51 COMPILER V6.23a  IIC                                                                   09/12/2006 06:49:11 PAGE 3   

 118   1           return(i);
 119   1          }
 120          void x24c02_write(uchar address,uchar info)
 121             {
 122   1           EA=0;
 123   1           start(); 
 124   1           writex(0xa0);
 125   1           clock(); 
 126   1           writex(address);
 127   1           clock(); 
 128   1           writex(info);
 129   1           clock(); 
 130   1           stop();
 131   1           EA=1;
 132   1           delay(5);
 133   1          }
 134          void disp(void)
 135            {
 136   1          P0=0x25;
 137   1          P20=1;
 138   1          delay(5);
 139   1          P20=0;
 140   1          P0=0x99;
 141   1          P21=1;
 142   1          delay(5);
 143   1          P21=0;                                              //显示24  
 144   1          P0=0xff;
 145   1          P22=1;
 146   1          delay(5);
 147   1          P22=0;
 148   1          P0=0xff;
 149   1          P23=1;
 150   1          delay(5);
 151   1          P23=0;
 152   1          P0=disptable[i/16];
 153   1          P24=1;
 154   1          delay(5);
 155   1          P24=0;
 156   1          P0=disptable[i%16];
 157   1          P25=1;
 158   1          delay(5);
 159   1          P25=0;
 160   1         } 
 161          void disperr(void)
 162            {
 163   1          P0=0x25;
 164   1          P20=1;
 165   1          delay(5);
 166   1          P20=0;
 167   1          P0=0x99;
 168   1          P21=1;
 169   1          delay(5);
 170   1          P21=0;                                              //显示24err 
 171   1          P0=0xff;
 172   1          P22=1;
 173   1          delay(5);
 174   1          P22=0;
 175   1          P0=0x61;
 176   1          P23=1;
 177   1          delay(5);
 178   1          P23=0;
 179   1          P0=0xf1;
C51 COMPILER V6.23a  IIC                                                                   09/12/2006 06:49:11 PAGE 4   

 180   1          P24=1;
 181   1          delay(5);
 182   1          P24=0;
 183   1          P0=0xf5;
 184   1          P25=1;
 185   1          delay(5);
 186   1          P25=0;
 187   1         } 
 188          void dispgood(void)
 189            {
 190   1          P0=0x25;
 191   1          P20=1;
 192   1          delay(5);
 193   1          P20=0;
 194   1          P0=0x99;
 195   1          P21=1;
 196   1          delay(5);
 197   1          P21=0;                                              //显示24 good 
 198   1          P0=0x09;
 199   1          P22=1;
 200   1          delay(5);
 201   1          P22=0;
 202   1          P0=0x03;
 203   1          P23=1;
 204   1          delay(5);
 205   1          P23=0;
 206   1          P0=0x03;
 207   1          P24=1;
 208   1          delay(5);
 209   1          P24=0;
 210   1          P0=0x85;
 211   1          P25=1;
 212   1          delay(5);
 213   1          P25=0;
 214   1         } 
 215          //====================================================================//
 216          void main ()
 217             {
 218   1           uchar data addr,dat,j;
 219   1           x24c02_init();     
 220   1           flag0=1;flag1=0;
 221   1           addr=0;
 222   1               dat=0x55;
 223   1           while(flag0)
 224   1             {
 225   2                   x24c02_write(addr,dat);
 226   2               i=dat;
 227   2               for(j=0;j<20;j++)
 228   2                      disp();
 229   2                   j=x24c02_read(addr);            
 230   2               if(j!=dat)flag1=1;
 231   2               addr++;
 232   2                       dat++;
 233   2               if(addr==0x11)flag0=0;
 234   2              }
 235   1           if(flag1){
 236   2                     i=0;
 237   2                     while(1)disperr();  
 238   2                     } 
 239   1              else{
 240   2                   i=255;
 241   2                   while(1){
C51 COMPILER V6.23a  IIC                                                                   09/12/2006 06:49:11 PAGE 5   

 242   3                       dispgood(); 
 243   3                     }
 244   2                   }
 245   1           //x24c02_init();
 246   1          }
 247          //===================================================================//


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