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

📄 sd2k3drv.lst

📁 压缩包中包括多个常用的汇编
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE SD2K3DRV
OBJECT MODULE PLACED IN E:\C51PRJ\RTIMELED\SD2K3DRV.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\RTIMELED\SD2K3DRV.C DB SB OE

line level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*               Copyright (c) 2005, 老树工作室                             */
   4          /*                   All rights reserved.                                   */
   5          /*                                                                          */
   6          /*      http://www.saintone.net      Email:hxm0902@163.com                  */
   7          /*      QQ:112431149                 Tel:010-62966630                       */
   8          /*                                                                          */
   9          /****************************************************************************/
  10          /****************************************************************************/
  11          /* 文件名:sd2300drv.c                                                      */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:sd2300驱动代码                                                   */
  14          /* 作  者:spot                                                             */
  15          /* 函  数:                                                                 */
  16          /*         sd2300_wait                                                      */
  17          /*         sd2300_start                                                     */
  18          /*         sd2300_stop                                                      */
  19          /*         sd2300_ack                                                       */
  20          /*         sd2300_no_ack                                                    */
  21          /*         sd2300_wait_ack                                                  */
  22          /*         sd2300_send_byte                                                 */
  23          /*         sd2300_receive_byte                                              */
  24          /*         sd2300_read_date                                                 */
  25          /*         sd2300_write_config                                              */
  26          /*                                                                          */
  27          /* 参考资料:     http://www.whwave.com.cn                                  */
  28          /*                                                                          */
  29          /* 历史记录:                                                               */
  30          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
  31          /****************************************************************************/
  32          #include <reg52.h>
  33          #include <absacc.h>
  34          #include <intrins.h>
  35          #include "../includes/types.h"
  36          
  37          sbit SDA = P0^6;                       /* sd2300数据传送位        */
  38          sbit SCL = P0^7;                       /* sd2300时钟控制位        */
  39          
  40          /* 函数声明 */
  41          void sd2300_wait(void);                /* sd2300延时              */
  42          void sd2300_start(void);               /* 开启sd2300总线          */
  43          void sd2300_stop(void);                /* 关闭sd2300总线          */
  44          void sd2300_ack(void);                 /* 发送ACK信号             */
  45          void sd2300_no_ack(void);              /* 发送NOACK信号           */
  46          bit sd2300_wait_ack(void);             /* 等待ACK信号             */
  47          void sd2300_send_byte(u_char demand);  /* MCU向sd2300发送一个字节 */
  48          u_char sd2300_receive_byte(void);      /* MCU从sd2300接收一个字节 */
  49          void sd2300_read_date(void);           /* 读取sd2300时钟数据      */
  50          void sd2300_write_config(void);        /* 写sd2300控制寄存器      */
  51          
  52          void display_time(u_char current_time[2]);/* 在数码管上显示当前时间 */
  53          
  54          extern void load_number(u_char number, bit dp);
  55          extern void send_latch_clock(void);
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 2   

  56          extern void clear_led(void);
  57          /* 声明结束 */
  58          
  59          u_char date[7];
  60          
  61          /* sd2300延时       */
  62          void sd2300_wait(void)
  63          {
  64   1          _nop_();
  65   1          _nop_();
  66   1          _nop_();
  67   1          _nop_();
  68   1      }
  69          
  70          /* 开启sd2300总线   */
  71          void sd2300_start(void)
  72          {
  73   1          SDA = 1;
  74   1          SCL = 1;
  75   1          sd2300_wait();
  76   1          SDA = 0;
  77   1          sd2300_wait();
  78   1          SCL = 0;
  79   1      }
  80          
  81          /* 关闭sd2300总线   */
  82          void sd2300_stop(void)
  83          {
  84   1          SDA=0;
  85   1          SCL=0;
  86   1          sd2300_wait();
  87   1          SCL=1;
  88   1          sd2300_wait();
  89   1          SDA=1;
  90   1      }
  91          
  92          /* 发送ACK信号   */
  93          void sd2300_ack(void)
  94          {
  95   1          SDA=0;
  96   1          SCL=0;
  97   1          sd2300_wait();
  98   1          SCL=1;
  99   1          sd2300_wait();
 100   1          SCL=0;
 101   1      }
 102          
 103          /* 发送NOACK信号 */
 104          void sd2300_no_ack(void)
 105          {
 106   1          SDA=1;
 107   1          SCL=0;
 108   1          sd2300_wait();
 109   1          SCL=1;
 110   1          sd2300_wait();
 111   1          SCL=0;
 112   1      }
 113          
 114          /****************************************************************************/
 115          /* 函数名:sd2300_wait_ack                                                  */
 116          /* 功  能:等待ACK信号                                                      */
 117          /* 作  者:spot                                                             */
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 3   

 118          /* 输  入:无                                                               */
 119          /* 输  出:1-ACK         0-ERROR                                            */
 120          /*                                                                          */
 121          /* 历史记录:                                                               */
 122          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 123          /****************************************************************************/
 124          bit sd2300_wait_ack(void)
 125          {
 126   1          u_char errtime=255;
 127   1      
 128   1          SCL=0;
 129   1          SDA=1;
 130   1          sd2300_wait();
 131   1          SCL=1;
 132   1          sd2300_wait();
 133   1      
 134   1          while(SDA)
 135   1          {
 136   2              errtime--;
 137   2              if(!errtime)
 138   2                  return 0;
 139   2          }
 140   1      
 141   1          SCL=0;
 142   1          return 1;
 143   1      }
 144          
 145          /****************************************************************************/
 146          /* 函数名:sd2300_send_byte                                                 */
 147          /* 功  能:MCU向sd2300设备发送一个字节                                      */
 148          /* 作  者:spot                                                             */
 149          /* 输  入:                                                                 */
 150          /*         demand                  待发送命令或数据                         */
 151          /*                                                                          */
 152          /* 输  出:无                                                               */
 153          /*                                                                          */
 154          /* 历史记录:                                                               */
 155          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 156          /****************************************************************************/
 157          void sd2300_send_byte(u_char demand)
 158          {
 159   1          u_char i = 8;
 160   1      
 161   1          while(i--)
 162   1          {
 163   2              SCL = 0;
 164   2              _nop_();
 165   2              SDA = (bit)(demand&0x80);
 166   2              demand <<= 1;
 167   2              sd2300_wait();
 168   2              SCL = 1;
 169   2              sd2300_wait();
 170   2          }
 171   1          SCL=0;   
 172   1      }
 173          
 174          /****************************************************************************/

⌨️ 快捷键说明

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