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

📄 yj.lst

📁 单片机数字时钟
💻 LST
字号:
C51 COMPILER V8.08   YJ                                                                    06/09/2008 14:14:26 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE YJ
OBJECT MODULE PLACED IN yj.OBJ
COMPILER INVOKED BY: D:\keilc\C51\BIN\C51.EXE yj.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include<reg51.h>
   2           #include<absacc.h>
   3           #include <intrins.h>
   4           #define uchar unsigned char
   5           uchar code time[]={"Time:"};//第一行显示        “Time“
   6           uchar idata date[]     ={"                "};//   第二行显示时间
   7           sbit RS=P3^2;  //      lcd1602                  
   8           sbit RW=P3^1;   //      lcd1602读写端口
   9           sbit EN=P3^0;  //使能端  下降沿有效
  10           sbit flag=ACC^7;
  11           sbit FZ=P1^0;  //分设置键
  12           sbit XZ=P1^1;  //时设置键 
  13           sbit TC=P3^4;  //退出键
  14           sbit SZ=P1^2;  //设置指示灯
  15           sbit ZC=P1^3;  //正常计时指示灯
  16           sbit ST=P3^3;// 时间设置模式
  17            uchar second; //秒
  18            uchar mint;   //分
  19            uchar hour;   //时
  20            uchar t;         //定时器计数次数
  21           void delay(int y)        //延时函数
  22           {
  23   1         uchar i,j;
  24   1               for(j=0;j<=y;j++)
  25   1            for(i=0;i<=100;i++);
  26   1       }
  27          
  28           void wait(void)           //判断显示器是否处于忙状态
  29           {
  30   1         RS=0;
  31   1         RW=1;
  32   1          do{ACC=P0;}
  33   1         while(flag==1);      //读显示器忙标志位
  34   1       }
  35          
  36           void writecom(uchar com)        //写液晶显示命令
  37           {
  38   1           RS=0;
  39   1           RW=0;
  40   1           EN=0;
  41   1               P0=com; 
  42   1           delay(1);
  43   1               EN=1;
  44   1               delay(1);
  45   1           EN=0;//使能 数据送到命令寄存器
  46   1       }
  47           void writedat(uchar dat)  //写数据送显示
  48           {
  49   1           RS=1;
  50   1           RW=0;
  51   1           EN=0;
  52   1           P0=dat;
  53   1               delay(1);
  54   1               EN=1;
  55   1               delay(1);
C51 COMPILER V8.08   YJ                                                                    06/09/2008 14:14:26 PAGE 2   

  56   1               EN=0;
  57   1       }
  58           void lcdinit(void)                      //显示器初始化以及定时器初始化
  59           {
  60   1                
  61   1                TMOD=0x01;
  62   1                TH0=(65536-50000)/256;
  63   1                TL0=(65536-50000)%256;
  64   1                EA=1;
  65   1                ET0=1;
  66   1                EX1=1;
  67   1                TR0=1;
  68   1                SZ=0;
  69   1            t=0;         
  70   1                second=0;
  71   1                mint=0;
  72   1                hour=12;
  73   1         writecom(0x38);      
  74   1             wait();
  75   1         writecom(0x08);      
  76   1             wait();           
  77   1         writecom(0x01);      
  78   1             wait();
  79   1         writecom(0x06);      
  80   1                 wait();
  81   1         writecom(0x0c);      
  82   1                 wait();
  83   1      
  84   1                 
  85   1       }
  86           /////////////////////////
  87           /////////////////////// /
  88           ////////显示函数////////
  89           void display(uchar x,uchar *p)
  90           {
  91   1         while(*p!='\0')
  92   1        {  writecom(x);
  93   2           wait();  
  94   2           writedat(*p);
  95   2           wait();
  96   2               x++;p++;
  97   2              delay(5);
  98   2      }
  99   1      
 100   1      }
 101                  void time0(void) interrupt 1       
 102               {  
 103   1                
 104   1                 t++;
 105   1               if(t==7)       //溢出7次为一秒
 106   1               {
 107   2                       t=0;
 108   2                  second++;
 109   2                   if(second==60)
 110   2                    { 
 111   3                            mint++;
 112   3                        second=0;
 113   3                            if(mint==60)
 114   3                            { hour++;
 115   4                              mint=0;
 116   4                                if(hour==24)hour=0;
 117   4      
C51 COMPILER V8.08   YJ                                                                    06/09/2008 14:14:26 PAGE 3   

 118   4                            }
 119   3      
 120   3                    }
 121   2               
 122   2               } 
 123   1                TH0=(65536-50000)/256;
 124   1                TL0=(65536-50000)%256;
 125   1                            
 126   1               }      
 127                          
 128          ///////////////////////////////////
 129          //////////////////////////////////
 130          /////////////显示时间/////////////              
 131          void display1(void)
 132          {
 133   1          
 134   1               date[0]=hour/10+0x30;  // 第二行第一位显示时的十位
 135   1               date[1]=hour%10+0x30;  //       第二位显示时的个位
 136   1               date[2]=0x3a;                  //        第三位显示":"
 137   1               date[3]=mint/10+0x30;   //             分的十位
 138   1               date[4]=mint%10+0x30;   //             分的个位
 139   1               date[5]=0x3a;                   //             ":"
 140   1               date[6]=second/10+0x30; //             秒的十位
 141   1               date[7]=second%10+0x30; //             秒的个位
 142   1               display(0xc0,date);     //
 143   1      
 144   1      }               
 145                  
 146                   //////////////////////////////////////
 147                   //时间设置函数  ///////////////////////
 148                  /////////////////////////////////////
 149                    void  key(void)  interrupt 2             
 150                         {  
 151   1                          
 152   1                             EA=0;                    //关中断           定时器停止计数
 153   1                     SZ=1;                    //设置等点亮
 154   1                                 ZC=0;                        //计时等熄灭
 155   1                         second=0;
 156   1                         while(1) 
 157   1                 { 
 158   2                               if(FZ==0)
 159   2                                {             
 160   3                                  
 161   3                                 delay(5) ;
 162   3                                  if(FZ==0)  //每按下一次分加1
 163   3                                        {       
 164   4                                        delay(5);     //延时
 165   4                                          mint++;
 166   4                                               
 167   4                                                if(mint==60){mint=0;}
 168   4                                              
 169   4                                        }
 170   3                                }
 171   2                           if(XZ==0)
 172   2                                {
 173   3                                        delay(5) ;
 174   3                                  if(XZ==0)    //每按下一次时加1
 175   3                                       { 
 176   4                                              delay(50);
 177   4                                           hour++;
 178   4                                            if(hour==24){hour=0;}
 179   4                                              
C51 COMPILER V8.08   YJ                                                                    06/09/2008 14:14:26 PAGE 4   

 180   4                                       }
 181   3                                }
 182   2                      display1();             //及时显示变化
 183   2                               
 184   2                 if(TC==0) break;       // 退出键按下   退出时间设置
 185   2               }
 186   1               SZ=0;            // 设置灯灭
 187   1                       ZC=1;            //    计时灯亮                  
 188   1                         EA=1;          //     开中断 定时器计数
 189   1      
 190   1              }        
 191          /***************************************************/
 192          /******************主函数****************************/
 193          /****************************************************/           
 194                                                                                  
 195          void main(void)
 196          {
 197   1              
 198   1                 lcdinit(); 
 199   1                 display(0x80,time); //显示"Time"
 200   1                
 201   1       while(1)
 202   1       {
 203   2          
 204   2         display1();                   
 205   2      }        
 206   1      
 207   1      }               


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    464    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   IDATA SIZE       =     17    ----
   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 + -