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

📄 display.lst

📁 完全正确的ds12c887万年历程序
💻 LST
字号:
C51 COMPILER V7.09   DISPLAY                                                               05/07/2007 16:00:46 PAGE 1   


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

line level    source

   1          /***********************************
   2          *********包含库函数*****************
   3          ***********************************/
   4          #include <reg51.h>
   5          #include <stdio.h>
   6          #include <absacc.h>
   7          #include <math.h>
   8          #include <string.h>
   9          #include <ctype.h>
  10          #include <stdlib.h>
  11          
  12          /************************************
  13          ********宏定义***********************
  14          ***********************************/
  15          #define uchar unsigned char
  16          #define uint  unsigned int
  17          /***********************************
  18          ********P2^4-->/CS******************
  19          ***********************************/
  20          #define Adr_second      XBYTE[0xef00]
  21          #define Adr_second_alrm XBYTE[0xef01]
  22          #define Adr_min         XBYTE[0xef02]
  23          #define Adr_min_alrm    XBYTE[0xef03]
  24          #define Adr_hour        XBYTE[0xef04]
  25          #define Adr_hour_alrm   XBYTE[0xef05]
  26          #define Adr_weekday     XBYTE[0xef06]
  27          #define Adr_day         XBYTE[0xef07]
  28          #define Adr_month       XBYTE[0xef08]
  29          #define Adr_year        XBYTE[0xef09]
  30          #define Adr_A           XBYTE[0xef0a]
  31          #define Adr_B           XBYTE[0xef0b]
  32          #define Adr_C           XBYTE[0xef0c]
  33          #define Adr_D           XBYTE[0xef0d]
  34          #define Segment XBYTE[0X7FFF]   //显示段地址
  35          #define Discode XBYTE[0XBFFF]   //显示位地址
  36          
  37          /***************************************
  38          ************变量定义********************
  39          ****************************************/
  40          uchar second,min,hour,day,month,year,weekday;
  41          uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};          //显示段码
  42          
  43          
  44          /*************************************
  45          **********设置时间********************
  46          *************************************/
  47          void setup_DS12887()
  48          {
  49   1         uchar i;
  50   1         i=Adr_D;//使片内寄存器和RAM数据有效
  51   1         Adr_A=0x70;//UIP=0;
  52   1         Adr_B=0xa2;  //SET=1-->禁止更新,24/12=1-->24小时进制
  53   1         Adr_second=second;
  54   1         Adr_second_alrm=0xff;
  55   1         Adr_min=min;
C51 COMPILER V7.09   DISPLAY                                                               05/07/2007 16:00:46 PAGE 2   

  56   1         Adr_min_alrm=0xff;
  57   1         Adr_hour=hour;
  58   1         Adr_hour_alrm=0xff;
  59   1         Adr_weekday=weekday;
  60   1         Adr_day=day;
  61   1         Adr_month=month;
  62   1         Adr_year=year;
  63   1         Adr_B=0x22;
  64   1         Adr_A=0x20;
  65   1         i=Adr_C;   //消除已有的中断标志
  66   1         }
  67          /***************************************
  68          *********读取时间***********************
  69          ***************************************/
  70          void get_time_DS12887(void)
  71          {
  72   1        uchar i;
  73   1         do(i=Adr_A);
  74   1             while((i&0x80)==0x80);
  75   1                 second=Adr_second;
  76   1             min=Adr_min;
  77   1             hour=Adr_hour;
  78   1             weekday=Adr_weekday;
  79   1             day=Adr_day;
  80   1             month=Adr_month;
  81   1             year=Adr_year;
  82   1      }
  83          
  84          /*************************************
  85          ********延时子程序,12MHZ*************
  86          *************************************/
  87          void delay(uchar k)                 //延时1MS
  88          {  uchar i;
  89   1         while(k--)
  90   1         {    for(i=0;i<125;i++)
  91   2                {;}
  92   2         }
  93   1      }
  94          /***********************************
  95          ********显示子程序0******************
  96          ***********************************/
  97          void display0(void)        //显示
  98          {         Discode=0xfe;
  99   1                Segment=duanma[(hour/10)|0x0f];
 100   1                delay(5);
 101   1      
 102   1                Discode=0xfd;
 103   1                Segment=duanma[(hour%10)|0x0f];
 104   1                delay(5);
 105   1      
 106   1                Discode=0xfb;
 107   1                Segment=duanma[(min/10)|0x0f];
 108   1                delay(5);
 109   1      
 110   1                Discode=0xf7;
 111   1                Segment=duanma[(min%10)|0x0f];
 112   1                delay(5);
 113   1                
 114   1                Discode=0xef;
 115   1                Segment=duanma[(second/10)|0x0f];
 116   1                delay(5);
 117   1      
C51 COMPILER V7.09   DISPLAY                                                               05/07/2007 16:00:46 PAGE 3   

 118   1                Discode=0xdf;
 119   1                Segment=duanma[(second%10)|0x0f];
 120   1                delay(5);
 121   1                }
 122          
 123          /***********************************
 124          ********显示子程序1******************
 125          ***********************************/
 126          void display1(void)        //显示
 127          {         Discode=0xfe;
 128   1                Segment=duanma[(year/10)|0x0f];
 129   1                delay(5);
 130   1      
 131   1                Discode=0xfd;
 132   1                Segment=duanma[(year%10)|0x0f];
 133   1                delay(5);
 134   1      
 135   1                Discode=0xfb;
 136   1                Segment=duanma[(month/10)|0x0f];
 137   1                delay(5);
 138   1      
 139   1                Discode=0xf7;
 140   1                Segment=duanma[(month%10)|0x0f];
 141   1                delay(5);
 142   1                
 143   1                Discode=0xef;
 144   1                Segment=duanma[(day/10)|0x0f];
 145   1                delay(5);
 146   1      
 147   1                Discode=0xdf;
 148   1                Segment=duanma[(day%10)|0x0f];
 149   1                delay(5);
 150   1                }
 151          
 152          /***********************************
 153          **********DS12887初始化*************
 154          ***********************************/
 155          void start_DS12887(void)
 156          {
 157   1         uchar i;
 158   1         i=Adr_D;//使片内寄存器和RAM数据有效
 159   1         Adr_A=0x70;//UIP=0;
 160   1         Adr_B=0xa2;  //SET=1-->禁止更新,24/12=1-->24小时进制
 161   1         Adr_second_alrm=0xff;
 162   1         Adr_min_alrm=0xff;
 163   1         Adr_hour_alrm=0xff;
 164   1         Adr_B=0x22;
 165   1         Adr_A=0x20;
 166   1         i=Adr_C;   //消除已有的中断标志
 167   1      } 
 168          
 169          
 170          void mian(void)
 171          { 
 172   1          delay(500);
 173   1          start_DS12887();
 174   1          while(1)
 175   1                 {
 176   2                   get_time_DS12887();
 177   2                       display0();
 178   2                 }
 179   1      } 
C51 COMPILER V7.09   DISPLAY                                                               05/07/2007 16:00:46 PAGE 4   

 180          
 181          
 182          
 183          
 184          
 185          
 186          
 187          
 188          
 189          


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