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

📄 ds1032.lst

📁 这是一个和proteus结合的一用ds1032实现的例子
💻 LST
字号:
C51 COMPILER V7.50   DS1032                                                                01/01/2003 07:52:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DS1032
OBJECT MODULE PLACED IN ds1032.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds1032.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #pragma small
   2          #include <reg51.h>
   3          #define uchar unsigned char 
   4          
   5          sbit ds1032_clk=P1^0;
   6          sbit ds1032_dat=P1^1;
   7          sbit ds1032_rst=P1^2;
   8          
   9          sbit ACC_0=ACC^0;
  10          sbit ACC_1=ACC^1;
  11          sbit ACC_2=ACC^2;
  12          sbit ACC_3=ACC^3;
  13          sbit ACC_4=ACC^4;
  14          sbit ACC_5=ACC^5;
  15          sbit ACC_6=ACC^6;
  16          sbit ACC_7=ACC^7;
  17          
  18          
  19          void write(void)    //写ds1032操作
  20            {
  21   1         ds1032_dat=ACC_0;
  22   1         ds1032_clk=1;ds1032_clk=0;
  23   1         ds1032_dat=ACC_1;
  24   1         ds1032_clk=1;ds1032_clk=0;
  25   1         ds1032_dat=ACC_2;
  26   1         ds1032_clk=1;ds1032_clk=0;
  27   1         ds1032_dat=ACC_3;
  28   1         ds1032_clk=1;ds1032_clk=0;
  29   1         ds1032_dat=ACC_4;
  30   1         ds1032_clk=1;ds1032_clk=0;
  31   1         ds1032_dat=ACC_5;
  32   1         ds1032_clk=1;ds1032_clk=0;
  33   1         ds1032_dat=ACC_6;
  34   1         ds1032_clk=1;ds1032_clk=0;
  35   1         ds1032_dat=ACC_7;
  36   1         ds1032_clk=1;ds1032_clk=0;
  37   1        }
  38          
  39          void read(void)   //读ds1032操作
  40           {ACC_0=ds1032_dat;
  41   1        ds1032_clk=1;
  42   1        ds1032_clk=0;
  43   1        ACC_1=ds1032_dat;
  44   1        ds1032_clk=1;
  45   1        ds1032_clk=0;
  46   1        ACC_2=ds1032_dat;
  47   1        ds1032_clk=1;
  48   1        ds1032_clk=0;
  49   1        ACC_3=ds1032_dat;
  50   1        ds1032_clk=1;
  51   1        ds1032_clk=0;
  52   1        ACC_4=ds1032_dat;
  53   1        ds1032_clk=1;
  54   1        ds1032_clk=0;
  55   1        ACC_5=ds1032_dat;
C51 COMPILER V7.50   DS1032                                                                01/01/2003 07:52:47 PAGE 2   

  56   1        ds1032_clk=1;
  57   1        ds1032_clk=0;
  58   1        ACC_6=ds1032_dat;
  59   1        ds1032_clk=1;
  60   1        ds1032_clk=0;
  61   1        ACC_7=ds1032_dat;
  62   1        ds1032_clk=1;
  63   1        ds1032_clk=0;
  64   1       }
  65          
  66          uchar readram_b(uchar address)  //从ram中读出一个字节
  67           {ds1032_rst=0;
  68   1        ds1032_clk=0;
  69   1        ds1032_rst=1;
  70   1        ACC=address;
  71   1        write();
  72   1        ds1032_dat=1;
  73   1        read();
  74   1        return ACC;
  75   1       }
  76          
  77          
  78          uchar readrtc_b(uchar address)  //从ds1032中读出一个字节
  79            {
  80   1         ds1032_rst=0;
  81   1         ds1032_clk=0;   //清时钟总线
  82   1         ds1032_rst=1;  
  83   1         ACC=address;
  84   1         write();
  85   1         ds1032_dat=1;
  86   1         read();
  87   1         return ACC;
  88   1        }
  89          
  90           void writeram_b(uchar address,uchar number)  //向RAM中写入一字节
  91            {ds1032_clk=0;
  92   1         ds1032_rst=0;
  93   1         ds1032_rst=1;
  94   1         ACC=address;
  95   1         write();
  96   1         ACC=number;
  97   1         write();
  98   1         ds1032_rst=0;
  99   1         ds1032_clk=1;
 100   1        }
 101          
 102           void writertc_b(uchar address,uchar number)   //向DS1032中写入一字节
 103             {ds1032_clk=0;
 104   1          ds1032_rst=0;
 105   1          ds1032_rst=1;
 106   1              ACC=address;
 107   1              write();
 108   1              ACC=number;
 109   1              write();
 110   1              ds1032_rst=0;
 111   1              ds1032_clk=1;
 112   1         }
 113          
 114            void readram(uchar data *buffer,uchar size)   //从RAM中读出多字节
 115             {register uchar a,b;
 116   1          ds1032_clk=0;
 117   1              ds1032_rst=0;
C51 COMPILER V7.50   DS1032                                                                01/01/2003 07:52:47 PAGE 3   

 118   1              ds1032_rst=1;
 119   1              ACC=0XFF;
 120   1          write();
 121   1              ds1032_dat=1;
 122   1              for(a=0;a<size;a++)      
 123   1               {ACC_0=ds1032_dat;
 124   2                ds1032_clk=1;ds1032_clk=0;ACC_1=ds1032_dat;
 125   2                ds1032_clk=1;ds1032_clk=0;ACC_2=ds1032_dat;
 126   2                ds1032_clk=1;ds1032_clk=0;ACC_3=ds1032_dat;
 127   2                ds1032_clk=1;ds1032_clk=0;ACC_4=ds1032_dat;
 128   2                ds1032_clk=1;ds1032_clk=0;ACC_5=ds1032_dat;
 129   2                ds1032_clk=1;ds1032_clk=0;ACC_6=ds1032_dat;
 130   2                ds1032_clk=1;ds1032_clk=0;ACC_7=ds1032_dat;
 131   2            b=ACC;
 132   2                *(buffer+a)=b;
 133   2                ds1032_clk=1;ds1032_clk=0;
 134   2               }
 135   1          ds1032_rst=0;ds1032_clk=1;
 136   1         }
 137          
 138          
 139          
 140            void readrtc(uchar data *buffer,uchar size)   //从DS1032中读出多字节
 141             {register uchar a;
 142   1          uchar b;
 143   1          ds1032_clk=0;
 144   1              ds1032_rst=0;
 145   1              ds1032_rst=1;
 146   1              ACC=0Xbf;
 147   1          write();
 148   1              ds1032_dat=1;
 149   1              for(a=0;a<size;a++)   //读出DS1032数据
 150   1               {ACC_0=ds1032_dat;
 151   2                ds1032_clk=1;ds1032_clk=0;ACC_1=ds1032_dat;
 152   2                ds1032_clk=1;ds1032_clk=0;ACC_2=ds1032_dat;
 153   2                ds1032_clk=1;ds1032_clk=0;ACC_3=ds1032_dat;
 154   2                ds1032_clk=1;ds1032_clk=0;ACC_4=ds1032_dat;
 155   2                ds1032_clk=1;ds1032_clk=0;ACC_5=ds1032_dat;
 156   2                ds1032_clk=1;ds1032_clk=0;ACC_6=ds1032_dat;
 157   2                ds1032_clk=1;ds1032_clk=0;ACC_7=ds1032_dat;
 158   2            b=ACC;
 159   2                *(buffer+a)=b;
 160   2                ds1032_clk=1;ds1032_clk=0;
 161   2               }
 162   1          ds1032_rst=0;ds1032_clk=1;
 163   1         }
 164          
 165           void writeram(uchar data *buffer,uchar size)  //向RAM中写入多字节
 166             {register uchar a;
 167   1          ds1032_clk=0;
 168   1              ds1032_rst=0;
 169   1              ds1032_rst=1;
 170   1              ACC=0XFE;
 171   1              write();
 172   1              for(a=0;a<size;a++)
 173   1               {ACC=*(buffer+a);
 174   2                write();
 175   2               }
 176   1              ds1032_rst=0;
 177   1              ds1032_clk=1;
 178   1         }
 179            void writertc(uchar data *buffer,uchar size) //向DS1032中写入多字节
C51 COMPILER V7.50   DS1032                                                                01/01/2003 07:52:47 PAGE 4   

 180                {register uchar a;
 181   1          ds1032_clk=0;
 182   1              ds1032_rst=0;
 183   1              ds1032_rst=1;
 184   1              ACC=0Xbe;
 185   1              write();
 186   1              for(a=0;a<size;a++)
 187   1               {ACC=*(buffer+a);
 188   2                write();
 189   2               }
 190   1              ds1032_rst=0;
 191   1              ds1032_clk=1;
 192   1         }
 193          
 194            uchar readsec(void)                //从DS1032中读出秒字节
 195             {return readrtc_b(0x81);}
 196          
 197          
 198            uchar readmin(void)//从DS1032中读出分字节
 199             {return readrtc_b(0x83);}
 200          
 201              uchar readhr(void)                //从DS1032中读出时字节
 202             {return readrtc_b(0x85);}
 203          
 204              uchar readday(void)               //从DS1032中读出日字节
 205             {return readrtc_b(0x87);}
 206          
 207              uchar readmonth(void)             //从DS1032中读出月字节
 208             {return readrtc_b(0x89);}
 209          
 210              uchar readweek(void)               //从DS1032中读星秒字节
 211             {return readrtc_b(0x8b);}
 212          
 213              uchar readyear(void)             //从DS1032中读出年字节
 214             {return readrtc_b(0x8d);}
 215          
 216              uchar writesec(uchar number)      //向DS1032中写入秒字节
 217                   {writertc_b(0x80,number);} 
*** WARNING C173 IN LINE 217 OF DS1032.C: missing return-expression
 218          
 219              uchar writemin(uchar number)      //向DS1032中写入秒字节
 220                   {writertc_b(0x82,number);} 
*** WARNING C173 IN LINE 220 OF DS1032.C: missing return-expression
 221          
 222                uchar writehr(uchar number)      //向DS1032中写入秒字节
 223                   {writertc_b(0x84,number);} 
*** WARNING C173 IN LINE 223 OF DS1032.C: missing return-expression
 224          
 225                 uchar writeday(uchar number)      //向DS1032中写入秒字节
 226                   {writertc_b(0x86,number);} 
*** WARNING C173 IN LINE 226 OF DS1032.C: missing return-expression
 227          
 228                 uchar writemonth(uchar number)    //向DS1032中写入秒字节
 229                   {writertc_b(0x88,number);} 
*** WARNING C173 IN LINE 229 OF DS1032.C: missing return-expression
 230          
 231                 uchar writeweek(uchar number)      //向DS1032中写入秒字节
 232                   {writertc_b(0x8a,number);} 
*** WARNING C173 IN LINE 232 OF DS1032.C: missing return-expression
 233          
 234                 uchar writeyear(uchar number)      //向DS1032中写入秒字节
 235                   {writertc_b(0x8c,number);} 
C51 COMPILER V7.50   DS1032                                                                01/01/2003 07:52:47 PAGE 5   

*** WARNING C173 IN LINE 235 OF DS1032.C: missing return-expression
 236          
 237                 uchar writecontrol(uchar number)            //向慢速充电控制寄存器写入控制字
 238                           {writertc_b(0x90,number);} 
*** WARNING C173 IN LINE 238 OF DS1032.C: missing return-expression
 239          
 240                     void disablewp(void)                       //禁止写保护
 241                       {writertc_b(0x80,0);}
 242          
 243                 void enablewp(void)                         //允许写保护
 244                       {writertc_b(0x8e,0x80);}
 245          
 246                void main(void)
 247                     {uchar sec,min,hr,day,month,week,year;
 248   1                  uchar data buffer1[32]={32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57
             -,58,59,60,61,62,63};
 249   1                       uchar data buffer2[8]={45,45,15,13,3,2,01,0};
 250   1                  
 251   1                                                 //读DS1032
 252   1                       disablewp();                                  //禁止写保护  
 253   1              writecontrol(0xaa);                           //向慢充电控制寄存器写入控制字节
 254   1                      writeram(buffer1,31);                         //读DS1032RAM
 255   1                   
 256   1              writertc(buffer2,8);                           //向DS1032写时钟  
 257   1                      enablewp();                                   //允许写保护
 258   1                      readram(buffer1,31);                           //读DS1032RAM
 259   1                      readrtc(buffer2,8);                            //读DS1032时钟
 260   1                  writesec(11);
 261   1                      sec=readsec();                                 //读秒 
 262   1                      min=readmin();                                  //读分
 263   1                      hr=readhr();                                    //读时
 264   1                      day=readday();                                   //读日
 265   1                      month=readmonth();                                //读月
 266   1                      week=readweek();
 267   1              //      year=readyear();
 268   1                      ACC=0;
 269   1                 }
*** WARNING C280 IN LINE 247 OF DS1032.C: 'year': unreferenced local variable
 270                  
 271               
 272          
 273          
 274          
 275          
 276          
 277          
 278          
 279          
 280             
 281          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    672    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      47
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  9 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -