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

📄 ds1302.lst

📁 一个基于51单片机的报警系统。包含有电路图
💻 LST
字号:
C51 COMPILER V7.06   DS1302                                                                10/14/2006 11:09:57 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN D:\KEIL\备分\DS1302.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE D:\KEIL\备分\DS1302.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          #include "main.h"
   3          
   4          
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          ///////////////////////////////////////////////////全局变量
   9          //uchar idata calen[8]={0x9d,0x58,0x23,0x31,0x04,0x03,0x06,0x00};               //日历存放地址
  10          //sbit T_CLK=P1^0;                      //1302的CLK引脚
  11          //sbit T_IO=P1^1;                               //1302的数据引脚
  12          //sbit T_RST=P1^2;                      //1302的复位引脚
  13          
  14          void SystemInitial(void);
  15          void CalendarInitial(uchar * pcalen);   //日历初始化程序
  16          
  17          void BurstR1302(uchar *pcalen);         // 从1302读多字节,并存入日历数组中
  18          void BurstR1302(uchar *pcalen);         // 从1302读多字节,并存入日历数组中
  19          void RTInputByte(uchar udata);          //从1302写入一字节的数据
  20          uchar RTOutputByte(void);               //从1302读一字节的数据
  21          void Writ1302(uchar uAddr,uchar udata); //写1字节的数据入指定地址
  22          uchar Read1302(uchar uAddr);    //从指定地址读出1字节数据
  23          void BurstW1302(uchar * pcalen);        //写入多字节的数据
  24          void Set1302(uchar *pClock);    //Set1302 Initial
  25          void Delay_us(uchar i);
  26          
  27          //sbit ACC0 = ACC^0;
  28          //sbit ACC7 = ACC^7;
  29          
  30          
  31          
  32          
  33          void main(void)
  34          {
  35   1              SP=0x3f;
  36   1              Delay_us(4);
  37   1      //      uchar * pcalen;
  38   1      //      pcalen=calen;
  39   1      //    uchar calen[8]={52,67,8,5,8,6,6,0};
  40   1              CalendarInitial(calen); //
  41   1      
  42   1      
  43   1              while(1)
  44   1                      {
  45   2                      BurstR1302(calen);              //读日历,并送到pcalen[]中
  46   2                      }
  47   1      }
  48          
  49          void CalendarInitial(pcalen)//日历初始化程序
  50          uchar pcalen[8];
  51          {
  52   1              uchar i;
  53   1              BurstW1302(pcalen);             //读日历,并送到pcalen[]中
  54   1              i=Read1302(0x80);
  55   1              i=i&0x7f;
C51 COMPILER V7.06   DS1302                                                                10/14/2006 11:09:57 PAGE 2   

  56   1              while(1)
  57   1              {                               //ch=0
  58   2              Writ1302(0x80,i);       //起震
  59   2              
  60   2              Delay_us(100);
  61   2              Writ1302(0x80,i);
  62   2              
  63   2              
  64   2              }
  65   1      }
  66          
  67          
  68          void BurstR1302(pcalen)         // 从1302读多字节,并存入日历数组中
  69          uchar pcalen[8];
  70          {
  71   1              uchar i;
  72   1              T_RST=0;
  73   1              T_CLK=0;
  74   1              T_RST=1;
  75   1              RTInputByte(0xbf);              //oxbf 时钟多字节读命令
  76   1              for(i=0; i<8; i++)
  77   1                      {
  78   2                              *pcalen=RTOutputByte(); //读1BYTE的数据
  79   2                              pcalen++ ;
  80   2                      }
  81   1              T_CLK=1;
  82   1              T_RST=0;
  83   1      }
  84          
  85          ////////////////////////////////////////////////////////
  86          
  87          void RTInputByte(udata)         //to1302写入一字节的数据
  88          uchar udata;
  89          {
  90   1              uchar i;
  91   1              ACC=udata;
  92   1              for(i=8;i>0;i--)
  93   1              {
  94   2                      T_IO=ACC0;
  95   2                      T_CLK=1;
  96   2                      T_CLK=0;
  97   2                      ACC=ACC>>1;
  98   2              }
  99   1      }
 100          
 101          /////////////////////////////////////////////////////
 102          uchar RTOutputByte(void)                //从1302读一字节的数据
 103          {
 104   1              uchar i;
 105   1              for(i=8;i>0;i--)
 106   1              {
 107   2                      ACC=ACC>>1;
 108   2                      ACC7=T_IO;
 109   2                      T_CLK=1;
 110   2                      T_CLK=0;
 111   2      
 112   2              }
 113   1              return(ACC);
 114   1      }
 115          
 116          //////////////////////////////////////////////////////
 117          
C51 COMPILER V7.06   DS1302                                                                10/14/2006 11:09:57 PAGE 3   

 118          void Writ1302(uchar uAddr,uchar udata)  //写1字节的数据入指定地址
 119          {
 120   1      
 121   1              T_RST=0;
 122   1              T_CLK=0;
 123   1              T_RST=1;
 124   1              RTInputByte(uAddr);     //先输入地址
 125   1              RTInputByte(udata);     //写数据
 126   1              T_CLK=1;
 127   1              T_RST=0;
 128   1      }
 129          
 130          //////////////////////////////////////////////////////
 131          
 132          uchar Read1302(uchar uAddr)     //从指定地址读出1字节数据
 133          {
 134   1              uchar udata;
 135   1              T_RST=0;
 136   1              T_CLK=0;
 137   1              T_RST=1;
 138   1              RTInputByte(uAddr);     //写入地址
 139   1              udata=RTOutputByte();   //读出数据
 140   1              T_CLK=1;
 141   1              T_RST=0;
 142   1              return(udata);
 143   1      }
 144          
 145          /////////////////////////////////////////////////////
 146          
 147          void BurstW1302(pcalen) //写入多字节的数据
 148          uchar pcalen[8];
 149          {
 150   1              uchar i;
 151   1              Writ1302(0x8e,0x00);  //WP=0,写操作
 152   1              T_RST=0;
 153   1              T_CLK=0;
 154   1              T_RST=1;
 155   1              RTInputByte(0xbe);      //0xbe ;时钟多字节写命令
 156   1              for(i=8;i>0;i--)
 157   1              {
 158   2                      RTInputByte(*pcalen);
 159   2                      pcalen++;
 160   2              }
 161   1              T_CLK=1;
 162   1              T_RST=0;
 163   1      }
 164          
 165          ////////////////////////////////////////////////////
 166          /*void Set1302(uchar *pClock)    //Set1302 Initial
 167          {
 168              uchar i;
 169              uchar ucAddr = 0x80;
 170              W1302(0x8e,0x00);           // 控制命令,WP=0,写操作?
 171              for(i =7; i>0; i--)
 172              {
 173                  W1302(ucAddr,*pClock);  // 秒 分 时 日 月 星期 年
 174                  pClock++;
 175                  ucAddr +=2;
 176              }
 177              W1302(0x8e,0x80);           // 控制命令,WP=1,写保护?
 178          }
 179          *///////
C51 COMPILER V7.06   DS1302                                                                10/14/2006 11:09:57 PAGE 4   

 180          
 181          void Delay_us(uchar i)
 182          {
 183   1           uchar d;
 184   1          for(d=0;d<i;d++);
 185   1      }
C51 COMPILER V7.06   DS1302                                                                10/14/2006 11:09:57 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


ACC7 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E7H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
calen. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  8
_BurstR1302. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  pcalen . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
T_CLK. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
_BurstW1302. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  pcalen . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_Delay_us. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  d. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
SP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0081H  1
_Read1302. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  uAddr. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  udata. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T_RST. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1
CodeNum. . . . . . . . . . . . . . . .  PUBLIC   IDATA  ARRAY    0000H  4
_RTInputByte . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
  udata. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ACC. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E0H  1
T_IO . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
_CalendarInitial . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  pcalen . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_Writ1302. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  uAddr. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  udata. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
RTOutputByte . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ACC0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    236    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       5
   IDATA SIZE       =      4    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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