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

📄 sub_program.lst

📁 用单片机制作电子时钟,lcd1602显示,包括模拟电路图,源码,以及编译过程等
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   SUB_PROGRAM                                                           03/21/2008 14:20:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SUB_PROGRAM
OBJECT MODULE PLACED IN sub_program.OBJ
COMPILER INVOKED BY: d:\mcu\Keil\C51\BIN\C51.EXE sub_program.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "REGX52.H "
   2          #include "LCD1602.h"
   3          #include "DS1302.h"
   4          
   5                                                   
   6          /*sbit H      = P1^0;      //0x0e
   7          sbit updown = P1^1;        //0x0d
   8          sbit choose = P1^2;        //0x0b
   9          sbit enter  = P1^3;        //0x07         
  10          sbit buzzer = P1^4;                               */
  11                                   
  12          
  13                 unsigned char lcdmenu=1,resetflag=1; 
  14          static unsigned char keyflag=0;  
  15                 bit lcdflag=0;
  16                     bit time_on=0;
  17                     bit Alarm_on=0;
  18                 unsigned char keycode;
  19                 unsigned char oldcode,keyt;
  20                     unsigned char station;
  21          static unsigned char jj;
  22          static  SYSTEMTIME CurrentTime,Alarm_time;      //*ResetTime   
  23                  
  24          #define th0   0xee;                                       //5ms
  25          #define tl0   0x00;
  26          #define th1   0xdc;                                       //10ms
  27          #define tl1   0x00;
  28          
  29          void key_explain(unsigned char );                         //按键解释
  30          void currenttime();                                                               //显示当前时间
  31          void menu_choose(unsigned char lcdmenu);                  //菜单选择
  32          void lcd_menu(void);                                      //显示菜单
  33          void alarm_set();                                                                 //闹钟设置
  34          void alarm_speaker();                                                     //闹钟启动
  35          void time_reset();                                                                //时间重设
  36          void delay(unsigned char count);
  37          
  38          void delay(unsigned char count)
  39           {      unsigned char i,j;
  40   1           for(i=0;i<=50;i++)
  41   1                for(j=0;j<=count;j++)
  42   1                    ;
  43   1       }
  44           void time1_isr(void)  interrupt 3                //T1中断
  45          {       static unsigned char ii;
  46   1              //static bit  flashflag;
  47   1          TR1=0;
  48   1          TH1=th1;
  49   1          TL1=tl1;                            
  50   1          ii++;
  51   1      
  52   1      
  53   1                if(ii==50)
  54   1                 { ii=0;
  55   2                       //flashflag=~flashflag;
C51 COMPILER V8.02   SUB_PROGRAM                                                           03/21/2008 14:20:29 PAGE 2   

  56   2                          
  57   2                      DS1302_GetTime(&CurrentTime);
  58   2                      DateToStr(&CurrentTime);
  59   2                      TimeToStr(&CurrentTime); 
  60   2      
  61   2                      GotoXY(0,0);
  62   2                      Print("Date: "); 
  63   2                      Print(CurrentTime.DateString);
  64   2      
  65   2                      GotoXY(0,1);
  66   2                      Print("Time: ");
  67   2                      Print(CurrentTime.TimeString);
  68   2              
  69   2                 }
  70   1                                
  71   1                 delay(20);
  72   1      
  73   1        TR1=1;
  74   1      }
  75          
  76           void time0_isr(void)  interrupt 1                //T0中断扫描键盘
  77           {      
  78   1          TR0=0;
  79   1          TH0=th0;
  80   1              TL0=tl0;
  81   1      
  82   1          keycode=P1;
  83   1              keycode=keycode&0x0f;
  84   1              oldcode=keycode;
  85   1               if(keycode!=0x0f)
  86   1                   {while(1)
  87   2                              { keycode=P1;
  88   3                        keycode=keycode&0x0f;
  89   3                                if( keycode==0x0f)
  90   3                                       break;
  91   3                              }                 
  92   2                        key_explain(oldcode);         
  93   2                                      
  94   2                   }
  95   1              TR0=1;
  96   1        }     
  97          void key_explain(unsigned char oldcode)         //按键解释
  98          {   
  99   1                         
 100   1                         lcdflag=1;   
 101   1                         switch(oldcode)
 102   1                          {
 103   2                               case 0x0e: keyflag=0;                    
 104   2                                      break;                    //H
 105   2      
 106   2                           case 0x0d: keyflag=1;                        
 107   2                                      break;                    //updown
 108   2      
 109   2                       case 0x0b: keyflag=2;                   
 110   2                                                  break;                        //choose
 111   2      
 112   2                           case 0x07: keyflag=3;            
 113   2                                      break;                    //enter
 114   2      
 115   2                           default:   break;
 116   2                       }
 117   1      
C51 COMPILER V8.02   SUB_PROGRAM                                                           03/21/2008 14:20:29 PAGE 3   

 118   1               if(keyflag==2)
 119   1                 { if(station==0)
 120   2                         lcdmenu++;
 121   2                       if(station==2||station==3)
 122   2                         resetflag++;
 123   2                 }    
 124   1               if(lcdmenu==4) 
 125   1                  lcdmenu=1; 
 126   1               if(resetflag==6)
 127   1                      resetflag=1;   
 128   1      
 129   1      }
 130          void time_reset()                                                                 //时间重设
 131          { 
 132   1          SYSTEMTIME ResetTime;
 133   1        
 134   1          TR1=0;
 135   1              ResetTime=CurrentTime;
 136   1                      GotoXY(0,0);
 137   1                  Print("Date: ");
 138   1                      Print(ResetTime.DateString);
 139   1                      GotoXY(0,1);
 140   1                      Print("Time: ");
 141   1                      Print(ResetTime.TimeString);
 142   1        if(keyflag==1)                         //updown键       1
 143   1         {
 144   2              switch(resetflag)                //choose健      2
 145   2              { case 1:
 146   3                               ResetTime.Year++;
 147   3                               if(ResetTime.Year>=100)
 148   3                                      ResetTime.Year=0;
 149   3                       break;
 150   3               case 2:
 151   3                               ResetTime.Month++;
 152   3                               if(ResetTime.Month>=13)
 153   3                                      ResetTime.Month=0;
 154   3                       break;
 155   3               case 3:
 156   3                               ResetTime.Day++;
 157   3                               if(ResetTime.Day>=31)

⌨️ 快捷键说明

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