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

📄 set_time.lst

📁 校园打铃系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   SET_TIME                                                              05/30/2007 15:57:59 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SET_TIME
OBJECT MODULE PLACED IN C:\DOCUME~1\LAI\桌面\学姐毕~1\SET_TIME.OBJ
COMPILER INVOKED BY: D:\常用软件\keil\C51\BIN\C51.EXE C:\DOCUME~1\LAI\桌面\学姐毕~1\SET_TIME.C DB SB OE

stmt level    source

   1          #include<reg52.h>
   2          #define  uchar unsigned char
   3          
   4          
   5          /**************************************************************/
   6          /*MAX7219*********************************************************/
   7          /******************************************************************/
   8          sbit CLK=P1^0;
   9          sbit DIN=P1^1;
  10          sbit LOAD=P1^2;
  11          /**************************************************************/
  12          void send(unsigned char add,unsigned char dat);
  13          void Initial_7219(void);
  14          /**************************************************************/
  15          /***********************************************************/
  16          void set_minite();
  17          void set_hour();
  18          uchar add_hour(uchar hour);
  19          uchar add_minite(uchar minite);
  20          uchar minus_hour(uchar hour);
  21          uchar minus_minite(uchar minite);
  22          void delay1(uchar time);
  23          void set_time();
  24          sbit s1=P3^4;
  25          sbit s2=P3^5;
  26          sbit s3=P3^6;
  27          sbit s4=P3^7;
  28          #define keycode P3 & 0x0f0
  29          /************************************************************/
  30          /*****************************************************************/
  31          void Initial_7219(void)
  32          {
  33   1         send(0x0c,0x01);//Shut down
  34   1         send(0x0b,0x07);//Scan Limit
  35   1         send(0x0a,0x0fa);//Intensity
  36   1         send(0x09,0x0ff);//Decode Mode
  37   1      }
  38          /**************************************************************/
  39          void send(unsigned char add,unsigned char dat)//Send 16Bytes
  40          {
  41   1         unsigned char Databuf,i,j;
  42   1         LOAD=0;
  43   1         i=0;
  44   1          while(i<16)
  45   1             {
  46   2              if(i<8)
  47   2                {
  48   3                Databuf=add;
  49   3                }
  50   2              else
  51   2                {
  52   3                Databuf=dat;
  53   3                }
  54   2               for(j=8;j>=1;j--)
  55   2                 {
C51 COMPILER V7.06   SET_TIME                                                              05/30/2007 15:57:59 PAGE 2   

  56   3                    DIN=Databuf&0x80;
  57   3                    Databuf=Databuf<<1;
  58   3                    CLK=1;
  59   3                    CLK=0;
  60   3                 }
  61   2              i=i+8;
  62   2             }
  63   1          LOAD=1;
  64   1      }
  65          /*************************************************************/
  66          /***********************MAX7219*********************************/
  67          /***************************************************************/
  68          /***************************************************************/
  69          
  70          //实时时钟芯片DS1302 C51源程序
  71          /****************************************************************
  72          
  73           公司名称:
  74           模块名称:DS1302.c
  75           功    能:实时时钟模块           时钟芯片型号:DS1302
  76           说    明:
  77           程序设计:zhaojunjie
  78           设计时间:2002.03.02
  79           版 本 号: 20020302
  80          *********************************************************************/
  81          sbit SCL = P3^0;// DS1302 Serial-Clock Input  pin 7
  82          sbit SDA = P3^1;// DS1302 Serial-Data  Input  pin 6
  83          sbit RST = P3^2;// DS1302 Chip-Seclet  Input  pin 5
  84          code uchar time_data[60]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,
  85                          0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,
  86                          0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,
  87                          0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,
  88                          0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,
  89                          0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59};
  90          
  91          #define  DS1302_WP    0x8E
  92          #define  DS1302_RESET   RST=0;SCL=0;RST=1
  93          #define  DS1302_WP_ENABLE  Write_Ds1302(DS1302_WP,0X00)
  94          #define  DS1302_WP_DISENABLE  Write_Ds1302(DS1302_WP,0x80)
  95          unsigned char set_rtc_code[3]={0x00,0x00,0x00};
  96          code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
  97          code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
  98          unsigned char read_rtc_code[3];
  99          
 100          void Write_Ds1302_byte(unsigned char temp);
 101          void Write_Ds1302( unsigned char address,unsigned char dat );
 102          unsigned char Read_Ds1302 ( unsigned char address );
 103          void Read_RTC(void);
 104          void Set_RTC(void);
 105          
 106          /****************************************************************************/
 107          /****************************************************************************/
 108          void Write_Ds1302_Byte(unsigned  char temp)
 109          {
 110   1       unsigned char i;
 111   1       for (i=0;i<8;i++)
 112   1        {
 113   2         SCL=0;
 114   2           SDA=temp&0x01;
 115   2           temp>>=1;
 116   2           SCL=1;
 117   2         }
C51 COMPILER V7.06   SET_TIME                                                              05/30/2007 15:57:59 PAGE 3   

 118   1      }
 119          /****************************************************************************/
 120          void Write_Ds1302( unsigned char address,unsigned char dat )
 121          {
 122   1       DS1302_RESET;
 123   1       Write_Ds1302_Byte(address);
 124   1       Write_Ds1302_Byte(dat);
 125   1       RST=0;
 126   1      }
 127          /****************************************************************************/
 128          unsigned char Read_Ds1302 ( unsigned char address )
 129          {
 130   1       unsigned char i,temp=0x00,temp_temp;
 131   1       DS1302_RESET;
 132   1       Write_Ds1302_Byte(address);
 133   1       for (i=0;i<8;i++)
 134   1       {
 135   2        if(SDA)
 136   2         temp|=0x80;
 137   2        SCL=0;
 138   2         temp>>=1;
 139   2        SCL=1;
 140   2       }
 141   1       RST=0;
 142   1       temp_temp=temp/16;
 143   1       temp=temp%16;
 144   1       temp=temp+temp_temp*10;
 145   1       return (temp);
 146   1      }
 147          /****************************************************************************/
 148          /****************************************************************************/
 149          void Read_RTC(void)
 150          {
 151   1       unsigned char i,*p;
 152   1       p=read_rtc_address;
 153   1       for(i=0;i<3;i++)
 154   1       {
 155   2        read_rtc_code[i]=Read_Ds1302(*p);
 156   2        p++;
 157   2       }
 158   1      }
 159          /***********************************************************************/
 160          /***********************************************************************/
 161          void Set_RTC(void)
 162          {
 163   1       unsigned char i,*p;
 164   1       p=write_rtc_address;
 165   1       for(i=0;i<3;i++)
 166   1       {
 167   2        Write_Ds1302(*p,set_rtc_code[i]);
 168   2        p++;
 169   2       }
 170   1      }
 171          /****************************************************************************/
 172          /****************************************************************************/
 173          /****************************************************************************/
 174          /****************************************************************************/
 175          
 176          
 177          
 178           /*****************************************************************/
 179           /* 时间设置set_time******************************************************/
C51 COMPILER V7.06   SET_TIME                                                              05/30/2007 15:57:59 PAGE 4   

 180          void set_minite()
 181          {uchar hour,minite;
 182   1      uchar hour_h,hour_l,minite_h,minite_l;
 183   1      
 184   1       while(s4==1)
 185   1            {send(0x08,0x0f);//5---8灭
 186   2             send(0x07,0x0f);
 187   2             send(0x06,0x0f);
 188   2             send(0x05,0x0f);
 189   2             Read_RTC();
 190   2             hour=read_rtc_code[2];//读DS1302
 191   2             minite=read_rtc_code[1];
 192   2             hour_h=hour/10;
 193   2             hour_l=hour%10;
 194   2             send(0x01,hour_h);//显示小时
 195   2             send(0x02,hour_l);
 196   2             minite_h=minite/10;
 197   2             minite_l=minite%10;
 198   2             send(0x03,minite_h);//显示分钟
 199   2             send(0x04,minite_l);
 200   2      
 201   2          delay1(450);
 202   2          send(0x03,0x0f);//显示分钟灭
 203   2          send(0x04,0x0f);
 204   2          delay1(450);
 205   2      
 206   2             if(s3==0)//3键
 207   2               {
 208   3               set_hour();
 209   3                break;
 210   3                }
 211   2              else
 212   2                 if(s1==0)
 213   2                   {
 214   3                    minite=add_minite(minite);//时间加一
 215   3                    set_rtc_code[1]=minite; //
 216   3                    Set_RTC();
 217   3      
 218   3                    }
 219   2                  else
 220   2                    if(s2==0)
 221   2                     {
 222   3                      minite=minus_minite(minite);//时间减一
 223   3                      set_rtc_code[1]=minite; //
 224   3                      Set_RTC();

⌨️ 快捷键说明

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