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

📄 1302

📁 ds1302与数码管时间可调
💻
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   ZHAO                                                                  08/13/2013 14:33:02 PAGE 1   


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

line level    source

   1          #include <reg51.h>//头文件
   2          #include <intrins.h>
   3          #include "DS1302.h"
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          code duanma[11] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
   7          code weima[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
   8          uint  jishu;
   9          uchar dot,flash,a,b,c,d;//
  10          uchar key1_state,key2_state,key3_state,key4_state;
  11          static uchar key1_flag=0;               //定义静态变量
  12          sbit    key1 = P3^0;                            //定义4个按键的端口
  13          sbit    key2 = P3^1;
  14          sbit    key3 = P3^2; 
  15          sbit    key4 = P3^3;
  16          /************时间延迟函数**************/
  17          //void delay(int delaytime)
  18          //{
  19          //      while(delaytime--)
  20          //      {
  21          //         _nop_();
  22          //      }
  23          //}
  24          // 毫秒延时
  25          void delayms(unsigned int delaytime)
  26          {
  27   1              uint i,j;
  28   1                      for( i = 0;i < delaytime;i++ )
  29   1                              for(j = 0;j < 120;j++);
  30   1      }
  31          //消隐函数                
  32          void xiaoying()
  33          {
  34   1        delayms(1);
  35   1        P0=0;
  36   1        delayms(1);
  37   1      }
  38          /***********获取按键状态函数***************/
  39          uchar get_key()
  40          {
  41   1         if(key1 == 0 )                               
  42   1              {       
  43   2                      key1 = 1;  
  44   2                      delayms(1);
  45   2                      if(key1 == 0) 
  46   2                      key1_state = 1;           //记忆key1按下的状态
  47   2              } 
  48   1      if(key1 == 1 && key1_state == 1)
  49   1              { 
  50   2                      key1_state = 0; 
  51   2                      key1_flag++;
  52   2              }       
  53   1              if(key1_flag == 4) 
  54   1              key1_flag = 0;
  55   1              return(key1_flag);
C51 COMPILER V9.00   ZHAO                                                                  08/13/2013 14:33:02 PAGE 2   

  56   1      }
  57          /************* T0的中断服务函数****************/
  58          void timer0_isr(void) interrupt 1
  59          {
  60   1        // uchar i;
  61   1        TR0 = 0;//给T0重新置初值 
  62   1        TH0 = (65536-5000)/256;//
  63   1        TL0 = (65536-5000)%256;// 
  64   1        TR0 = 1;
  65   1        jishu++;//进入中断的次数 
  66   1        if(jishu == 100)
  67   1           {
  68   2                dot =! dot;
  69   2                      jishu = 0;
  70   2              
  71   2           } 
  72   1      }
  73          /************* T0初始化函数,每5毫秒进一次中断************/
  74          void timer0_init()
  75          {
  76   1                EA = 0;
  77   1                TR0 = 0;
  78   1                TMOD &= 0xF0;
  79   1                TMOD |= 0x01;
  80   1                TL0 = (65536-5000)%256;
  81   1                TH0 = (65536-5000)/256;
  82   1            PT0 = 0;
  83   1                ET0 = 1;
  84   1                TR0 = 1;
  85   1                EA = 1;
  86   1      }
  87          /*************单片机初始化函数*****************/
  88          void Init_mcu(void)
  89          {
  90   1              timer0_init();//中断T0初始化
  91   1              init1302();     //
  92   1              key1_flag = 0;
  93   1      }
  94          /***********按键和时间设置函数*************/
  95          void key_setup()
  96          {
  97   1              uchar i;
  98   1              i = get_key();  
  99   1              if(i == 3)//i=3;adjust second ;调整秒
 100   1              {
 101   2                      if(key2 == 0)   
 102   2                  { 
 103   3                          key2 = 1;  
 104   3                              ;; 
 105   3                              if(key2 == 0) 
 106   3                              key2_state= 1;  
 107   3                   } 
 108   2      if(key2 == 1 && key2_state == 1) 
 109   2                      { 
 110   3                              key2_state = 0;
 111   3                              counter[0]++; 
 112   3                              if(counter[0] >= 60) 
 113   3                              counter[0] = 0;   
 114   3                      }       
 115   2                      if(key3 == 0 )  
 116   2                       { 
 117   3                              key3 = 1;  
C51 COMPILER V9.00   ZHAO                                                                  08/13/2013 14:33:02 PAGE 3   

 118   3                              ;;
 119   3                              if(key3 == 0)
 120   3                              key3_state = 1;
 121   3                      } 
 122   2                      if(key3 == 1 && key3_state == 1) 
 123   2                      { 
 124   3                              key3_state = 0;
 125   3                              counter[0]--; 
 126   3                              if(counter[0] < 0) 
 127   3                              counter[0] = 59;   
 128   3                      }
 129   2      
 130   2              a = dot*0xff; 
 131   2              }               
 132   1      else a = 0;     
 133   1              if(i == 2)//i=2;adjust the minute;调整分钟
 134   1              {
 135   2                      if(key2 == 0)   
 136   2                  { 
 137   3                          key2 = 1;  
 138   3                              ;; 
 139   3                              if(key2 == 0) 
 140   3                              key2_state= 1;  
 141   3                   } 
 142   2                      if(key2 == 1 && key2_state == 1) 
 143   2                      { 
 144   3                              key2_state = 0;
 145   3                              counter[1]++; 
 146   3                              if(counter[1]>= 60) 
 147   3                              counter[1] = 0;   
 148   3                      }       
 149   2                      if(key3 == 0 )  
 150   2                       { 
 151   3                              key3 = 1;  
 152   3                              ;;
 153   3                              if(key3 == 0)
 154   3      
 155   3              key3_state = 1;
 156   3                      } 
 157   2      if(key3 == 1 && key3_state == 1) 
 158   2                      { 
 159   3                              key3_state = 0;
 160   3                              counter[1]--; 
 161   3                              if(counter[1] < 0) 
 162   3                              counter[1] = 59;   
 163   3                      }
 164   2              b = dot*0xff; 
 165   2              }               
 166   1              else b = 0;
 167   1              if(i == 1)  //i=1;adjust the hour;调整小时
 168   1              {
 169   2                      if(key2 == 0)   
 170   2                  { 
 171   3                      
 172   3            key2 = 1;  
 173   3                              ;; 
 174   3                              if(key2 == 0) 
 175   3                              key2_state= 1;  
 176   3                   } 
 177   2            if(key2 == 1 && key2_state == 1) 
 178   2                      { 
 179   3                              key2_state = 0;
C51 COMPILER V9.00   ZHAO                                                                  08/13/2013 14:33:02 PAGE 4   

 180   3                              counter[2]++; 
 181   3                              
 182   3      
 183   3                if(counter[2] > 23 && d == 0) 
 184   3                              counter[2] = 0;
 185   3                              if(counter[2] > 12 && d == 1) 
 186   3                              counter[2] = 1;   
 187   3                      }       
 188   2                      if(key3 == 0)   
 189   2                       { 
 190   3                              key3 = 1;  
 191   3                              ;;
 192   3                              if(key3 == 0)
 193   3                              key3_state = 1;
 194   3                      } 
 195   2                      if(key3 == 1 && key3_state == 1) 
 196   2                      { 
 197   3                              key3_state = 0;
 198   3                              counter[2]--; 
 199   3                              if(counter[2] < 0 && d == 0) 
 200   3                              counter[2] = 23;
 201   3                              if(counter[2] < 1 && d == 1) 
 202   3                              counter[2] = 12;   
 203   3                      }
 204   2            c = dot*0xff;
 205   2              }
 206   1              
 207   1      else c = 0;
 208   1              if(key4 == 0)
 209   1      { 
 210   2                      key4 = 1;  
 211   2                      ;; 
 212   2                      if(key4 == 0) 
 213   2                      key4_state = 1; 
 214   2              } 
 215   1              if(key4 == 1 && key4_state == 1) 

⌨️ 快捷键说明

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