亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmc_drv.c

?? ATMEL 89c51sndc mp3外接硬盤源碼
?? C
字號:
/*C**************************************************************************
* NAME:         mmc_drv.c
*----------------------------------------------------------------------------
* Copyright (c) 2002 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-demo-hdd-0_2_0      
* REVISION:     1.4     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the MMC driver routines
*
* NOTES:
* Driver Configuration:
*   - None
* Global Variables:
*   - None
*****************************************************************************/

/*_____ I N C L U D E S ____________________________________________________*/

#include "config.h"                         /* system configuration */
#include "mmc_drv.h"                        /* mmc driver definition */


/*_____ M A C R O S ________________________________________________________*/


/*_____ D E F I N I T I O N ________________________________________________*/

static  Byte    mmc_state;
static  bit     mmc_ready;                  /* MMC in prog state */


/*_____ D E C L A R A T I O N ______________________________________________*/

void    mmc_set_prio (Byte);
void    mmc_send_cmd (Byte, Uint32, Byte);
bit     mmc_check_response (void);


/*F**************************************************************************
* NAME: mmc_set_prio
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Set the MMC controller priority interrupt
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
void mmc_set_prio (Byte priority)
{
  if ((priority == 1) || (priority == 3))     /* set LSB priority bit */
  {
    IPL1 |=  MSK_ESPI;
  }
  if ((priority == 2) || (priority == 3))     /* set MSB priority bit */
  {
    IPH1 |= MSK_ESPI;
  }
}


/*F**************************************************************************
* NAME: mmc_send_cmd
*----------------------------------------------------------------------------
* PARAMS:
*   index:    command index
*   argument: argument (32 bits) of the command to send
*   response: expected response to the command to send
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Send a command on the bus
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   The fifo lock flag is not tested it is under firmware responsability to
*   take care of inter-command delays 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
void mmc_send_cmd (Byte index, Uint32 argument, Byte response)
{
  MMCMD = index;
  MMCMD = ((Byte*)&argument)[0];
  MMCMD = ((Byte*)&argument)[1];
  MMCMD = ((Byte*)&argument)[2];
  MMCMD = ((Byte*)&argument)[3];

  switch (response)
  {
    case MMC_RESP_R1:
    case MMC_RESP_R4:
    case MMC_RESP_R5:
    {
      MMCON0 |= MSK_RFMT;                   /* set 48 bits response */
      MMCON0 &= ~MSK_CRCDIS;                /* set response with CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_RESP_R2:
    {
      MMCON0 &= ~(MSK_RFMT | MSK_CRCDIS);   /* set 136 bits response with CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_RESP_R3:
    {
      MMCON0 |= (MSK_RFMT | MSK_CRCDIS);    /* set 48 bits response without CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_NO_RESP:
    default:
    {
      MMCON1 |= MSK_CMDEN;
      MMCON1 &= ~MSK_CMDEN;                 /* send command without response */
      break;
    }
  }
}


/*F**************************************************************************
* NAME: mmc_send_scmd
*----------------------------------------------------------------------------
* PARAMS:
*   index:    command index
*   response: expected response to the command to send
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Send a short command on the bus
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   The fifo lock flag is not tested it is under firmware responsability to
*   take care of inter-command delays 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
void mmc_send_scmd (Byte index, Byte response)
{
  MMCMD = index;
  MMCMD = (Byte)MMC_NO_ARG;
  MMCMD = (Byte)MMC_NO_ARG;
  MMCMD = (Byte)MMC_NO_ARG;
  MMCMD = (Byte)MMC_NO_ARG;

  switch (response)
  {
    case MMC_RESP_R1:
    case MMC_RESP_R4:
    case MMC_RESP_R5:
    {
      MMCON0 |= MSK_RFMT;                   /* set 48 bits response */
      MMCON0 &= ~MSK_CRCDIS;                /* set response with CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_RESP_R2:
    {
      MMCON0 &= ~(MSK_RFMT | MSK_CRCDIS);   /* set 136 bits response with CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_RESP_R3:
    {
      MMCON0 |= (MSK_RFMT | MSK_CRCDIS);    /* set 48 bits response without CRC7 */
      MMCON1 |= (MSK_CMDEN|MSK_RESPEN);
      MMCON1 &= ~(MSK_CMDEN|MSK_RESPEN);    /* send command with response */
      break;
    }
    case MMC_NO_RESP:
    default:
    {
      MMCON1 |= MSK_CMDEN;
      MMCON1 &= ~MSK_CMDEN;                 /* send command without response */
      break;
    }
  }
}


/*F**************************************************************************
* NAME: mmc_check_response
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   MMC_ERR_RESP: no response or bad format received
*   MMC_RESP_OK:  response received
*----------------------------------------------------------------------------
* PURPOSE: 
*   Check command response 
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
bit mmc_check_response (void)
{
  if (Mmc_response_received())
  { /* response received */
    if ((MMCON0 & MSK_CRCDIS) != 0)
    {                                         /* CRC7 not computed */
      if ((MMSTA & MSK_RESPFS) != 0)
      {
        return (MMC_RESP_OK);
      }
      else
      {
        return (MMC_ERR_RESP);                /* format error */
      }
    }
    else
    {                                         /* CRC7 computed */
      if ((MMSTA & (MSK_RESPFS | MSK_CRC7S)) == (MSK_RESPFS | MSK_CRC7S))
      {
        return (MMC_RESP_OK);
      }
      else
      {
        return (MMC_ERR_RESP);                /* format or CRC7 error */
      }
    }
  }
  else
  { /* no response received */
    return (MMC_ERR_RESP);
  }
}


/*F**************************************************************************
* NAME: mmc_read_response
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   4-byte argument of the response
*----------------------------------------------------------------------------
* PURPOSE: 
*   Read command argument response 
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
Uint32 mmc_read_response (void)
{
Uint32  argument;

  ((Byte*)&argument)[0] = MMCMD;    /* dummy index read */
  ((Byte*)&argument)[0] = MMCMD;
  ((Byte*)&argument)[1] = MMCMD;
  ((Byte*)&argument)[2] = MMCMD;
  ((Byte*)&argument)[3] = MMCMD;

  return argument;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区视频在线播放| 成人妖精视频yjsp地址| 美女网站色91| 丁香啪啪综合成人亚洲小说| 在线日韩国产精品| 精品国产成人系列| 首页综合国产亚洲丝袜| 色婷婷一区二区三区四区| 26uuu国产日韩综合| 午夜亚洲福利老司机| 成av人片一区二区| 久久久久久久久久久黄色| 午夜精品久久久久久久久久久| 成人av电影免费在线播放| 精品国产成人系列| 久久精品国产亚洲aⅴ| 欧美日韩精品专区| 亚洲最新视频在线播放| 91首页免费视频| 国产精品理论在线观看| 国产91清纯白嫩初高中在线观看 | 亚洲免费在线观看视频| 国产在线精品一区二区不卡了 | 欧美一区二区视频在线观看2022 | 亚洲不卡一区二区三区| 91在线高清观看| 欧美激情一区三区| 国产福利不卡视频| 国产日韩三级在线| 国产夫妻精品视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 一区二区免费视频| 91首页免费视频| 一区二区欧美在线观看| 欧美色区777第一页| 亚洲国产美女搞黄色| 欧美视频一区二区| 日韩在线观看一区二区| 3751色影院一区二区三区| 丝袜亚洲另类欧美| 欧美电影免费观看高清完整版在线观看| 视频一区二区国产| 欧美电影免费观看高清完整版在线 | 欧美日韩一本到| 婷婷中文字幕综合| 欧美成人女星排行榜| 久久97超碰国产精品超碰| 久久久久高清精品| 成人av电影在线| 亚洲一区二区三区四区在线免费观看| 欧美日韩一区二区三区在线| 日韩电影一二三区| 精品成人一区二区| 不卡在线观看av| 亚洲香蕉伊在人在线观| 日韩欧美一二三区| 成人激情黄色小说| 午夜精品久久久久久久久久久| 日韩精品专区在线| 不卡av在线免费观看| 五月天激情综合| 久久久亚洲精品一区二区三区| 北岛玲一区二区三区四区| 亚洲一区二区精品3399| 精品国产91九色蝌蚪| 色欧美88888久久久久久影院| 日韩av一区二| 亚洲视频网在线直播| 欧美肥大bbwbbw高潮| 岛国精品在线播放| 日本午夜精品一区二区三区电影| 久久久青草青青国产亚洲免观| 91小视频在线观看| 麻豆国产精品777777在线| 国产精品剧情在线亚洲| 91精品国产综合久久小美女| 成人精品免费看| 美女被吸乳得到大胸91| 中文字幕一区二区三区色视频| 欧美一区午夜精品| 日本高清不卡一区| 国产宾馆实践打屁股91| 性久久久久久久久久久久| 国产精品久久久久永久免费观看 | 4438x成人网最大色成网站| 激情小说亚洲一区| 亚洲大尺度视频在线观看| 中文在线免费一区三区高中清不卡| 欧美性猛交xxxxxx富婆| 成人免费视频网站在线观看| 免费av网站大全久久| 亚洲午夜久久久久中文字幕久| 国产欧美视频在线观看| 日韩欧美aaaaaa| 欧美巨大另类极品videosbest| 一本大道综合伊人精品热热| 国产91露脸合集magnet| 久久99精品久久久久久| 午夜精品久久久久| 亚洲无人区一区| 亚洲精品ww久久久久久p站| 国产精品久久免费看| 国产日韩欧美综合一区| 精品日韩在线观看| 日韩欧美123| 欧美电视剧免费观看| 日韩欧美国产电影| 欧美一区二区三区视频| 在线播放/欧美激情| 欧美日韩国产欧美日美国产精品| 色网站国产精品| 色婷婷综合久久久| 欧美亚洲愉拍一区二区| 色94色欧美sute亚洲线路一ni| 91在线视频播放地址| 97aⅴ精品视频一二三区| aaa亚洲精品| 一本大道久久a久久综合| 99国产精品久久久久| 91亚洲国产成人精品一区二区三| 97久久久精品综合88久久| 91丨九色丨蝌蚪丨老版| 91麻豆蜜桃一区二区三区| 91国偷自产一区二区开放时间 | 久久av中文字幕片| 精品系列免费在线观看| 国产精品996| 成人国产精品视频| 色呦呦一区二区三区| 欧美亚洲愉拍一区二区| 日韩一区二区在线观看视频| 精品国产网站在线观看| 国产人成亚洲第一网站在线播放| 中文字幕va一区二区三区| 亚洲免费视频成人| 日韩高清在线不卡| 国产一区二区影院| 色综合欧美在线视频区| 在线视频中文字幕一区二区| 9191久久久久久久久久久| 久久免费电影网| 亚洲欧美一区二区不卡| 日本欧美一区二区三区乱码| 激情欧美日韩一区二区| 91日韩精品一区| 91麻豆精品国产91久久久久久久久| 久久综合久久99| 亚洲色图另类专区| 热久久国产精品| 高清av一区二区| 欧美日韩高清一区| 亚洲国产激情av| 午夜免费久久看| 成人网男人的天堂| 欧美电影一区二区三区| 中文字幕第一区二区| 日韩不卡手机在线v区| 成人免费的视频| 日韩欧美三级在线| 玉米视频成人免费看| 国产在线国偷精品免费看| 在线国产电影不卡| 国产欧美精品区一区二区三区 | 国产色产综合产在线视频| 一区二区三区免费网站| 国内精品伊人久久久久av影院| 色乱码一区二区三区88| 久久一日本道色综合| 亚洲成人久久影院| 91网站在线播放| 国产日韩欧美在线一区| 捆绑调教美女网站视频一区| 91视频在线看| 国产蜜臀97一区二区三区 | 欧美一级视频精品观看| 亚洲人成在线播放网站岛国| 国产原创一区二区三区| 911精品国产一区二区在线| 亚洲激情五月婷婷| www.亚洲激情.com| 久久综合久久99| 精品在线亚洲视频| av毛片久久久久**hd| 色欧美日韩亚洲| 国产精品久久久久久妇女6080| 日本道色综合久久| 久久精品视频在线免费观看| 人人精品人人爱| 69精品人人人人| 亚洲一区二区在线免费观看视频| 99久久99久久精品免费观看| 久久夜色精品一区| 狠狠色综合播放一区二区| 在线综合亚洲欧美在线视频| 五月天精品一区二区三区| 欧美性猛交xxxx黑人交| 亚洲国产一区二区在线播放| 色狠狠桃花综合| 亚洲最大成人网4388xx| 在线亚洲一区二区|