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

📄 ds1302.lst

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DS1302                                                                04/09/2007 08:32:31 PAGE 1   


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

line level    source

   1          /*基于DS1302和LCD1602的万年历*/
   2          /*具有光标显示,按键调时功能*/
   3          /*作者:田开坤*/
   4          /*key0:模式选择*/
   5          /*key1:减操作*/
   6          /*key2:加操作*/
   7          /*key0:返回*/
   8          /*2007.04.09*/
   9          #include "STC89C51RC.H"
  10          #include "LCD1602.h"
  11          #include "DS1302.h"
  12          #include <absacc.h>
  13          
  14          #define UP 0xff
  15          #define DOWN 0x0
  16          
  17          sbit  key3 = P3^5;
  18          sbit  key2 = P3^4;//Up
  19          sbit  key1 = P3^3;//Down
  20          sbit  key0 = P3^2;//Modle
  21          
  22          //1302调时函数
  23          void data_change(uchar data_name,uchar up_down,uchar max,uchar n)
  24          {
  25   1              uchar tmp;
  26   1              uchar tmp1;
  27   1              
  28   1              tmp1 = Read1302(data_name);
  29   1              tmp = ((tmp1>>4)&0x0f)*10 + (tmp1 & 0x0f);
  30   1      
  31   1              if (up_down){
  32   2                      if(tmp < max){
  33   3                              tmp+=n;
  34   3                              tmp1=(((tmp/10)<<4) | (tmp%10));
  35   3                              Write1302(data_name,tmp1);                                              
  36   3                      }
  37   2              }
  38   1              else{
  39   2                      if(tmp >= n){
  40   3                              tmp-=n;
  41   3                              tmp1=(((tmp/10)<<4) | (tmp%10));
  42   3                              Write1302(data_name,tmp1);
  43   3                      }
  44   2              }
  45   1      }
  46          
  47          main()
  48          {
  49   1              uint loop_count=0;      
  50   1              uint key0_count=0;
  51   1              uint key1_count=0;
  52   1              uint key2_count=0;
  53   1              uchar modle_flag=0;
  54   1              uchar cursor_line=2;    
  55   1              uchar cursor_conumn=10; 
C51 COMPILER V8.02   DS1302                                                                04/09/2007 08:32:31 PAGE 2   

  56   1              uchar nset_time=1;
  57   1      
  58   1              SYSTEMTIME CurrentTime;
  59   1      
  60   1              LCD_Init();
  61   1              Initial_DS1302();
  62   1      
  63   1              LCD_W_Data(1,1,16,"                ");
  64   1              LCD_W_Data(2,1,16,"                ");
  65   1      
  66   1              LCD_W_Data(1,1,5,"Date:");
  67   1              LCD_W_Data(2,1,5,"Time:");
  68   1      
  69   1              while(1){               
  70   2                      if(loop_count++>10000){
  71   3                              DS1302_GetTime(&CurrentTime);   
  72   3                              DateToStr(&CurrentTime);
  73   3                              TimeToStr(&CurrentTime);
  74   3      
  75   3                              LCD_CURSOR_ONOFF(1);//关闭光标
  76   3      
  77   3                              LCD_W_Data(1,6,8,CurrentTime.DateString);
  78   3                              LCD_W_Data(2,6,8,CurrentTime.TimeString);
  79   3                              
  80   3                              loop_count = 0;
  81   3                              
  82   3                              if(nset_time) LCD_CURSOR_ONOFF(1);
  83   3                              else{
  84   4                                      LCD_CURSOR_ONOFF(2);//显示光标
  85   4                                      LCD_SET_CURSOR(cursor_line,cursor_conumn);
  86   4                              }
  87   3                      }
  88   2      
  89   2                      if(key0==0)     {  
  90   3                              if(key0_count++>25000)  {
  91   4                                      nset_time = 0;
  92   4                                      modle_flag++;
  93   4                                      switch(modle_flag) {
  94   5                                              case 1:
  95   5                                                      cursor_line = 2;
  96   5                                                      cursor_conumn = 10;
  97   5                                                      break;
  98   5                                              
  99   5                                              case 2:
 100   5                                                      cursor_line = 2;
 101   5                                                      cursor_conumn = 9;                                      
 102   5                                                      break;
 103   5                                              case 3:
 104   5                                                      cursor_line = 2;
 105   5                                                      cursor_conumn = 7;
 106   5                                                      break;
 107   5                                              
 108   5                                              case 4:
 109   5                                                      cursor_line = 2;
 110   5                                                      cursor_conumn = 6;                                      
 111   5                                                      break;
 112   5                                              case 5:
 113   5                                                      cursor_line = 1;
 114   5                                                      cursor_conumn = 13;
 115   5                                                      break;
 116   5                                              
 117   5                                              case 6:
C51 COMPILER V8.02   DS1302                                                                04/09/2007 08:32:31 PAGE 3   

 118   5                                                      cursor_line = 1;
 119   5                                                      cursor_conumn = 12;                                     
 120   5                                                      break;
 121   5                                              case 7:
 122   5                                                      cursor_line = 1;
 123   5                                                      cursor_conumn = 10;
 124   5                                                      break;
 125   5                                              
 126   5                                              case 8:
 127   5                                                      cursor_line = 1;
 128   5                                                      cursor_conumn = 9;                                      
 129   5                                                      break;

⌨️ 快捷键说明

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