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

📄 1302.lst

📁 可以实现多路数据采集和传输系统
💻 LST
字号:
C51 COMPILER V7.20   1302                                                                  08/21/2007 08:13:24 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 1302
OBJECT MODULE PLACED IN 1302.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE 1302.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #define uchar unsigned char 
   3          sbit clock_clk =P1^5;         //与硬件相关的连线  clk为DS1302的时钟信号线
   4          sbit clock_dat=P1^6;        //DAT为DS1302的I/O数据线
   5          sbit clock_Rst =P1^7;         //RST为DS1302的RST信号线
   6          
   7          sbit a0   = ACC ^ 0;
   8          sbit a1   = ACC ^ 1;
   9          sbit a2   = ACC ^ 2;
  10          sbit a3   = ACC ^ 3;
  11          sbit a4   = ACC ^ 4;
  12          sbit a5   = ACC ^ 5;
  13          sbit a6   = ACC ^ 6;
  14          sbit a7   = ACC ^ 7;
  15          sbit key1=P1^2;
  16          
  17          sbit key2=P1^3;
  18          sbit key4=P1^5;
  19          uchar set;
  20          uchar j0,j1,j2,j3,j4,j5,j6,j7,k0,k1,k2,k3,k4,k5,k6,k7;
  21          uchar code time[] = {0x00,0x10,0x7,0x1,0x1,0x01,0x07};
  22          uchar year,month,day,week,hour,min,sec;
  23          /****************************函数定义**************************************/
  24          
  25          /******************************************************************/
  26          /* 函数名:write(address);
  27          /* 参  数:地址/数据字节
  28          /* 功  能:用于向DS1302输入地址或数据信息
  29          /******************************************************************/
  30          void clock_out(unsigned char dd){ //write ds1302
  31   1       ACC=dd;
  32   1       clock_dat=a0; clock_clk=1; clock_clk=0;
  33   1       clock_dat=a1; clock_clk=1; clock_clk=0;
  34   1       clock_dat=a2; clock_clk=1; clock_clk=0;
  35   1       clock_dat=a3; clock_clk=1; clock_clk=0;
  36   1       clock_dat=a4; clock_clk=1; clock_clk=0;
  37   1       clock_dat=a5; clock_clk=1; clock_clk=0;
  38   1       clock_dat=a6; clock_clk=1; clock_clk=0;
  39   1       clock_dat=a7; clock_clk=1; clock_clk=0;
  40   1      }
  41          /*****************************************************************************/
  42          unsigned char clock_in(void){  //read ds1302
  43   1       clock_dat=1;
  44   1       a0=clock_dat;
  45   1       clock_clk=1; clock_clk=0; a1=clock_dat;
  46   1       clock_clk=1; clock_clk=0; a2=clock_dat;
  47   1       clock_clk=1; clock_clk=0; a3=clock_dat;
  48   1       clock_clk=1; clock_clk=0; a4=clock_dat;
  49   1       clock_clk=1; clock_clk=0; a5=clock_dat;
  50   1       clock_clk=1; clock_clk=0; a6=clock_dat;
  51   1       clock_clk=1; clock_clk=0; a7=clock_dat;
  52   1       return(ACC);
  53   1      }
  54          /*****************************************************************************/
  55          
C51 COMPILER V7.20   1302                                                                  08/21/2007 08:13:24 PAGE 2   

  56          unsigned char read_clock(unsigned char ord){
  57   1       unsigned char dd=0;
  58   1       clock_clk=0;
  59   1       clock_Rst=0;
  60   1       clock_Rst=1;
  61   1       clock_out(ord);
  62   1       dd=clock_in();
  63   1       clock_Rst=0;
  64   1       clock_clk=1;
  65   1       return(dd);
  66   1      }
  67          void write_clock(unsigned char ord, unsigned char dd){
  68   1       clock_clk=0;
  69   1       clock_Rst=0;
  70   1       clock_Rst=1;
  71   1       clock_out(ord);
  72   1       clock_out(dd);
  73   1       clock_Rst=0;
  74   1       clock_clk=1;
  75   1      }
  76          void Init_1302(void){      //(2000年1月1日00时00分00秒星期一)
  77   1      uchar i;
  78   1      write_clock(0x8e,0x00);//允许写操作
  79   1       for(i=0;i<7;i++){
  80   2       write_clock(0x80+i+i,time[i]);
  81   2      }
  82   1      
  83   1       write_clock(0x90,0xa5);//充电 
  84   1       write_clock(0x8e,0x80);//禁止写操作
  85   1       
  86   1      }
  87           void delay0(uchar x){
  88   1       uchar i,j;
  89   1       for(i=0;i<x;i++)
  90   1         for(j=0;j<125;j++);
  91   1      }
  92          
  93          uchar DeToBCD(uchar DE){
  94   1          return (DE/10)*16+DE%10;
  95   1      }
  96          time_set(){
  97   1        if(!key1){
  98   2       delay0(20);
  99   2        if(!key1){
 100   3         set++;
 101   3       if(set == 8){
 102   4        set = 0;
 103   4        }
 104   3        }while(!key1);
 105   2       }
 106   1       if(set == 1){//秒
 107   2       write_clock(0x8e,0x00);
 108   2        if(!key2){
 109   3          delay0(20);
 110   3          if(!key2){
 111   4          j0++;
 112   4           if(j0==59){
 113   5            j0=0;
 114   5            }
 115   4           }
 116   3           while(!key2);
 117   3          } 
C51 COMPILER V7.20   1302                                                                  08/21/2007 08:13:24 PAGE 3   

 118   2       k0 = DeToBCD(j0);
 119   2        write_clock(0x80,0+k1);
 120   2        write_clock(0x8e,0x80);
 121   2        }
 122   1        if(set == 2){//分
 123   2        write_clock(0x8e,0x00);
 124   2        if(!key2){
 125   3              delay0(20);
 126   3               if(!key2){
 127   4                j1++;
 128   4                if(j1==59){
 129   5                j1=0;
 130   5                 }
 131   4                }
 132   3               while(!key2);
 133   3               } 
 134   2       k1 = DeToBCD(j1);
 135   2        write_clock(0x82,0+k1);
 136   2        write_clock(0x8e,0x80);
 137   2        }
 138   1         if(set == 3){//时
 139   2        write_clock(0x8e,0x00);
 140   2        if(!key2){
 141   3              delay0(20);
 142   3               if(!key2){
 143   4                j2++;
 144   4                if(j2==24){
 145   5                j2=1;
 146   5                 }
 147   4                }
 148   3               while(!key2);
 149   3               } 
 150   2        k2= DeToBCD(j2);
 151   2        write_clock(0x84,0+k2);
 152   2        write_clock(0x8e,0x80);
 153   2        }
 154   1         if(set == 4){//日
 155   2        write_clock(0x8e,0x00);
 156   2        if(!key2){
 157   3              delay0(20);
 158   3               if(!key2){
 159   4                j3++;
 160   4                if(j3==31){
 161   5                j3=1;
 162   5                 }
 163   4                }
 164   3               while(!key2);
 165   3               } 
 166   2       k3 = DeToBCD(j3);
 167   2        write_clock(0x86,0+k3);
 168   2        write_clock(0x8e,0x80);
 169   2        }
 170   1         if(set == 5){//月
 171   2        write_clock(0x8e,0x00);
 172   2        if(!key2){
 173   3              delay0(20);
 174   3               if(!key2){
 175   4                j4++;
 176   4                if(j4==12){
 177   5                j4=1;
 178   5                 }
 179   4                }
C51 COMPILER V7.20   1302                                                                  08/21/2007 08:13:24 PAGE 4   

 180   3               while(!key2);
 181   3               } 
 182   2       k4 = DeToBCD(j4);
 183   2        write_clock(0x88,0+k4);
 184   2        write_clock(0x8e,0x80);
 185   2        }
 186   1         if(set == 6){//周
 187   2        write_clock(0x8e,0x00);
 188   2        if(!key2){
 189   3              delay0(20);
 190   3               if(!key2){
 191   4                j5++;
 192   4                if(j5==7){
 193   5                j5=1;
 194   5                 }
 195   4                }
 196   3               while(!key2);
 197   3               } 
 198   2       k5 = DeToBCD(j5);
 199   2        write_clock(0x8a,0+k5);
 200   2        write_clock(0x8e,0x80);
 201   2        }
 202   1          if(set == 7){//年
 203   2        write_clock(0x8e,0x00);
 204   2        if(!key2){
 205   3              delay0(20);
 206   3               if(!key2){
 207   4                j6++;
 208   4                if(j6==99){
 209   5                j6=0;
 210   5                 }
 211   4                }
 212   3               while(!key2);
 213   3               } 
 214   2       k6 = DeToBCD(j6);
 215   2        write_clock(0x8c,0+k6);
 216   2        write_clock(0x8e,0x80);
 217   2        }
 218   1      } 
 219          
 220          


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