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

📄 d.lst

📁 此程序是使用ds12887始终芯片实现度时间的显示
💻 LST
字号:
C51 COMPILER V7.06   D                                                                     12/22/2008 21:01:20 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include <absacc.h>
   3          #include "intrins.h"
   4          #include <dis.h>
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          #define REG_A XBYTE[0x030A]
   8          #define REG_B XBYTE[0x030B]
   9          #define REG_C XBYTE[0x030C]
  10          #define REG_D XBYTE[0x030D]
  11          uchar tabwei1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  12          uchar xdata *DS12887=0x0300;
  13          uchar code PIAN_YI[6]={9,8,7,4,2,0 };/*-- 年、月、日、时、分、秒-- */
  14          uchar idata DS12887_time[6]={8,12,6,20,27,00};/*----- 06/5/29 14:03:10 -----*/
  15          uchar idata Time[20];/*-----提取时间各个位数据-----*/
  16          //uchar key;
  17          void delay()                    
  18          {
  19   1              uchar i,j,k;                                                                     
  20   1              for(i=2;i>0;i--)
  21   1              for(j=3;j>0;j--)
  22   1              for(k=60;k>0;k--);
  23   1      }
  24          
  25          
  26           void DS12887_Set0(void )               // 设置初始化时间
  27          
  28          {
  29   1      
  30   1              uchar idata i;
  31   1              
  32   1              REG_B=0x86;
  33   1              
  34   1              for(i=0;i<6;i++)
  35   1              
  36   1              {
  37   2              
  38   2                      *(DS12887+PIAN_YI[i])=DS12887_time[i];
  39   2                      
  40   2              }
  41   1              
  42   1      }
  43          
  44          void DS12887_Read(void)// 读取实时时间
  45          {
  46   1              uchar idata k,i;
  47   1              
  48   1              do
  49   1              
  50   1              { 
  51   2              
  52   2                      k=REG_A;
  53   2              
  54   2              }while(k&0x80);
  55   1              
C51 COMPILER V7.06   D                                                                     12/22/2008 21:01:20 PAGE 2   

  56   1              for(i=0;i<6;i++)
  57   1              
  58   1              {
  59   2              
  60   2                      DS12887_time[i]=*(DS12887+PIAN_YI[i]);
  61   2              
  62   2              }
  63   1      
  64   1      }       
  65          void set_p(uchar a,uchar j)
  66          {
  67   1              if(     *(DS12887+a)+1>=0&&*(DS12887+a)+1<j)
  68   1              {
  69   2                      *(DS12887+a)=*(DS12887+a)+1;
  70   2                      
  71   2              }
  72   1      }
  73          void set_m(uchar a,uchar j)
  74          {
  75   1              if(     *(DS12887+a)-1>=0&&*(DS12887+a)-1<j)
  76   1              {
  77   2                      *(DS12887+a)=*(DS12887+a)-1;
  78   2                      
  79   2              }
  80   1      }
  81          
  82          void read_timebit()
  83          {
  84   1                      DS12887_Read();
  85   1                      
  86   1                      Time[0]=DS12887_time[0]/10;//年十位0~9
  87   1                      
  88   1                      Time[1]=DS12887_time[0]%10;//年个位0~9
  89   1                      
  90   1                      Time[2]=DS12887_time[1]/10;//月十位0~1
  91   1                      
  92   1                      Time[3]=DS12887_time[1]%10;//月个位0~9
  93   1                      
  94   1                      Time[4]=DS12887_time[2]/10;//日十位0~3
  95   1                      
  96   1                      Time[5]=DS12887_time[2]%10;//日个位0~9
  97   1                      
  98   1                      Time[6]=DS12887_time[3]/10;//时十位0~2
  99   1                      
 100   1                      Time[7]=DS12887_time[3]%10;//时个位0~9
 101   1                      
 102   1                      Time[8]=DS12887_time[4]/10;//分十位0~5
 103   1                      
 104   1                      Time[9]=DS12887_time[4]%10;//分个位0~9
 105   1                      
 106   1                      Time[10]=DS12887_time[5]/10;//秒十位0~5
 107   1                      
 108   1                      Time[11]=DS12887_time[5]%10;//秒个位0~9
 109   1      }
 110          void dis_play()
 111          {
 112   1        read_timebit();
 113   1              mydisplay(0,Time[6]);
 114   1              delay();
 115   1              mydisplay(1,Time[7]);
 116   1              delay();
 117   1              mydisplay(2,10);
C51 COMPILER V7.06   D                                                                     12/22/2008 21:01:20 PAGE 3   

 118   1              delay();
 119   1              mydisplay(4,Time[9]);
 120   1              delay();
 121   1              mydisplay(3,Time[8]);
 122   1              delay();
 123   1              mydisplay(5,10);
 124   1              delay();
 125   1              mydisplay(7,Time[11]);
 126   1              delay();
 127   1              mydisplay(6,Time[10]);
 128   1              delay();
 129   1      }
 130          
 131          
 132          uint scankey()
 133          {
 134   1        uchar i;
 135   1        tabwei1[i];
*** WARNING C275 IN LINE 135 OF D.C: expression with possibly no effect
 136   1        //sendshur(10);
 137   1        //sendshul(10);
 138   1        if((readkey==0)&&(tabwei1[i]==0x01))
 139   1              {
 140   2                
 141   2                  return 1;
 142   2              }
 143   1        if((readkey==0)&&(tabwei1[i]==0x02))
 144   1              {
 145   2                  return 2;
 146   2              }  
 147   1        i++;
 148   1       if(i==8)
 149   1          i=0;
 150   1      }
 151          
 152          void shanshuo_dis1()
 153          {
 154   1         read_timebit();
 155   1              mydisplay(0,11);
 156   1          delay();
 157   1              mydisplay(1,11);
 158   1              delay();
 159   1              mydisplay(2,10);
 160   1              delay();
 161   1              mydisplay(4,Time[9]);
 162   1              delay();
 163   1              mydisplay(3,Time[8]);
 164   1              delay();
 165   1              mydisplay(5,10);
 166   1              delay();
 167   1              mydisplay(7,Time[11]);
 168   1              delay();
 169   1              mydisplay(6,Time[10]);
 170   1              delay();
 171   1      }
 172          void shanshuo_dis2()
 173          {
 174   1         read_timebit();
 175   1          mydisplay(0,Time[6]);
 176   1              delay();
 177   1              mydisplay(1,Time[7]);
 178   1              delay();
C51 COMPILER V7.06   D                                                                     12/22/2008 21:01:20 PAGE 4   

 179   1              delay();
 180   1              mydisplay(2,10);
 181   1              delay();
 182   1              mydisplay(4,11);
 183   1              delay();
 184   1              mydisplay(3,11);
 185   1              delay();
 186   1              mydisplay(5,10);
 187   1              delay();
 188   1              mydisplay(7,Time[11]);
 189   1              delay();
 190   1              mydisplay(6,Time[10]);
 191   1              delay();
 192   1      }
 193          void shanshuo1()
 194          {
 195   1         uchar j,i,t,n;
 196   1        while(t==0)
 197   1      {
 198   2         for(i=60;i>0;i--)
 199   2           {
 200   3              dis_play(); 
 201   3           }
 202   2         for(j=60;j>0;j--)
 203   2           {
 204   3               shanshuo_dis1();
 205   3           }
 206   2          n=scankey();
 207   2          if(n!=0)
 208   2            t=2;
 209   2      }
 210   1      }
 211          void shanshuo2()
 212          {
 213   1         uchar j,i,t,n;
 214   1        while(t==0)
 215   1      {
 216   2         for(i=60;i>0;i--)
 217   2           {
 218   3              dis_play(); 
 219   3           }
 220   2         for(j=60;j>0;j--)
 221   2           {
 222   3               shanshuo_dis2();
 223   3           }
 224   2         n=scankey();
 225   2          if(n!=0)
 226   2            t=2;
 227   2      }
 228   1      }
 229          void main (void)
 230           {
 231   1          uchar k,key;
 232   1                      REG_A=0x20;
 233   1                      REG_B=0x26;
 234   1                      while(1)
 235   1                      {
 236   2                  dis_play();
 237   2                    key=scankey();
 238   2                if(key==2)
 239   2                   {
 240   3                    k++;
C51 COMPILER V7.06   D                                                                     12/22/2008 21:01:20 PAGE 5   

 241   3                    if(k==1)
 242   3                    shanshuo1();
 243   3                    else 
 244   3                     shanshuo2();
 245   3                   } 
 246   2               
 247   2              }
 248   1              
 249   1                      
 250   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    761    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       8
   IDATA SIZE       =     26       3
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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