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

📄 sd2k3drv.lst

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


C51 COMPILER V7.09, COMPILATION OF MODULE SD2K3DRV
OBJECT MODULE PLACED IN E:\C51PRJ\APPNEW\SD2K3DRV.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\APPNEW\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_date                                                */
  26          /*         sd2300_write_config                                              */
  27          /*                                                                          */
  28          /* 参考资料:     http://www.whwave.com.cn                                  */
  29          /*                                                                          */
  30          /* 历史记录:                                                               */
  31          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
  32          /****************************************************************************/
  33          #include <reg52.h>
  34          #include <absacc.h>
  35          #include <intrins.h>
  36          #include "../includes/types.h"
  37          #include "../includes/sd2k3drv.h"
  38          
  39          sbit SDA = P0^6;   /* sd2300数据传送位 */
  40          sbit SCL = P0^7;   /* sd2300时钟控制位 */
  41          
  42          u_char date[7];
  43          
  44          /* sd2300延时       */
  45          void sd2300_wait(void)
  46          {
  47   1          _nop_();
  48   1          _nop_();
  49   1          _nop_();
  50   1          _nop_();
  51   1      }
  52          
  53          /* 开启sd2300总线   */
  54          void sd2300_start(void)
  55          {
C51 COMPILER V7.09   SD2K3DRV                                                              10/09/2005 20:45:31 PAGE 2   

  56   1          SDA = 1;
  57   1          SCL = 1;
  58   1          sd2300_wait();
  59   1          SDA = 0;
  60   1          sd2300_wait();
  61   1          SCL = 0;
  62   1      }
  63          
  64          /* 关闭sd2300总线   */
  65          void sd2300_stop(void)
  66          {
  67   1          SDA=0;
  68   1          SCL=0;
  69   1          sd2300_wait();
  70   1          SCL=1;
  71   1          sd2300_wait();
  72   1          SDA=1;
  73   1      }
  74          
  75          /* 发送ACK信号   */
  76          void sd2300_ack(void)
  77          {
  78   1          SDA=0;
  79   1          SCL=0;
  80   1          sd2300_wait();
  81   1          SCL=1;
  82   1          sd2300_wait();
  83   1          SCL=0;
  84   1      }
  85          
  86          /* 发送NOACK信号 */
  87          void sd2300_no_ack(void)
  88          {
  89   1          SDA=1;
  90   1          SCL=0;
  91   1          sd2300_wait();
  92   1          SCL=1;
  93   1          sd2300_wait();
  94   1          SCL=0;
  95   1      }
  96          
  97          /****************************************************************************/
  98          /* 函数名:sd2300_wait_ack                                                  */
  99          /* 功  能:等待ACK信号                                                      */
 100          /* 作  者:spot                                                             */
 101          /* 输  入:无                                                               */
 102          /* 输  出:1-ACK         0-ERROR                                            */
 103          /*                                                                          */
 104          /* 历史记录:                                                               */
 105          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 106          /****************************************************************************/
 107          bit sd2300_wait_ack(void)
 108          {
 109   1          u_char errtime=255;
 110   1      
 111   1          SCL=0;
 112   1          SDA=1;
 113   1          sd2300_wait();
 114   1          SCL=1;
 115   1          sd2300_wait();
 116   1      
 117   1          while(SDA)
C51 COMPILER V7.09   SD2K3DRV                                                              10/09/2005 20:45:31 PAGE 3   

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

⌨️ 快捷键说明

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