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

📄 24c02.lst

📁 利用外部存储24C02完成开机计数实验,每一秒计数一次.
💻 LST
字号:
C51 COMPILER V8.08   24C02                                                                 03/23/2009 15:37:34 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24C02.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X52.H>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit wx1= P3^5;
   5          sbit wx2= P3^6;
   6          sbit scl=P2^2;
   7          sbit sda=P2^3;
   8          void display();
   9          uchar k,count,num,flag;
  10          uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11          void delay()
  12           {
  13   1        ; ;
  14   1        }
  15          
  16          void init() //24C02 初始化
  17           {
  18   1        sda=1;
  19   1        delay();
  20   1        scl=1;
  21   1        delay();
  22   1        TR0=1;
  23   1        ET0=1;
  24   1        EA=1;
  25   1        }
  26          void start() //开始信号
  27          {
  28   1        sda=1;
  29   1        delay();
  30   1        scl=1;
  31   1        delay();
  32   1        sda=0;
  33   1        delay();
  34   1        }
  35          void stop() //结束信号
  36          {
  37   1        sda=0;
  38   1        delay();
  39   1        scl=1;
  40   1        delay();
  41   1        sda=1;
  42   1        delay();
  43   1        }
  44          void respons() //应答信号
  45          {
  46   1        uchar i=0;
  47   1        scl=1;
  48   1        delay();
  49   1        while((sda==1)&&(i<250))i++; //应答等待,如超时则认为应答成功
  50   1        scl=0;
  51   1        delay();
  52   1        }
  53          void writebyte(uchar dat) //写位操作
  54          {
  55   1        uchar i,temp;
C51 COMPILER V8.08   24C02                                                                 03/23/2009 15:37:34 PAGE 2   

  56   1        temp=dat;
  57   1        for(i=0;i<8;i++)
  58   1        {
  59   2         temp=temp<<1;
  60   2         scl=0;
  61   2         delay();
  62   2         sda=CY;
  63   2         delay();
  64   2         scl=1;
  65   2         delay();
  66   2          }
  67   1        scl=0;
  68   1        delay();
  69   1        sda=1;
  70   1        delay();
  71   1         }
  72          uchar readbyte() //读位操作
  73          {
  74   1        uchar i,k;
  75   1        scl=0;
  76   1        delay();
  77   1        sda=1;
  78   1        delay();
  79   1        for(i=0;i<8;i++)
  80   1        {
  81   2         scl=1;
  82   2         delay();
  83   2         k=(k<<1)|sda;
  84   2         scl=0;
  85   2         delay();
  86   2         }
  87   1        return k;
  88   1      
  89   1        }
  90          void writeadd(uchar address,uchar info) //向24C02 写数据操作,凡写入都要有形参
  91          {
  92   1       start();
  93   1       writebyte(0xa0);
  94   1       respons();
  95   1       writebyte(address);
  96   1       respons();
  97   1       writebyte(info);
  98   1       respons();
  99   1       stop();
 100   1       }
 101          uchar readadd(uchar address) //从24C02 读数据操作,凡读出都要有返回值
 102          {
 103   1       uchar dd;
 104   1       start();
 105   1       writebyte(0xa0);
 106   1       respons();
 107   1       writebyte(address);
 108   1       respons();
 109   1       start();
 110   1       writebyte(0xa1);
 111   1       respons();
 112   1       dd=readbyte();
 113   1       stop();
 114   1       return dd;
 115   1       }
 116          delay1(uchar z)
 117          {
C51 COMPILER V8.08   24C02                                                                 03/23/2009 15:37:34 PAGE 3   

 118   1       int x,y;
 119   1       for(x=z;x>0;x--)
 120   1       for(y=100;y>0;y--);
 121   1      }
 122           
 123           void display(uchar x)
 124          {
 125   1       wx1=0;
 126   1       P0=table[x/10];
 127   1       delay1(1);
 128   1       P0=0xff;
 129   1       wx1=1;
 130   1       wx2=0;
 131   1       P0=table[x%10];
 132   1       delay1(1);
 133   1       P0=0xff;
 134   1       wx2=1;
 135   1      }
 136          void main()
 137          {
 138   1       init();
 139   1       count=readadd(0);
 140   1       delay1(10);
 141   1       TH0=(65536-50000)/256;
 142   1       TL0=(65536-50000)%256;
 143   1         while(1)
 144   1        {
 145   2         display(count);
 146   2        }
 147   1        }
 148            
 149          
 150          
 151          void ser() interrupt 1
 152          {
 153   1       TH0=(65536-50000)/256;
 154   1       TL0=(65536-50000)%256;
 155   1       num++;
 156   1       if(num==20)
 157   1       {
 158   2        count++;
 159   2        if(count==100)
 160   2        {
 161   3         count=0;
 162   3        }
 163   2        writeadd(0,count);
 164   2        delay1(10);
 165   2       
 166   2        
 167   2       }
 168   1      }
 169          
 170          
 171          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    360    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
C51 COMPILER V8.08   24C02                                                                 03/23/2009 15:37:34 PAGE 4   

   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 + -