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

📄 ds12887.lst

📁 非常好的程序
💻 LST
字号:
C51 COMPILER V7.06   DS12887                                                               03/17/2021 18:15:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS12887
OBJECT MODULE PLACED IN ds12887.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ds12887.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <REG51.H>
   2          #include <ABSACC.H>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          //============================
   6          #define C8155 XBYTE[0x7000]
   7          #define PA XBYTE[0x7001]
   8          #define PB XBYTE[0x7002]
   9          #define PC XBYTE[0x7003]
  10          //============================
  11          #define sec XBYTE[0x8000]
  12          #define min XBYTE[0x8002]
  13          #define hou XBYTE[0x8004]
  14          #define week XBYTE[0x8006]
  15          #define day XBYTE[0x8007]
  16          #define mon XBYTE[0x8008]
  17          #define year XBYTE[0x8009]
  18          #define cent XBYTE[0x8032]
  19          #define DS12887A XBYTE[0x800a]
  20          #define DS12887B XBYTE[0x800b]
  21          #define DS12887C XBYTE[0x800c]
  22          //===============================
  23          sbit set_inc=P1^0;
  24          sbit set_dec=P1^1;
  25          sbit inc=P1^2;
  26          sbit dec=P1^3;
  27          uchar disbit;
  28          bit flag;
  29          uchar SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,
  30                          0x6d,0x7d,0x07,0x7f,0x6f};
  31          uchar code act_PB[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  32          uchar code act_PC[5]={0xfe,0xfd,0xfb,0xf7,0xef};
  33          char ms=0;
  34          char data ram_year,ram_mon,ram_day,ram_week,ram_hou,ram_min,ram_sec;
  35          void scan_key(void);
  36          void delay(uint k);
  37          void wr_time(void);
  38          void rd_time(void);
  39          /******************************/
  40          void init_timer0(void)
  41          {
  42   1      TH0=-(2000/256);
  43   1      TL0=-(2000%256);
  44   1      TR0=1;
  45   1      }
  46          
  47          //***********************
  48          void init(void)
  49          {       init_timer0();          
  50   1              EA=1;ET0=1;
  51   1              C8155=0x0f; 
  52   1              DS12887A=0x20;
  53   1      }
  54          
  55          
C51 COMPILER V7.06   DS12887                                                               03/17/2021 18:15:37 PAGE 2   

  56          /**********************************/
  57          void time_dis(uchar disbit)
  58          {uchar y_week;
  59   1      switch(disbit)
  60   1      {
  61   2      case 0:{PA=SEG7[ram_sec%10];}break;
  62   2      case 1:{PA=SEG7[ram_sec/10];}break;
  63   2      case 2:{PA=SEG7[ram_min%10];}break;
  64   2      case 3:{PA=SEG7[ram_min/10];}break;
  65   2      case 4:{PA=SEG7[ram_hou%10];}break;
  66   2      case 5:{PA=SEG7[ram_hou/10];}break;
  67   2      case 6:{if(ram_week==1)y_week=9;
  68   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
  69   2      case 7:{PA=SEG7[ram_day%10];}break; 
  70   2      case 8:{PA=SEG7[ram_day/10];}break;
  71   2      case 9:{PA=SEG7[ram_mon%10];}break;
  72   2      case 10:{PA=SEG7[ram_mon/10];}break;
  73   2      case 11:{PA=SEG7[ram_year%10];}break;
  74   2      case 12:{PA=SEG7[ram_year/10];}break;
  75   2      default:break;
  76   2      }
  77   1      }
  78          /****************************************/
  79          void min_dis(uchar disbit)
  80          {uchar y_week;
  81   1      switch(disbit)
  82   1      {
  83   2      case 0:{PA=SEG7[ram_sec%10];}break;
  84   2      case 1:{PA=SEG7[ram_sec/10];}break;
  85   2      case 2:{PA=SEG7[ram_min%10]&0x7f;}break;
  86   2      case 3:{PA=SEG7[ram_min/10]&0x7f;}break;
  87   2      case 4:{PA=SEG7[ram_hou%10];}break;
  88   2      case 5:{PA=SEG7[ram_hou/10];}break;
  89   2      case 6:{if(ram_week==1)y_week=9;
  90   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
  91   2      case 7:{PA=SEG7[ram_day%10];}break; 
  92   2      case 8:{PA=SEG7[ram_day/10];}break;
  93   2      case 9:{PA=SEG7[ram_mon%10];}break;
  94   2      case 10:{PA=SEG7[ram_mon/10];}break;
  95   2      case 11:{PA=SEG7[ram_year%10];}break;
  96   2      case 12:{PA=SEG7[ram_year/10];}break;
  97   2      default:break;
  98   2      }
  99   1      }
 100          /***************************************/
 101          void hou_dis(uchar disbit)
 102          {uchar y_week;
 103   1      switch(disbit)
 104   1      {
 105   2      case 0:{PA=SEG7[ram_sec%10];}break;
 106   2      case 1:{PA=SEG7[ram_sec/10];}break;
 107   2      case 2:{PA=SEG7[ram_min%10];}break;
 108   2      case 3:{PA=SEG7[ram_min/10];}break;
 109   2      case 4:{PA=SEG7[ram_hou%10]&0x7f;}break;
 110   2      case 5:{PA=SEG7[ram_hou/10]&0x7f;}break;
 111   2      case 6:{if(ram_week==1)y_week=9;
 112   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
 113   2      case 7:{PA=SEG7[ram_day%10];}break; 
 114   2      case 8:{PA=SEG7[ram_day/10];}break;
 115   2      case 9:{PA=SEG7[ram_mon%10];}break;
 116   2      case 10:{PA=SEG7[ram_mon/10];}break;
 117   2      case 11:{PA=SEG7[ram_year%10];}break;
C51 COMPILER V7.06   DS12887                                                               03/17/2021 18:15:37 PAGE 3   

 118   2      case 12:{PA=SEG7[ram_year/10];}break;
 119   2      default:break;
 120   2      }
 121   1      }
 122          /***************************************/
 123          void week_dis(uchar disbit)
 124          {uchar y_week;
 125   1      switch(disbit)
 126   1      {
 127   2      case 0:{PA=SEG7[ram_sec%10];}break;
 128   2      case 1:{PA=SEG7[ram_sec/10];}break;
 129   2      case 2:{PA=SEG7[ram_min%10];}break;
 130   2      case 3:{PA=SEG7[ram_min/10];}break;
 131   2      case 4:{PA=SEG7[ram_hou%10];}break;
 132   2      case 5:{PA=SEG7[ram_hou/10];}break;
 133   2      case 6:{if(ram_week==1)y_week=9;
 134   3                      else y_week=ram_week;PA=SEG7[y_week-1]&0x7f;}break; 
 135   2      case 7:{PA=SEG7[ram_day%10];}break; 
 136   2      case 8:{PA=SEG7[ram_day/10];}break;
 137   2      case 9:{PA=SEG7[ram_mon%10];}break;
 138   2      case 10:{PA=SEG7[ram_mon/10];}break;
 139   2      case 11:{PA=SEG7[ram_year%10];}break;
 140   2      case 12:{PA=SEG7[ram_year/10];}break;
 141   2      default:break;
 142   2      }
 143   1      }
 144          /**************************************/
 145          void day_dis(uchar disbit)
 146          {uchar y_week;
 147   1      switch(disbit)
 148   1      {
 149   2      case 0:{PA=SEG7[ram_sec%10];}break;
 150   2      case 1:{PA=SEG7[ram_sec/10];}break;
 151   2      case 2:{PA=SEG7[ram_min%10];}break;
 152   2      case 3:{PA=SEG7[ram_min/10];}break;
 153   2      case 4:{PA=SEG7[ram_hou%10];}break;
 154   2      case 5:{PA=SEG7[ram_hou/10];}break;
 155   2      case 6:{if(ram_week==1)y_week=9;
 156   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
 157   2      case 7:{PA=SEG7[ram_day%10]&0x7f;}break; 
 158   2      case 8:{PA=SEG7[ram_day/10]&0x7f;}break;
 159   2      case 9:{PA=SEG7[ram_mon%10];}break;
 160   2      case 10:{PA=SEG7[ram_mon/10];}break;
 161   2      case 11:{PA=SEG7[ram_year%10];}break;
 162   2      case 12:{PA=SEG7[ram_year/10];}break;
 163   2      default:break;
 164   2      }
 165   1      }
 166          /********************************************/
 167          void mon_dis(uchar disbit)
 168          {uchar y_week;
 169   1      switch(disbit)
 170   1      {
 171   2      case 0:{PA=SEG7[ram_sec%10];}break;
 172   2      case 1:{PA=SEG7[ram_sec/10];}break;
 173   2      case 2:{PA=SEG7[ram_min%10];}break;
 174   2      case 3:{PA=SEG7[ram_min/10];}break;
 175   2      case 4:{PA=SEG7[ram_hou%10];}break;
 176   2      case 5:{PA=SEG7[ram_hou/10];}break;
 177   2      case 6:{if(ram_week==1)y_week=9;
 178   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
 179   2      case 7:{PA=SEG7[ram_day%10];}break; 
C51 COMPILER V7.06   DS12887                                                               03/17/2021 18:15:37 PAGE 4   

 180   2      case 8:{PA=SEG7[ram_day/10];}break;
 181   2      case 9:{PA=SEG7[ram_mon%10]&0x7f;}break;
 182   2      case 10:{PA=SEG7[ram_mon/10]&0x7f;}break;
 183   2      case 11:{PA=SEG7[ram_year%10];}break;
 184   2      case 12:{PA=SEG7[ram_year/10];}break;
 185   2      default:break;
 186   2      }
 187   1      }
 188          /****************************************/
 189          void year_dis(uchar disbit)
 190          {uchar y_week;
 191   1      switch(disbit)
 192   1      {
 193   2      case 0:{PA=SEG7[ram_sec%10];}break;
 194   2      case 1:{PA=SEG7[ram_sec/10];}break;
 195   2      case 2:{PA=SEG7[ram_min%10];}break;
 196   2      case 3:{PA=SEG7[ram_min/10];}break;
 197   2      case 4:{PA=SEG7[ram_hou%10];}break;
 198   2      case 5:{PA=SEG7[ram_hou/10];}break;
 199   2      case 6:{if(ram_week==1)y_week=9;
 200   3                      else y_week=ram_week;PA=SEG7[y_week-1];}break; 
 201   2      case 7:{PA=SEG7[ram_day%10];}break; 
 202   2      case 8:{PA=SEG7[ram_day/10];}break;
 203   2      case 9:{PA=SEG7[ram_mon%10];}break;
 204   2      case 10:{PA=SEG7[ram_mon/10];}break;
 205   2      case 11:{PA=SEG7[ram_year%10]&0x7f;}break;
 206   2      case 12:{PA=SEG7[ram_year/10]&0x7f;}break;
 207   2      default:break;
 208   2      }
 209   1      }
 210          /****************************************/
 211          void time0(void) interrupt 1 using 1
 212          {static uchar disbit;
 213   1              TH0=-(2000/256);
 214   1              TL0=-(2000%256);
 215   1              PB=0xff;PC=0xff;
 216   1      switch(ms)
 217   1      {
 218   2      case 0:{time_dis(disbit);}break;
 219   2      case 1:{min_dis(disbit);}break;
 220   2      case 2:{hou_dis(disbit);}break;
 221   2      case 3:{week_dis(disbit);}break;
 222   2      case 4:{day_dis(disbit);}break; 
 223   2      case 5:{mon_dis(disbit);}break;
 224   2      case 6:{year_dis(disbit);}break;
 225   2      default:break;
 226   2      }
 227   1      disbit++;
 228   1      if(disbit>12)disbit=0;
 229   1      if(disbit<8){PB=act_PB[disbit];PC=0xff;}
 230   1      else {PB=0xff;PC=act_PC[disbit-8];}
 231   1      }
 232          /***********************************/
 233          void main(void)
 234          {
 235   1      init();
 236   1      rd_time();
 237   1      while(1)
 238   1      {
 239   2      scan_key();
 240   2      if(ms==0){
 241   3                      if(flag){wr_time();flag=0;}
C51 COMPILER V7.06   DS12887                                                               03/17/2021 18:15:37 PAGE 5   

 242   3                      else rd_time();
 243   3                      }
 244   2      }
 245   1      }
 246          /*****************************************/
 247          void wr_time(void)
 248          {
 249   1              DS12887B=0x86; 
 250   1              year=ram_year;mon=ram_mon;day=ram_day;
 251   1              week=ram_week;hou=ram_hou;min=ram_min;
 252   1              DS12887B=0x06; 
 253   1      }
 254          /*******************************************/
 255          void rd_time(void)
 256          {
 257   1      uchar data temp,x;
 258   1      do{temp=DS12887A;x=temp|0x7f;}while(x==0xff);
 259   1              ram_year=year;ram_mon=mon;ram_day=day;
 260   1              ram_week=week;ram_hou=hou;ram_min=min;ram_sec=sec;
 261   1      }
 262          /*****************************************/
 263          void scan_key(void)
 264          {
 265   1      if(!set_inc){ms++;delay(200);if(ms>6)ms=0;}
 266   1      if(!set_dec){ms--;delay(200);if(ms<0)ms=6;}
 267   1      if(ms==1){flag=1;if(!inc){ram_min++;if(ram_min>59)ram_min=59;delay(200);}
 268   2                      if(!dec){ram_min--;if(ram_min<1)ram_min=1;delay(200);}  }
 269   1      if(ms==2){      if(!inc){ram_hou++;if(ram_hou>23)ram_hou=23;delay(200);}
 270   2                      if(!dec){ram_hou--;if(ram_hou<0)ram_hou=0;delay(200);}  }
 271   1      if(ms==3){      if(!inc){ram_week++;if(ram_week>7)ram_week=7;delay(200);}
 272   2                      if(!dec){ram_week--;if(ram_week<1)ram_week=1;delay(200);} }
 273   1      if(ms==4){      if(!inc){ram_day++;if(ram_day>31)ram_day=31;delay(200);}
 274   2                      if(!dec){ram_day--;if(ram_day<1)ram_day=1;delay(200);}  }
 275   1      if(ms==5){      if(!inc){ram_mon++;if(ram_mon>12)ram_mon=12;delay(200);}
 276   2                      if(!dec){ram_mon--;if(ram_mon<1)ram_mon=1;delay(200);}  }
 277   1      if(ms==6){flag=1;if(!inc){ram_year++;if(ram_year>99)ram_year=99;delay(200);}
 278   2                      if(!dec){ram_year--;if(ram_year<0)ram_day=0;delay(200);} }
 279   1      }
 280          /********************************************************/
 281          void delay(uint k)
 282          {
 283   1      uint i,j;
 284   1      for(i=0;i<k;i++){
 285   2      for(j=0;j<60;j++)
 286   2      {;}}
 287   1      }
 288          /*****************end********************/
 289          
 290          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2087    ----
   CONSTANT SIZE    =     13    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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