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

📄 时钟iic.lst

📁 iic总线的单片机C程序
💻 LST
字号:
C51 COMPILER V8.08   时_覫IC                                                               04/10/2009 11:01:51 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 时_覫IC
OBJECT MODULE PLACED IN 时钟iic.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 时钟iic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #define  unchar  unsigned  char
   4          #define  unint   unsigned  int
   5          sbit   sda=P1^5;
   6          sbit   scl=P1^6;
   7           sbit dula=P2^0 ;
   8           sbit wela=P2^1; 
   9          unchar  code  shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  10          unchar  code  wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  11          unchar   hour,minute,second,i;
  12          unchar hour1,hour0,minute1,minute0,second1,second0;
  13          void   delay(void)                
  14          {  unchar a;
  15   1        for(a=0;a<10;a++)
  16   1          {}
  17   1       }
  18          
  19          void  start()                  
  20          {
  21   1      sda=1;
  22   1      delay();
  23   1      scl=1;
  24   1      delay();
  25   1      sda=0;
  26   1      delay();
  27   1      }
  28          
  29          void  stop()                   
  30          {
  31   1      sda=0;
  32   1      delay();
  33   1      scl=1;
  34   1      delay();
  35   1      sda=1;
  36   1      delay();
  37   1      }
  38          
  39          void   responsion()          
  40          {
  41   1      unchar  i=0;
  42   1      scl=1;
  43   1      delay();
  44   1      while((sda==1)&&(i<250))         
  45   1      i++;
  46   1      scl=0;
  47   1      delay();
  48   1      }
  49          
  50          void  write_date(unchar date)     
  51          {
  52   1      unchar  i=0,temp=0;
  53   1      temp=date;
  54   1      for(i=0;i<8;i++)
  55   1        {
C51 COMPILER V8.08   时_覫IC                                                               04/10/2009 11:01:51 PAGE 2   

  56   2          temp=temp<<1;
  57   2      scl=0;
  58   2          delay();
  59   2      sda=CY;
  60   2          delay();
  61   2      scl=1;
  62   2          delay();
  63   2        }
  64   1        scl=0;
  65   1        delay();
  66   1        sda=1;
  67   1        delay();
  68   1      }
  69          
  70          unchar  read_date()                   
  71          {
  72   1          unchar i,date;
  73   1          scl=0;
  74   1          delay();
  75   1          sda=1;
  76   1          delay();
  77   1      for(i=0;i<8;i++)
  78   1         {
  79   2            scl=1;
  80   2             delay();
  81   2         date=(date<<1)|sda;
  82   2         scl=0;
  83   2               delay();
  84   2         }
  85   1         return   date;
  86   1      }
  87          
  88          void init()
  89          {
  90   1      sda=1;
  91   1      scl=1;
  92   1          delay();
  93   1      }
  94          
  95          void write_add(unchar address,unchar date)         
  96          {
  97   1      start();
  98   1      write_date(0xa0);
  99   1      responsion();
 100   1      write_date(address);
 101   1      responsion();
 102   1      write_date(date);
 103   1      responsion();
 104   1      stop();
 105   1      }
 106          
 107          unchar read_add(unchar address)               
 108          {
 109   1      unchar date;
 110   1      start();
 111   1      write_date(0xa0);
 112   1      responsion();
 113   1      write_date(address);
 114   1      responsion();
 115   1      start();
 116   1      write_date(0xa1);
 117   1      responsion();
C51 COMPILER V8.08   时_覫IC                                                               04/10/2009 11:01:51 PAGE 3   

 118   1      date=read_date();
 119   1      stop();
 120   1      return date;
 121   1      }
 122          
 123          void   delay1(unchar z)                       
 124          {
 125   1        unchar  x,y;
 126   1        for(x=z;x>0;x--)
 127   1           for(y=100;y>0;y--);
 128   1      }
 129          
 130          void  time()                                      
 131          {
 132   1        if(i>=20)
 133   1        {
 134   2           i=0;
 135   2           second+=1;
 136   2        second1=second/10;
 137   2           second0=second%10;
 138   2           write_add(5,second1);
 139   2          delay1(10);
 140   2           write_add(6,second0);
 141   2          if(second==59)
 142   2          {
 143   3           second=0;
 144   3           minute+=1;
 145   3           minute1=0x00+minute/10;
 146   3           minute0=0x00+minute%10;  
 147   3           write_add(3,minute1);
 148   3           delay1(10);
 149   3           write_add(4,minute0);
 150   3          }
 151   2         if(minute==59)
 152   2          {
 153   3         minute =0;
 154   3         hour+=1;
 155   3         hour1=0x00+hour/10;
 156   3         hour0=0x00+hour%10;
 157   3         write_add(1,hour1);
 158   3         delay1(10);
 159   3         write_add(2,hour0);
 160   3         }
 161   2         if(hour==24)
 162   2         hour=0;
 163   2      }
 164   1      }
 165          void   display()
 166          {   
 167   1          P0=0x7f;
 168   1          wela=1;  
 169   1          wela=0;
 170   1          P0=shu[read_add(1)];
 171   1              dula=1;
 172   1              dula=0;
 173   1              P0=0xff;
 174   1              dula=1;
 175   1              dula=0;
 176   1               
 177   1               P0= 0xbf;
 178   1               wela=1;  
 179   1           wela=0;
C51 COMPILER V8.08   时_覫IC                                                               04/10/2009 11:01:51 PAGE 4   

 180   1               P0=shu[read_add(2)];
 181   1               dula=1 ;
 182   1               dula=0;
 183   1               P0=0xff;
 184   1               dula=1;
 185   1               dula=0;
 186   1               
 187   1               P0=0xdf;
 188   1               wela=1;  
 189   1           wela=0;
 190   1           P0=0x40;
 191   1               dula=1;
 192   1               dula=0;
 193   1               P0=0xff;
 194   1               dula=1;
 195   1               dula=0;
 196   1               
 197   1               P0=0xef;
 198   1               wela=1;
 199   1               wela=0;
 200   1               P0=shu[read_add(3)];
 201   1               dula=1;
 202   1               dula=0;
 203   1               P0=0xff;
 204   1               dula=1;
 205   1               dula=0;
 206   1               
 207   1               P0=0xf7;
 208   1               wela=1;
 209   1               wela=0;
 210   1           P0=shu[read_add(4)];
 211   1               dula=1;
 212   1               dula=0;
 213   1               P0=0xff;
 214   1               dula=1;
 215   1               dula=0;
 216   1      
 217   1               P0=0xfb;
 218   1               wela=1;
 219   1               wela=0;
 220   1               P0=0xbf;
 221   1               dula=1;
 222   1               dula=0;
 223   1               P0=0xff;
 224   1               dula=1;
 225   1               dula=0;
 226   1      
 227   1               P0=0xfd;
 228   1               wela=1;
 229   1               wela=0;
 230   1               P0=shu[read_add(5)];
 231   1               dula=1;
 232   1               dula=0;
 233   1               P0=0x40;
 234   1               dula=1;
 235   1               dula=0;
 236   1               
 237   1               P0=0xf7;
 238   1               wela=1;
 239   1               wela=0;
 240   1               P0=shu[read_add(6)];
 241   1               dula=1;
C51 COMPILER V8.08   时_覫IC                                                               04/10/2009 11:01:51 PAGE 5   

 242   1               dula=0;
 243   1               P0=0xff;
 244   1               dula=1;
 245   1               dula=0;
 246   1       
 247   1      }
 248          
 249          void   memory()
 250          {
 251   1      second1=read_add(5);
 252   1      second0=read_add(6);
 253   1      second=second1*10+second0;
 254   1      minute1=read_add(3);
 255   1      minute0=read_add(4);
 256   1      minute=minute1*10+minute0;
 257   1      hour1=read_add(1);
 258   1      hour0=read_add(2);
 259   1      hour=hour1*10+hour0;
 260   1      }
 261          void  main()
 262          {
 263   1      TMOD=0x01;                        
 264   1      TH0=(65536-50000)/256;
 265   1      TL0=(65536-50000)%256;
 266   1          EA=1;
 267   1          ET0=1;
 268   1          TR0=1;
 269   1         init();
 270   1         memory();
 271   1         while(1)
 272   1         {
 273   2         time();
 274   2         display();
 275   2         }
 276   1      }
 277          void   timing()   interrupt   1
 278          {
 279   1      TH0=(65536-50000)/256;
 280   1      TL0=(65536-50000)%256;
 281   1      i++;
 282   1      }


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