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

📄 memory clockί

📁 基于51单片机的万年历
💻
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   KEY                                                                   10/29/2012 15:18:33 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>//包含52单片机头文件
   2          #include "24c02.h"
   3          #include "MacroAndConst.h"
   4          #include "Key.h"
   5          #include "Lcd.h"
   6          #include "Beep.h"
   7          #include "main.h"
   8          #include "Assistance.h"
   9          #include "TimersInit.h"
  10          
  11          char shi1,ge1;
  12          
  13          void monthjudge()
  14          {
  15   1              if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day==32 )
  16   1                                              {
  17   2                                                      day=1;
  18   2                                              }
  19   1              if( (month==4 || month==6 || month==9 || month==11) && day==31 )
  20   1                                              {
  21   2                                                      day=1;
  22   2                                              }
  23   1              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==30 )
  24   1                                              {
  25   2                                                      day=1;
  26   2                                              }
  27   1              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==29)
  28   1                                              {
  29   2                                                       day=1;
  30   2                                              }
  31   1      }
  32          
  33          void monthjudge1()
  34          {
  35   1              if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day==0 )
  36   1                                              {
  37   2                                                      day=31;
  38   2                                              }
  39   1              if( (month==4 || month==6 || month==9 || month==11) && day==0 )
  40   1                                              {
  41   2                                                      day=30;
  42   2                                              }
  43   1              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==0 )
  44   1                                              {
  45   2                                                      day=29;
  46   2                                              }
  47   1              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==0)
  48   1                                              {
  49   2                                                       day=28;
  50   2                                              }
  51   1      }
  52          
  53          void keyscan()//按键扫描函数
  54          {
  55   1              shi1=miao/10;//分解一个2位数的十位和个位
C51 COMPILER V9.00   KEY                                                                   10/29/2012 15:18:33 PAGE 2   

  56   1              ge1=miao%10;
  57   1              if(s1==0)       
  58   1              {
  59   2                      delay(5);
  60   2                      if(s1==0)//确认功能键被按下
  61   2                      {       s1num++;//功能键按下次数记录
  62   3                              while(!s1);//释放确认
  63   3                              di();//每当有按键释放蜂鸣器发出滴声
  64   3                              if(s1num==1)//第一次被按下时
  65   3                              {
  66   4                                      TR0=0;  //关闭定时器
  67   4                                      write_com(0x80+0x40+11);//光标定位到秒位置
  68   4                                      write_com(0x0f); //光标开始闪烁
  69   4                              }
  70   3                              if(s1num==2)//第一次被按下时
  71   3                              {
  72   4                                      write_com(0x80+0x40+10);//光标定位到秒位置
  73   4                                      write_com(0x0f); //光标开始闪烁
  74   4                              }
  75   3                              if(s1num==3)//第二次按下光标闪烁定位到分钟位置
  76   3                              {
  77   4                                      write_com(0x80+0x40+7);
  78   4                              }
  79   3                              if(s1num==4)//第三次按下光标闪烁定位到小时位置
  80   3                              {
  81   4                                      write_com(0x80+0x40+4);
  82   4                              }
  83   3                              if(s1num==5)//第三次按下光标闪烁定位到星期位置
  84   3                              {
  85   4                                      write_com(0x80+13);
  86   4                              }
  87   3                              if(s1num==6)//第三次按下光标闪烁定位到日期位置
  88   3                              {
  89   4                                      write_com(0x80+10);
  90   4                              }
  91   3                              if(s1num==7)//第三次按下光标闪烁定位到月份位置
  92   3                              {
  93   4                                      write_com(0x80+7);
  94   4                              }
  95   3                              if(s1num==8)//第三次按下光标闪烁定位到年位置
  96   3                              {
  97   4                                      write_com(0x80+4);
  98   4                              }
  99   3                              if(s1num==9)
 100   3                              {
 101   4                                      write_com(0x80+2);
 102   4                              }
 103   3                              if(s1num==10)//第四次按下
 104   3                              {
 105   4                                      s1num=0;//记录按键数清零
 106   4                                      write_com(0x0c);//取消光标闪烁
 107   4                                      TR0=1;  //启动定时器使时钟开始走
 108   4                              }               
 109   3                      }
 110   2              }
 111   1              if(s1num!=0)//只有功能键被按下后,增加和减小键才有效
 112   1              {
 113   2                      if(s2==0)
 114   2                      {
 115   3                              delay(5);
 116   3                              if(s2==0)//增加键确认被按下
 117   3                              {
C51 COMPILER V9.00   KEY                                                                   10/29/2012 15:18:33 PAGE 3   

 118   4                                      while(!s2);//按键释放
 119   4                                      di();//每当有按键释放蜂鸣器发出滴声
 120   4                                      if(s1num==1)//若功能键第一次按下
 121   4                                      {       
 122   5                                              
 123   5                                              ge1++; //则调整秒加1
 124   5                                              if(ge1==10)
 125   5                                              {
 126   6                                                      ge1=0;
 127   6                                              }
 128   5                                              miao=shi1*10+ge1;
 129   5                                              if(miao==60)//若满60后将清零
 130   5                                                      miao=0;
 131   5                                              write_sfm1(11,ge1);//每调节一次送液晶显示一下
 132   5                                              write_com(0x80+0x40+11);//显示位置重新回到调节处
 133   5                                              write_addbyte(1,miao);  //数据改变立即存入24C02
 134   5                                      }
 135   4                                      if(s1num==2)//若功能键第一次按下
 136   4                                      {
 137   5                                              shi1++; //则调整秒加10
 138   5                                              if(shi1==6)
 139   5                                              {
 140   6                                                      shi1=0;
 141   6                                              }
 142   5                                              miao=shi1*10+ge1;
 143   5                                              if(miao==60)//若满60后将清零
 144   5                                                      miao=0;
 145   5                                              write_sfm2(10,shi1);//每调节一次送液晶显示一下
 146   5                                              write_com(0x80+0x40+10);//显示位置重新回到调节处
 147   5                                              write_addbyte(1,miao);  //数据改变立即存入24C02
 148   5                                      }
 149   4                                      if(s1num==3)//若功能键第二次按下
 150   4                                      {
 151   5                                              fen++;//则调整分钟加1
 152   5                                              if(fen==60)//若满60后将清零
 153   5                                                      fen=0;
 154   5                                              write_sfm(7,fen);//每调节一次送液晶显示一下
 155   5                                              write_com(0x80+0x40+7);//显示位置重新回到调节处
 156   5                                              write_addbyte(2,fen);//数据改变立即存入24C02
 157   5                                      }
 158   4                                      if(s1num==4)//若功能键第三次按下
 159   4                                      {
 160   5                                              shi++;//则调整小时加1
 161   5                                              if(shi==24)//若满24后将清零
 162   5                                                      shi=0;
 163   5                                              write_sfm(4,shi);;//每调节一次送液晶显示一下
 164   5                                              write_com(0x80+0x40+4);//显示位置重新回到调节处
 165   5                                              write_addbyte(3,shi);//数据改变立即存入24C02
 166   5                                      }
 167   4                                      if(s1num==5)//若功能键第4次按下
 168   4                                      {
 169   5                                              weekDay++;//则调整星期加1
 170   5                                              if(weekDay==7)//若满6后将清零
 171   5                                                      weekDay=0;
 172   5                                      write_weekDay(13,weekDay);
 173   5                                              write_com(0x80+13);//显示位置重新回到调节处

⌨️ 快捷键说明

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