test1.lst

来自「校园打铃系统」· LST 代码 · 共 538 行 · 第 1/2 页

LST
538
字号
C51 COMPILER V7.06   TEST1                                                                 06/01/2007 16:49:13 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEST1
OBJECT MODULE PLACED IN .\test1.obj
COMPILER INVOKED BY: D:\常用软件\keil\C51\BIN\C51.EXE ..\test\test1.c BROWSE DEBUG OBJECTEXTEND PRINT(.\test1.lst) OBJEC
                    -T(.\test1.obj)

stmt level    source

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

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

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

 179          
 180           /*****************************************************************/
 181           /* 时间设置set_time******************************************************/
 182          void set_minite()
 183          {uchar hour,minite;
 184   1      uchar hour_h,hour_l,minite_h,minite_l;
 185   1      
 186   1       while(s4==1)
 187   1            {send(0x08,0x0f);//5---8灭
 188   2             send(0x07,0x0f);
 189   2             send(0x06,0x0f);
 190   2             send(0x05,0x0f);
 191   2             Read_RTC();
 192   2             hour=read_rtc_code[2];//读DS1302
 193   2             minite=read_rtc_code[1];
 194   2             hour_h=hour/10;
 195   2             hour_l=hour%10;
 196   2             send(0x01,hour_h);//显示小时
 197   2             send(0x02,hour_l);
 198   2             minite_h=minite/10;
 199   2             minite_l=minite%10;
 200   2             send(0x03,minite_h);//显示分钟
 201   2             send(0x04,minite_l);
 202   2      
 203   2          delay1(450);
 204   2          send(0x03,0x0f);//显示分钟灭
 205   2          send(0x04,0x0f);
 206   2          delay1(450);
 207   2      
 208   2             if(s3==0)//3键
 209   2               {
 210   3               set_hour();
 211   3                break;
 212   3                }
 213   2              else
 214   2                 if(s1==0)
 215   2                   {
 216   3                    minite=add_minite(minite);//时间加一
 217   3                    set_rtc_code[1]=minite; //
 218   3                    Set_RTC();
 219   3      
 220   3                    }
 221   2                  else
 222   2                    if(s2==0)
 223   2                     {
 224   3                      minite=minus_minite(minite);//时间减一
 225   3                      set_rtc_code[1]=minite; //
 226   3                      Set_RTC();
 227   3      
 228   3                     }
 229   2      
 230   2      
 231   2      }
 232   1      }
 233          
 234          
 235          void set_hour()
 236          {uchar hour,minite;
 237   1       uchar hour_h,hour_l,minite_h,minite_l;
 238   1      
 239   1      while(s4==1)
 240   1            {send(0x08,0x0f);//5---8灭
C51 COMPILER V7.06   TEST1                                                                 06/01/2007 16:49:13 PAGE 5   

 241   2             send(0x07,0x0f);
 242   2             send(0x06,0x0f);
 243   2             send(0x05,0x0f);
 244   2             Read_RTC();
 245   2             hour=read_rtc_code[2];//读DS1302
 246   2             minite=read_rtc_code[1];
 247   2                 hour_h=hour/10;
 248   2                 hour_l=hour%10;
 249   2             send(0x01,hour_h);//显示小时
 250   2             send(0x02,hour_l);
 251   2                 minite_h=minite/10;

⌨️ 快捷键说明

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