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

📄 kw_rtc.lst

📁 linux下数据下载器的设计与实现
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   KW_RTC                                                                10/12/2007 17:05:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KW_RTC
OBJECT MODULE PLACED IN kw_rtc.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE kw_rtc.C OBJECTADVANCED OPTIMIZE(11,SIZE) REGFILE(.\nand_fw2k.ORC) BROWSE O
                    -RDER INCDIR(c:\cypress\usb\target\inc) DEFINE(NAND_2K) DEBUG

line level    source

   1          /************************************************************************************** 
   2           Copyright (C), 1988-1999, Xi'an Keyway Control & Measurement Technology Co., Ltd
   3           FileName: kw_rtc.c 
   4           Description     :rtc 接口模块。      
   5           Version         :1.0 
   6           Function List   :    
   7           History:         // 历史修改记录 
   8                <author>      <time>        <version >       <desc> 
   9                LigangWang    07/08/08       1.0             build this moudle   
  10          *************************************************************************************/
  11          
  12          #include "globals.h"
  13          
  14          #define         SCLK_S          IOE |= 1<<4                                                             // 设时钟信号高 
  15          #define         SCLK_C          IOE &= ~(1<<4)                                                  // 设时钟信号低
  16          #define     IO1302_S    IOE |= 1<<3                                     // 设io信号高
  17          #define     IO1302_C    IOE &= ~(1<<3)                                  // 设io信号低
  18          #define         RST1302_S   IOE |= 1<<2                                 // 设复位信号高
  19          #define         RST1302_C   IOE &= ~(1<<2)                                                      // 设复位信号低
  20          #define         IO1302_D        ((IOE >> 3)&1)                                                  // 获取io信号电平
  21          
  22          BYTE xdata RM_Curtime[8];                                                                               // 用于保存RTC时间
  23          
  24          #define BCD2Byte(a)             (((((a)&0xf0)>>4) * 10) + ((a)&0x0f))   // 转换BCD数到16进制
  25          
  26          
  27          /************************************************************************************* 
  28            Function:       Delay_1us
  29            Description:    简单延时程序,延时不准确
  30            Called By:      
  31            Input:          Count @ BYTE,延时数
  32            Output:         N/A
  33            Return:         void
  34            Others:         
  35          *************************************************************************************/
  36          void Delay_1us(BYTE Count)
  37          {
  38   1              BYTE    i;
  39   1              for(;Count>0;Count--)
  40   1                      for(i=14;i>0;i--);
  41   1      }
  42          
  43          /************************************************************************************* 
  44            Function:       Delay
  45            Description:    简单延时程序,延时不准确
  46            Called By:      
  47            Input:          i @ BYTE,延时数
  48            Output:         N/A
  49            Return:         void
  50            Others:         
  51          *************************************************************************************/
  52          void Delay(BYTE i)
  53          {
  54   1              while(i--);
C51 COMPILER V7.50   KW_RTC                                                                10/12/2007 17:05:49 PAGE 2   

  55   1      }
  56          
  57          /************************************************************************************* 
  58            Function:       RM_WriteDS1302
  59            Description:    DS1302写函数,用于写字节到指定地址
  60            Called By:      
  61            Input:          ADD @ BYTE: 地址
  62                                            DAT @ BYTE: 数据
  63            Output:         N/A
  64            Return:         void
  65            Others:  
  66                       _________________________________________________________________
  67            RST   ____|                                                                 |______
  68                        _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
  69            CLK   _____| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_________
  70            
  71            DAT   -----R---a---a---a---a---a---C---2---d---d---d---d---d---d---d---d-------------
  72          *************************************************************************************/
  73          void RM_WriteDS1302(BYTE ADD,BYTE DAT)
  74          {
  75   1              BYTE    i;
  76   1      
  77   1              RST1302_C;                                              // 复位信号清零
  78   1              _nop_();                        
  79   1              SCLK_C;                                                 // 时钟信号清零
  80   1              _nop_();
  81   1              RST1302_S;                                              // 复位信号置高
  82   1              Delay_1us(4);
  83   1              for(i=0;i<8;i++)                                // 发送8位地址
  84   1              {
  85   2              SCLK_C;                                         
  86   2                      Delay_1us(1);
  87   2                      if(ADD&0X01)                            // 发送一位到io信号线
  88   2                              IO1302_S;
  89   2                      else
  90   2                              IO1302_C;
  91   2                      ADD     >>= 1;                                  // 准备下一位
  92   2                      Delay(10);
  93   2                      SCLK_S;                                         // 时钟上升沿,数据被发出
  94   2                      Delay_1us(1);
  95   2              }
  96   1      
  97   1              Delay_1us(1);
  98   1              for(i=0;i<8;i++)                                // 发送8位数据,原理同地址
  99   1              {
 100   2              SCLK_C;
 101   2                      Delay_1us(1);
 102   2                      if(DAT&0X01)
 103   2                              IO1302_S;
 104   2                      else
 105   2                              IO1302_C;
 106   2                      DAT     >>=1;
 107   2                      Delay(10);
 108   2                      SCLK_S;
 109   2                      Delay_1us(1);
 110   2              }
 111   1              RST1302_C;                                              // 清复位
 112   1              Delay_1us(4);
 113   1              SCLK_C;                                                 // 清时钟
 114   1      }
 115          
 116          /************************************************************************************* 
C51 COMPILER V7.50   KW_RTC                                                                10/12/2007 17:05:49 PAGE 3   

 117            Function:       RM_ReadDS1302
 118            Description:    DS1302读函数,用于从指定地址读取数据
 119            Called By:      
 120            Input:          ADD @ BYTE: 地址
 121            Output:         N/A
 122            Return:         BYTE 数据
 123            Others:         
 124                      _________________________________________________________________
 125            RST  ____|                                                                 |______
 126                        _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
 127            CLK   _____| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_________
 128            
 129            DAT   -----R---a---a---a---a---a---C---2-d---d---d---d---d---d---d---d-------------
 130          *************************************************************************************/
 131          BYTE RM_ReadDS1302(BYTE ADD)
 132          {
 133   1         BYTE i,temp;
 134   1      
 135   1         temp=0;
 136   1         RST1302_C;
 137   1         _nop_();
 138   1         SCLK_C;
 139   1         _nop_();
 140   1         RST1302_S;
 141   1         Delay_1us(1);
 142   1         for(i=0;i<8;i++)                             //循环发送1位,共8位地址

⌨️ 快捷键说明

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