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

📄 clock.lst

📁 动态显示的万年历
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   CLOCK                                                                 02/25/2008 16:04:37 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #define u8 unsigned char
   3          #define u16 unsigned int
   4          sbit mode=P3^0;
   5          sbit up=P3^1;
   6          sbit down=P3^2;
   7          u8 a=0x00,flag;
   8          char seconddi,secondgao,minutedi,minutegao,hourdi,hourgao,daydi,daygao,
   9                  monthdi,monthgao,yeardi,yeardiyi,yeardier,yeargao;
  10          u16 tick;
  11          u8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  12          u8 code dayofmonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
  13          
  14          
  15          typedef struct  {
  16                                                  char hour;
  17                                                  char minute;
  18                                                  char second;                            
  19                                          }time;
  20          
  21          typedef struct  {
  22                                                  int year;
  23                                                  char month;
  24                                                  char day;
  25                                          }date;
  26          date today={2008,02,25};
  27          time now={23,59,00};
  28          
  29          
  30          
  31          void delay(u16 z)
  32          {
  33   1              u16 x,y;
  34   1              for(x=z;x>0;x--)
  35   1                      for(y=110;y>0;y--);
  36   1      }
  37          
  38          void display(u16 year,u8 month,u8 day,u8 hour,u8 minute,u8 second)
  39          {
  40   1              seconddi=second%10;
  41   1              secondgao=second/10;
  42   1              minutedi=minute%10;
  43   1              minutegao=minute/10;
  44   1              hourdi=hour%10;
  45   1              hourgao=hour/10;
  46   1              daydi=day%10;
  47   1              daygao=day/10;
  48   1              monthdi=month%10;
  49   1              monthgao=month/10;
  50   1              yeardi=year%10;
  51   1              yeardiyi=year/10%10;
  52   1              yeardier=year/100%10;
  53   1              yeargao=year/1000;
  54   1      
  55   1              if(flag==1)
C51 COMPILER V7.20   CLOCK                                                                 02/25/2008 16:04:37 PAGE 2   

  56   1              {
  57   2                      P0=table[seconddi];
  58   2                      P1=0x04&a;
  59   2                      delay(1);
  60   2                      P0=0xff;//每次送完段码后如果不关闭显示,就不能正常的仿真(很重要)
  61   2                      P0=table[secondgao];
  62   2                      P1=0x08&a;
  63   2                      delay(1);
  64   2                      P0=0xff;
  65   2              }
  66   1              else
  67   1              {
  68   2                      P0=table[seconddi];
  69   2                      P1=0x04;
  70   2                      delay(1);
  71   2                      P0=0xff;//每次送完段码后如果不关闭显示,就不能正常的仿真(很重要)
  72   2                      P0=table[secondgao];
  73   2                      P1=0x08;
  74   2                      delay(1);
  75   2                      P0=0xff;
  76   2              }
  77   1              if(flag==2)
  78   1              {
  79   2                      P0=table[minutedi];
  80   2                      P1=0x10&a;
  81   2                      delay(1);
  82   2                      P0=0xff;
  83   2                      P0=table[minutegao];
  84   2                      P1=0x20&a;
  85   2                      delay(1);
  86   2                      P0=0xff;
  87   2              }
  88   1              else
  89   1              {
  90   2                      P0=table[minutedi];
  91   2                      P1=0x10;
  92   2                      delay(1);
  93   2                      P0=0xff;
  94   2                      P0=table[minutegao];
  95   2                      P1=0x20;
  96   2                      delay(1);
  97   2                      P0=0xff;
  98   2              }
  99   1              if(flag==3)
 100   1              {
 101   2                      P0=table[hourdi];
 102   2                      P1=0x40&a;
 103   2                      delay(1);
 104   2                      P0=0xff;
 105   2                      P0=table[hourgao];
 106   2                      P1=0x80&a;
 107   2                      delay(1);
 108   2                      P1=0x00;//必须加上这一句否则时显示8
 109   2                      P0=0xff;
 110   2              }
 111   1              else
 112   1              {
 113   2                      P0=table[hourdi];
 114   2                      P1=0x40;
 115   2                      delay(1);
 116   2                      P0=0xff;
 117   2                      P0=table[hourgao];
C51 COMPILER V7.20   CLOCK                                                                 02/25/2008 16:04:37 PAGE 3   

 118   2                      P1=0x80;
 119   2                      delay(1);
 120   2                      P1=0x00;//必须加上这一句否则时显示8
 121   2                      P0=0xff;
 122   2              }
 123   1              if(flag==4)
 124   1              {
 125   2                      P0=table[daydi];//日低
 126   2                      P2=0x01&a;
 127   2                      delay(1);
 128   2                      P0=0xff;
 129   2                      P0=table[daygao];//日高
 130   2                      P2=0x02&a;
 131   2                      delay(1);
 132   2                      P0=0xff;
 133   2              }
 134   1              else
 135   1              {
 136   2                      P0=table[daydi];//日低
 137   2                      P2=0x01;
 138   2                      delay(1);
 139   2                      P0=0xff;
 140   2                      P0=table[daygao];//日高
 141   2                      P2=0x02;
 142   2                      delay(1);
 143   2                      P0=0xff;
 144   2              }
 145   1              if(flag==5)
 146   1              {
 147   2                      P0=table[monthdi];//月低
 148   2                      P2=0x04&a;
 149   2                      delay(1);
 150   2                      P0=0xff;
 151   2                      P0=table[monthgao];//月高
 152   2                      P2=0x08&a;
 153   2                      delay(1);
 154   2                      P0=0xff;
 155   2              }
 156   1              else
 157   1              {
 158   2                      P0=table[monthdi];//月低
 159   2                      P2=0x04;
 160   2                      delay(1);
 161   2                      P0=0xff;
 162   2                      P0=table[monthgao];//月高
 163   2                      P2=0x08;
 164   2                      delay(1);
 165   2                      P0=0xff;
 166   2              }
 167   1              if(flag==6)
 168   1              {
 169   2                      P0=table[yeardi];//年
 170   2                      P2=0x10&a;
 171   2                      delay(1);
 172   2                      P0=0xff;
 173   2                      P0=table[yeardiyi];
 174   2                      P2=0x20&a;
 175   2                      delay(1);
 176   2                      P0=0xff;
 177   2                      P0=table[yeardier];
 178   2                      P2=0x40&a;
 179   2                      delay(1);
C51 COMPILER V7.20   CLOCK                                                                 02/25/2008 16:04:37 PAGE 4   

 180   2                      P0=0xff;
 181   2                      P0=table[yeargao];
 182   2                      P2=0x80&a;
 183   2                      delay(1);
 184   2                      P2=0x00;//必须加上这一句否则年最高位显示8
 185   2                      P0=0xff;
 186   2              }
 187   1              else
 188   1              {
 189   2                      P0=table[yeardi];//年
 190   2                      P2=0x10;
 191   2                      delay(1);
 192   2                      P0=0xff;
 193   2                      P0=table[yeardiyi];
 194   2                      P2=0x20;
 195   2                      delay(1);
 196   2                      P0=0xff;
 197   2                      P0=table[yeardier];
 198   2                      P2=0x40;
 199   2                      delay(1);
 200   2                      P0=0xff;
 201   2                      P0=table[yeargao];
 202   2                      P2=0x80;
 203   2                      delay(1);
 204   2                      P2=0x00;//必须加上这一句否则年最高位显示8
 205   2                      P0=0xff;
 206   2              }
 207   1      }
 208          
 209          char monthofday(char year,char month)
 210          {
 211   1              if(month==2&&year%4==0)
 212   1              {
 213   2                      return(29);
 214   2              }
 215   1              else
 216   1              {
 217   2                      return(dayofmonth[month-1]);
 218   2              }
 219   1      }
 220          void timer0()interrupt 1
 221          {
 222   1              TMOD=0x01;
 223   1              TH0=(65536-20000)/256;
 224   1              TL0=(65536-20000)%256;
 225   1              TR0=1;
 226   1              tick++;
 227   1              display(today.year,today.month,today.day,now.hour,now.minute,now.second);
 228   1              if(tick==50)

⌨️ 快捷键说明

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