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

📄 ds12c887.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DS12C887                                                              07/27/2012 12:43:51 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS12C887
OBJECT MODULE PLACED IN DS12C887.OBJ
COMPILER INVOKED BY: F:\新建文件夹\新建文件夹 (2)\C51\BIN\C51.EXE DS12C887.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit s1=P1^1;
   5          sbit s2=P1^3;
   6          sbit s3=P1^5;
   7          sbit s4=P1^7;
   8          sbit lcdrs=P3^0;
   9          sbit lcden=P3^1;
  10          sbit irq=P3^2;
  11          sbit beep=P3^3;
  12          sbit as=P3^4;
  13          sbit rw=P3^5;
  14          sbit ds=P3^6;
  15          sbit cs=P3^7;
  16          bit flag1,flag_alarm;
  17          uchar s1num,flag;
  18          char miao,shi,fen,year,month,day,week,alarm_miao,alarm_shi,alarm_fen;
  19          uchar code table1[]="20  -  -  "; 
  20          uchar code table2[]="  :  :  ";
  21          //////////////////////////////////////////////////////////////////////////////
  22          void delay(uint z)
  23          {
  24   1           uint x,y;
  25   1               for(x=z;x>0;x--)  
  26   1                 for(y=110;y>0;y--);
  27   1      }
  28          void di()
  29          {
  30   1           beep=1;
  31   1               delay(200);
  32   1               beep=0;
  33   1      }
  34          ///////////1602和ds12c887读写部分//////////////////////////////////////////
  35          void write_ds(uchar add,uchar date)
  36          {
  37   1              as=0;
  38   1              cs=0;
  39   1              ds=1;
  40   1              rw=1;
  41   1              as=1;
  42   1              P0=add;
  43   1              as=0;
  44   1              rw=0;
  45   1              P0=date;
  46   1              rw=1;
  47   1          as=1;
  48   1              cs=1;   
  49   1      }
  50          uchar read_ds(uchar add)
  51          {
  52   1              uchar ds_date;
  53   1              as=0;
  54   1              cs=0;
  55   1              ds=1;
C51 COMPILER V8.02   DS12C887                                                              07/27/2012 12:43:51 PAGE 2   

  56   1              rw=1;
  57   1              as=1;
  58   1              P0=add;
  59   1              as=0;
  60   1              ds=0;
  61   1              P0=0xff;
  62   1              ds_date=P0;
  63   1              ds=1;
  64   1              as=1;
  65   1              cs=1;
  66   1              return ds_date; 
  67   1      }                     
  68          void write_com(uchar com)
  69          {
  70   1           lcdrs=0;
  71   1               P0=com;
  72   1               delay(5);
  73   1               lcden=1;
  74   1               lcden=0;
  75   1      }
  76          void write_data(uchar date)
  77          {
  78   1           lcdrs=1;
  79   1               P0=date;
  80   1               delay(5);
  81   1               lcden=1;
  82   1               lcden=0;
  83   1      }
  84          /////////读取时间和显示部分///////////////////////////////////////////////////
  85          void gettime()
  86          {
  87   1          year=read_ds(9);
  88   1              month=read_ds(8);
  89   1          day=read_ds(7);
  90   1          week=read_ds(6);
  91   1              shi=read_ds(4);
  92   1          fen=read_ds(2);
  93   1          miao=read_ds(0);
  94   1      }   
  95          void write_sfm(uchar add,uchar date)
  96          {
  97   1           uchar shi,ge;
  98   1               shi=date/10;
  99   1               ge=date%10;
 100   1               write_com(0x80+0x40+add);
 101   1               write_data(0x30+shi);
 102   1               write_data(0x30+ge);
 103   1      }
 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_data(0x30+shi);
 111   1               write_data(0x30+ge);
 112   1      }
 113          void write_week(uchar week)
 114          {
 115   1           write_com(0x80+12);
 116   1               switch(week)
 117   1               {
C51 COMPILER V8.02   DS12C887                                                              07/27/2012 12:43:51 PAGE 3   

 118   2                    case 1: write_data('M');
 119   2                                delay(5);
 120   2                                        write_data('O');
 121   2                                        delay(5);
 122   2                                        write_data('N');
 123   2                                        break;
 124   2                        case 2: write_data('T');
 125   2                                delay(5);
 126   2                                        write_data('H');
 127   2                                        delay(5);
 128   2                                        write_data('U');
 129   2                                        break;
 130   2                        case 3: write_data('W');
 131   2                                delay(5);
 132   2                                        write_data('E');
 133   2                                        delay(5);
 134   2                                        write_data('D');
 135   2                                        break;
 136   2                        case 4: write_data('T');
 137   2                                delay(5);
 138   2                                        write_data('H');
 139   2                                        delay(5);
 140   2                                        write_data('U');
 141   2                                        break;
 142   2                        case 5: write_data('F');
 143   2                                delay(5);
 144   2                                        write_data('R');
 145   2                                        delay(5);
 146   2                                        write_data('I');
 147   2                                        break;
 148   2                        case 6: write_data('S');
 149   2                                delay(5);
 150   2                                        write_data('A');
 151   2                                        delay(5);
 152   2                                        write_data('T');
 153   2                                        break;                 
 154   2                        case 7: write_data('S');
 155   2                                delay(5);
 156   2                                        write_data('U');
 157   2                                        delay(5);
 158   2                                        write_data('N');
 159   2                                        break;
 160   2               }
 161   1      }
 162          void display()
 163          {
 164   1          write_sfm(10,miao);
 165   1              write_sfm(7,fen);
 166   1              write_sfm(4,shi);
 167   1          write_week(week);
 168   1              write_nyr(3,year);
 169   1              write_nyr(6,month);
 170   1          write_nyr(9,day);
 171   1      }
 172          /////////键盘扫描部分//////////////////////////////////////////
 173          void read_alarm( )
 174          {
 175   1              alarm_miao=read_ds(1);
 176   1              alarm_fen=read_ds(3);
 177   1              alarm_shi=read_ds(5);
 178   1      }
 179          void keyscan()
C51 COMPILER V8.02   DS12C887                                                              07/27/2012 12:43:51 PAGE 4   

 180          {
 181   1           if(flag_alarm==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_alarm=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                                       if(flag1==1)
 201   3                                           if(s1num==4)
 202   3                                                  s1num=1;
 203   3                                       flag=1;
 204   3                                       while(!s1);
 205   3                                       switch(s1num)
 206   3                                       {
 207   4                                            case 1:write_com(0x80+0x40+10);
 208   4                                                       write_com(0x0f);
 209   4                                                               break;
 210   4                                                case 2:write_com(0x80+0x40+7);
 211   4                                                  
 212   4                                                               break;          
 213   4                                                case 3:write_com(0x80+0x40+4);
 214   4                                                  
 215   4                                                               break;
 216   4                                                case 4:write_com(0x80+12);
 217   4                                                    
 218   4                                                               break;
 219   4                                                case 5:write_com(0x80+9);
 220   4                                                   
 221   4                                                               break;
 222   4                                                case 6:write_com(0x80+6);
 223   4                                                       
 224   4                                                               break;
 225   4                                                case 7:write_com(0x80+3);
 226   4                                                
 227   4                                                               break;
 228   4                                                case 8:s1num=0;
 229   4                                                       write_com(0x0c);
 230   4                                                               flag=0;
 231   4                                                               write_ds(0,miao);
 232   4                                                               write_ds(2,fen);
 233   4                                                               write_ds(4,shi);
 234   4                                                               write_ds(6,week);
 235   4                                                               write_ds(7,day);
 236   4                                                               write_ds(8,month);
 237   4                                                               write_ds(9,year);
 238   4                                                               break;
 239   4                                     }
 240   3      
 241   3                       }
C51 COMPILER V8.02   DS12C887                                                              07/27/2012 12:43:51 PAGE 5   

 242   2      
 243   2             }
 244   1                 if(s1num!=0)
 245   1                 {
 246   2                       if(s2==0)
 247   2                               {
 248   3                                      delay(5);
 249   3                                              {
 250   4                                                   while(!s2);
 251   4                                                       if(s1num==1)
 252   4                                                       {
 253   5                                                            miao++;
 254   5                                                                if(miao==60)
 255   5                                                                      miao=0;
 256   5                                                                write_sfm(10,miao);
 257   5                                                                write_com(0x80+0x40+10);
 258   5                                                       }

⌨️ 快捷键说明

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