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

📄 ds12c887.lst

📁 DS12C887适时时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #include"define.h"
   3          
   4          extern void  delay(uint z);
   5          //extern void write_com(uchar com);
   6          //extern void write_date(uchar date);
   7          extern void tempchange();
   8          extern uint get_temp();
   9          /*void delay(uint z)
  10          {
  11                  uint x,y;
  12                  for(x=z;x>0;x--)
  13                          for(y=110;y>0;y--);
  14          }*/
  15          //写指令
  16          void write_com(uchar com)
  17          {
  18   1              rs=0;
  19   1              lcden=0;
  20   1              P0=com;
  21   1              delay(3);
  22   1              lcden=1;//高脉冲
  23   1              delay(3);
  24   1              lcden=0;        
  25   1      }
  26          //写数据
  27          void write_date(uchar date)
  28          {
  29   1              rs=1;
  30   1              lcden=0;
  31   1              P0=date;
  32   1              delay(3);
  33   1              lcden=1;
  34   1              delay(3);
  35   1              lcden=0;        
  36   1      }
  37          void di()
  38          {
  39   1              beep=0;
  40   1              delay(100);
  41   1              beep=1;
  42   1      }
  43          void init()
  44          {
  45   1              uchar num;
  46   1              EA=1;
  47   1              EX1=1;
  48   1              IT1=1;
  49   1              flag1=0;
  50   1      //flag=0;
  51   1              s1num=0;
  52   1              week=1;
  53   1              dula=0;
  54   1              wela=0;
  55   1              lcden=0;
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 2   

  56   1              rd=0;
  57   1      //      write_ds(0x0A,0x20);
  58   1      //      write_ds(0x0B,0x26);
  59   1      //      read_ds(0x0c);
  60   1      //      set_time();
  61   1              set_alarm(15,12,8);
  62   1              write_com(0x38);
  63   1              write_com(0x0c);//开显示,光标不显示,光标不闪烁
  64   1              write_com(0x06);
  65   1              write_com(0x01);
  66   1              write_com(0x80);
  67   1              for(num=0;num<15;num++)
  68   1                      {
  69   2                              write_date(table[num]);
  70   2                              delay(1);
  71   2                      }
  72   1              write_com(0x80+0x40);
  73   1              for(num=0;num<15;num++)
  74   1                      {
  75   2                              write_date(table1[num]);
  76   2                              delay(1);
  77   2                      }
  78   1      }
  79          //温度显示子函数
  80          void wendu(uchar temp)
  81          {
  82   1              uchar bai,shi,ge;
  83   1              bai=temp/100;
  84   1              shi=temp%100/10;
  85   1              ge=temp%10;
  86   1              write_com(0x80+0x40+11);
  87   1              write_date(0x30+bai);
  88   1              write_date(0x30+shi);
  89   1              write_date(0x2e);
  90   1              write_date(0x30+ge);
  91   1              write_date(0x63);
  92   1      }
  93          //时分秒刷新子函数
  94          void write_sfm(uchar add,uchar date)
  95          {
  96   1              uchar shi,ge;
  97   1              shi=date/10;
  98   1              ge=date%10;
  99   1              write_com(0x80+0x40+add);
 100   1              write_date(0x30+shi);
 101   1              write_date(0x30+ge);    
 102   1      }
 103          //年月日刷新子函数
 104          void write_nyr(uchar add,uchar date)
 105          {
 106   1              uchar shi,ge;
 107   1              shi=date/10;
 108   1              ge=date%10;
 109   1              write_com(0x80+add);
 110   1              write_date(0x30+shi);
 111   1              write_date(0x30+ge);
 112   1      }
 113          void write_week(uchar add,uchar date)
 114          {
 115   1              switch(date)
 116   1                      {
 117   2                              case 1:
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 3   

 118   2                                      {       
 119   3                                              write_com(0x80+add);
 120   3                                              write_date(0x4d);
 121   3                                              //delay(5);
 122   3                                              write_date(0x4f);
 123   3                                      //      delay(5);       
 124   3                                              write_date(0x4e);
 125   3                                      }
 126   2                                              break;
 127   2                              case 2:
 128   2                                      {
 129   3                                              write_com(0x80+add);
 130   3                                              write_date(0x54);
 131   3                                      //      delay(5);
 132   3                                              write_date(0x55);
 133   3                                      //      delay(5);
 134   3                                              write_date(0x45);
 135   3                                      }
 136   2                                              break;
 137   2                              case 3:
 138   2                                      {       write_com(0x80+add);
 139   3                                              write_date(0x57);
 140   3                                      //      delay(5);
 141   3                                              write_date(0x45);
 142   3                                      //      delay(5);
 143   3                                              write_date(0x44);}
 144   2                                              break;
 145   2                              case 4:
 146   2                                      {       write_com(0x80+add);
 147   3                                              write_date(0x54);
 148   3                                      //      delay(5);
 149   3                                              write_date(0x48);
 150   3                                      //      delay(5);
 151   3                                              write_date(0x55);}
 152   2                                              break;
 153   2                              case 5:
 154   2                                      {       write_com(0x80+add);
 155   3                                              write_date(0x46);
 156   3                              //      delay(5);
 157   3                                              write_date(0x52);
 158   3                              //              delay(5);
 159   3                                              write_date(0x49);}
 160   2                                              break;
 161   2                              case 6:
 162   2                                      {       write_com(0x80+add);
 163   3                                              write_date(0x53);
 164   3                                      //      delay(5);
 165   3                                              write_date(0x41);
 166   3                                      //      delay(5);
 167   3                                              write_date(0x54);}
 168   2                                              break;
 169   2                              case 7:
 170   2                                      {       write_com(0x80+add);
 171   3                                              write_date(0x53);
 172   3                                      //      delay(5);
 173   3                                              write_date(0x55);
 174   3                                      //      delay(5);
 175   3                                              write_date(0x4e);}
 176   2                                              break;
 177   2                      }
 178   1      }
 179          void keyscan()
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 4   

 180          {       
 181   1              if(flag_ri==1)//按任意键取消报警
 182   1              {
 183   2                      if((s1==0)||(s2==0)||(s3==0)||(s4==0))
 184   2                      {
 185   3                              delay(5);
 186   3                              if((s1==0)||(s2==0)||(s3==0)||(s4==0))
 187   3                              {
 188   4                                      while(!(s1&&s2&&s3&&s4));
 189   4                                      di();
 190   4                                      flag_ri=0;
 191   4                              }
 192   3                      }
 193   2              }
 194   1              if(s1==0)
 195   1              {
 196   2                      delay(5);
 197   2                      if(s1==0)
 198   2                      {
 199   3                              s1num++;
 200   3                              flag=1;
 201   3                              if(flag1==1)
 202   3                                      if(s1num==4)
 203   3                                              s1num=1;
 204   3                              while(!s1);
 205   3                              di();
 206   3              tempchange();
 207   3              wendu(get_temp());
 208   3                              switch(s1num)
 209   3                              {
 210   4                                      case 1: write_com(0x80+0x40+8);
 211   4                                                      write_com(0x0f);//开显示,光标显示并闪烁
 212   4                                                      break;
 213   4                                      case 2: write_com(0x80+0x40+5);
 214   4                                                      break;
 215   4                                      case 3: write_com(0x80+0x40+2);
 216   4                                                      break;
 217   4                                      case 4: write_com(0x80+13);
 218   4                                                      break;
 219   4                                      case 5: write_com(0x80+10);
 220   4                                                      break;
 221   4                                      case 6: write_com(0x80+7);
 222   4                                                      break;
 223   4                                      case 7: write_com(0x80+4);
 224   4                                                      break;
 225   4                                      case 8: s1num=0;
 226   4                                                      write_com(0x0c);
 227   4                                                      flag=0;
 228   4                                                      write_ds(0,miao);
 229   4                                                      write_ds(2,fen);
 230   4                                                      write_ds(4,shi);
 231   4                                                      write_ds(6,week);
 232   4                                                      write_ds(7,day);
 233   4                                                      write_ds(8,month);
 234   4                                                      write_ds(9,year);
 235   4                                                      break;
 236   4                              }
 237   3                      }
 238   2              }
 239   1              if(s1num!=0)
 240   1              {
 241   2                      if(s2==0)
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 5   

 242   2                      {
 243   3                              delay(5);
 244   3                              if(s2==0)
 245   3                              {
 246   4                                      while(!s2);

⌨️ 快捷键说明

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