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

📄 time_1302.lst

📁 使用台湾普诚pt6961驱动数码管和按键,显示ds1302的源码,详细的6961驱动代码
💻 LST
字号:
C51 COMPILER V8.08   TIME_1302                                                             03/04/2008 13:00:38 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TIME_1302
OBJECT MODULE PLACED IN time_1302.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE time_1302.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          /********************************************************************
   4          *
   5          * 模 块 名:时钟芯片的读写                型号:DS1302   
   6          *  
   7          * 创 建 人:yingjiangan                   日期:2008-03-03           
   8          * 修 改 人:                              日期:2000-00-00            
   9          * 功能描述:                                                         
  10          * 其他说明:                                                         
  11          * 版    本:V1.0
  12          **********************************************************************/
  13          
  14          
  15          /************头文件************/
  16          #include <intrins.h> 
  17          #include <sm5964.h>
  18          #include "my_type.h"
  19          #include "1302.h"
  20          
  21          code uint8 set_rtc_code[7]={0x15,0x32,0x15,0x03,0x03,0x01,0x08};
  22          /************************************秒***分***时***日***月**星期**年**/
  23          code uint8 write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; 
  24          code uint8 read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
  25          code uint8 *day[7]={"Mon","Tue","Wen","Thu","Fri","Sat","Sun"};
  26          uint8 read_rtc_code[7];
  27          
  28          
  29          /*********************************************************************  
  30          *
  31          * 函 数 名: Init_1302
  32          * 功能描述: 1302初始化
  33          * 函数说明: 
  34          * 输    入: 无
  35          * 返    回: 无
  36          * 设 计 者:ying                         日期:2008-03-03
  37          * 修 改 者:ying                         日期:2000-00-00
  38          ***********************************************************************/
  39                                                                                                                                                                                                                                                                                    /**********************************************************************
             -******/
  40          void Init_1302(void)      
  41          { 
  42   1       
  43   1              DS1302_WP_ENABLE;  //开禁止 写入数据
  44   1              Set_RTC();   //设定秒、分、时、日、月、星期、年
  45   1              DS1302_WP_DISENABLE;   //禁止写入
  46   1      
  47   1      }
  48          
  49          
  50          /*********************************************************************  
  51          * 
  52          * 函 数 名: Write_1302_Byte
  53          * 功能描述: 写入1302一个字节数据
  54          * 函数说明: 物理层
C51 COMPILER V8.08   TIME_1302                                                             03/04/2008 13:00:38 PAGE 2   

  55          * 输    入: 要写入的数据
  56          * 返    回: 无
  57          * 设 计 者:ying                         日期:2008-03-03
  58          * 修 改 者:ying                         日期:2000-00-00
  59          ***********************************************************************/
  60          void Write_1302_Byte(uint8 temp) 
  61          {
  62   1              uint8 i;
  63   1              for (i=0;i<8;i++)       //循环8次 写入数据
  64   1              { 
  65   2                      SDA=temp&LSB;           //每次传输低字节
  66   2                      temp>>=1;               //右移一位
  67   2                      SCL=HIGH;
  68   2                      _nop_();
  69   2                      SCL=LOW;
  70   2              }
  71   1      }
  72          
  73          /*********************************************************************  
  74          * 
  75          * 函 数 名: Write_1302
  76          * 功能描述: 写入1302地址和数据
  77          * 函数说明: 物理层
  78          * 输    入: address、dat
  79          * 返    回: 无
  80          * 设 计 者:ying                         日期:2008-03-03
  81          * 修 改 者:ying                         日期:2000-00-00
  82          ***********************************************************************/
  83          void Write_1302( uint8 address,uint8 dat )     
  84          {
  85   1              DS1302_RESET;  //启动
  86   1              Write_1302_Byte(address); //发送地址
  87   1              Write_1302_Byte(dat);  //发送数据
  88   1              RST=LOW;    //恢复
  89   1      }
  90          
  91          
  92          
  93          /*********************************************************************  
  94          * 
  95          * 函 数 名: Read_1302
  96          * 功能描述: 读出1302一个字节数据并转化BCD码
  97          * 函数说明: 物理层
  98          * 输    入: address
  99          * 返    回: 读出的数据
 100          * 设 计 者:ying                         日期:2008-03-03
 101          * 修 改 者:ying                         日期:2000-00-00
 102          ***********************************************************************/
 103          uint8 Read_1302 ( uint8 address )
 104          {
 105   1              uint8 i,temp=0x00,temp_temp;
 106   1              DS1302_RESET;
 107   1              Write_1302_Byte(address);
 108   1              for (i=0;i<7;i++)   //循环7次 读取数据
 109   1              {
 110   2                      SCL=LOW;
 111   2                      if(SDA)
 112   2                      {       
 113   3                              temp|=0x80;   //每次传输低字节
 114   3                      }
 115   2                      temp>>=1;   //右移一位
 116   2                      SCL=HIGH;
C51 COMPILER V8.08   TIME_1302                                                             03/04/2008 13:00:38 PAGE 3   

 117   2              } 
 118   1              RST=LOW;
 119   1      
 120   1              temp_temp=temp/16;  //数据处理
 121   1              temp=temp%16;
 122   1              temp=temp+temp_temp*10;
 123   1      
 124   1              return (temp);   //返回
 125   1      }
 126          
 127          
 128          /*********************************************************************  
 129          * 
 130          * 函 数 名: Read_RTC
 131          * 功能描述: 读出时钟芯片的时间
 132          * 函数说明: 器件层
 133          * 输    入: 
 134          * 返    回: 读出的时间数组
 135          * 设 计 者:ying                         日期:2008-03-03
 136          * 修 改 者:ying                         日期:2000-00-00
 137          ***********************************************************************/
 138          void Read_RTC(void)  //读取 日历
 139          {
 140   1              uint8 i,*p;
 141   1              p=read_rtc_address;  //地址传递
 142   1              for(i=0;i<7;i++)  //分7次读取 秒、分、时、日、月、星期、年
 143   1              {
 144   2                      read_rtc_code[i]=Read_1302(*p);
 145   2                      p++;
 146   2              }
 147   1      }
 148          
 149          
 150          /*********************************************************************  
 151          * 
 152          * 函 数 名: Set_RTC
 153          * 功能描述: 设定时钟芯片的时间
 154          * 函数说明: 器件层
 155          * 输    入: 
 156          * 返    回: 
 157          * 设 计 者:ying                         日期:2008-03-03
 158          * 修 改 者:ying                         日期:2000-00-00
 159          ***********************************************************************/
 160          void Set_RTC(void)  //设定 日历
 161          {
 162   1              uint8 i,*p;
 163   1              p=write_rtc_address; //传地址 
 164   1              for(i=0;i<7;i++)  //7次写入 秒、分、时、日、月、星期、年
 165   1              {
 166   2                      Write_1302(*p,set_rtc_code[i]);
 167   2                      p++;  
 168   2              }
 169   1      }          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    161    ----
   CONSTANT SIZE    =     70    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.08   TIME_1302                                                             03/04/2008 13:00:38 PAGE 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 + -