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

📄 yejin.lst

📁 用51内部定时器在Keil uVision3环境下开发的
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   YEJIN                                                                 08/26/2008 11:19:59 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char
   4          sbit dula=P2^6;
   5          sbit wela=P2^7;
   6          sbit rs=P3^5;
   7          sbit lcden=P3^4;
   8          sbit rd=P3^7;     //把rd口置0,扫描P3^0,1,2,3,同独立键盘功能
   9          sbit s1=P3^0;  //功能键
  10          sbit s2=P3^1;     //调日期,时间增加
  11          sbit s3=P3^2;     //调日期,时间减少
  12          uchar code table[]="   2000-01-01";    //初始化液晶显示
  13          uchar code table1[]="    00:00:00";
  14          uchar count,s1num;
  15          char second,minute,hour,day,month,year;
  16          //uchar code dis_week[]={"Sun,Mon,Tue,Wed,Thu,Fri,Sat"};
  17          //uchar code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5};        //星期月参变数
  18          
  19          //------------延时---------------------
  20          void delay(uint z)
  21          {
  22   1         uint x,y;
  23   1         for(x=z;x>0;x--)
  24   1            for(y=110;y>0;y--);
  25   1      }
  26          
  27          //----------写命令--------------------
  28          void write_com(uchar com)
  29          {
  30   1         rs=0;
  31   1         lcden=0;
  32   1         P0=com;
  33   1         delay(5);
  34   1         lcden=1;
  35   1         delay(5);
  36   1         lcden=0;
  37   1      }
  38          
  39          //----------写数据--------------------
  40          void write_date(uchar date)
  41          {
  42   1         rs=1;
  43   1         lcden=0;
  44   1         P0=date;
  45   1         delay(5);
  46   1         lcden=1;
  47   1         delay(5);
  48   1         lcden=0;
  49   1      }
  50          
  51          //-------------初始化----------------
  52          void init()
  53          {  
  54   1         uchar num;
  55   1         dula=0;
C51 COMPILER V7.50   YEJIN                                                                 08/26/2008 11:19:59 PAGE 2   

  56   1         wela=0;
  57   1         lcden=0;
  58   1         write_com(0x38);
  59   1         write_com(0x0c);
  60   1         write_com(0x06);
  61   1         write_com(0x01);
  62   1         write_com(0x80);
  63   1         for(num=0;num<13;num++)   //让液晶显示日期
  64   1         {
  65   2            write_date(table[num]);
  66   2                delay(5);
  67   2         }
  68   1         write_com(0x80+0x40);
  69   1         for(num=0;num<12;num++)   //让液晶显示时间
  70   1         {
  71   2            write_date(table1[num]);
  72   2                delay(5);
  73   2         }
  74   1         TMOD=0x01;                //定时器中断初始化
  75   1         TH0=(65536-50000)/256;
  76   1         TL0=(65536-50000)%256;
  77   1         EA=1;
  78   1         ET0=1;
  79   1         TR0=1;
  80   1      }
  81          
  82          //-------写年月日---------------
  83          void write_lyr(uchar add,uchar date)
  84          {
  85   1         uchar shi,ge;
  86   1         shi=date/10;
  87   1         ge=date%10;
  88   1         write_com(0x80+add);
  89   1         write_date(0x30+shi);
  90   1         write_date(0x30+ge);
  91   1      }
  92          
  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          //---------该年是否是闰年--------------------------
 105          bit leap_year()
 106          {
 107   1         int leap;
 108   1         if((year%4==0&&year%100!=0)||year%400==0)
 109   1            leap=1;
 110   1         else
 111   1            leap=0;
 112   1         return leap;
 113   1      }
 114          
 115          //星期的自动运算和处理
 116          /*uchar week_proc()
 117          {       uchar num_leap; 
C51 COMPILER V7.50   YEJIN                                                                 08/26/2008 11:19:59 PAGE 3   

 118                  uchar b;
 119                  num_leap=year/4-year/100+year/400;//自00年起到year所经历的闰年次数
 120                  if( leap_year()&& month<=2 )      //既是闰年且是1月和2月        
 121                          b=5;
 122                  else 
 123                          b=6;
 124                  week=(year+para_month[month]+day+num_leap+b)%7;//计算对应的星期
 125                  return week;
 126          }*/
 127          
 128          //-------写星期-----------------------------
 129          /*void write_week(week)
 130          {
 131             switch(week)
 132             {
 133                case 1:write_com(0x80+12);write_date(dis_week[0]);break;
 134                    case 2:write_com(0x80+12);write_date(dis_week[1]);break;
 135                    case 3:write_com(0x80+12);write_date(dis_week[2]);break;
 136                    case 4:write_com(0x80+12);write_date(dis_week[3]);break;
 137                    case 5:write_com(0x80+12);write_date(dis_week[4]);break;
 138                    case 6:write_com(0x80+12);write_date(dis_week[5]);break;
 139                    case 7:write_com(0x80+12);write_date(dis_week[6]);break;
 140                    default:write_com(0x80+12);write_date();break;
 141             }
 142          }*/
 143          
 144          //----------键盘扫描-------------------- 
 145          void keyscan()
 146          {
 147   1        rd=0;     //把rd口置0,准备扫描
 148   1        if(s1==0)     //第一个键是否按下
 149   1        {
 150   2           delay(5);
 151   2               if(s1==0)
 152   2               {
 153   3                  while(!s1);
 154   3                      s1num++;
 155   3                      if(s1num==1)    //第一个键被按一次
 156   3                      {  
 157   4                         TR0=0;
 158   4                         write_com(0x80+0x40+10);
 159   4                         write_com(0x0f);
 160   4                      }
 161   3                      if(s1num==2)    
 162   3                      {
 163   4                         write_com(0x80+0x40+7);
 164   4                      }
 165   3              if(s1num==3)   
 166   3                      {
 167   4                         write_com(0x80+0x40+4);
 168   4                      }
 169   3              if(s1num==4)   
 170   3                      {
 171   4                         write_com(0x80+11);
 172   4                      }
 173   3                      if(s1num==5)    
 174   3                      {
 175   4                         write_com(0x80+8);
 176   4                      }
 177   3                      if(s1num==6)    
 178   3                      {
 179   4                         write_com(0x80+5);
C51 COMPILER V7.50   YEJIN                                                                 08/26/2008 11:19:59 PAGE 4   

 180   4                      }
 181   3                      /*if(s1num==7)    
 182   3                      {
 183   3                         write_com(0x80+12);
 184   3                      }*/
 185   3                      if(s1num==7)   
 186   3                      {
 187   4                 s1num=0;
 188   4                         write_com(0x0c);
 189   4                         TR0=1;
 190   4                      }
 191   3           }
 192   2        }
 193   1           if(s1num!=0)      //如果功能键被按下
 194   1               {
 195   2                  if(s2==0)      //第二个按下
 196   2                      {
 197   3                         delay(5);
 198   3                         if(s2==0)
 199   3                         {
 200   4                            while(!s2);
 201   4                                if(s1num==1)      //第二个键被按一次,秒钟加一
 202   4                                {
 203   5                                   second++;
 204   5                                       if(second==60)
 205   5                                          second=0;
 206   5                                       write_sfm(10,second);
 207   5                                       write_com(0x80+0x40+10);
 208   5                                }

⌨️ 快捷键说明

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