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

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

?? mmc_drv.c

?? atmel at89c51snd1 做mp3的源代碼
?? C
字號:
/*C**************************************************************************
* NAME:         mmc_drv.c
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.5     
*----------------------------------------------------------------------------
* 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:
    case SD_RESP_R6:
    {
      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一区二区三区免费野_久草精品视频
成人综合在线视频| 亚洲一区在线观看免费| 国产成人午夜精品5599 | 综合自拍亚洲综合图不卡区| 懂色av中文字幕一区二区三区 | 理论电影国产精品| 欧美大片一区二区| 国产不卡免费视频| 亚洲视频免费在线| 欧美美女直播网站| 国产一区二区在线观看视频| 日本一区二区视频在线| 在线中文字幕一区| 免费在线视频一区| 中文字幕免费观看一区| 在线视频一区二区免费| 久久国产精品免费| 国产精品区一区二区三| 欧美日韩国产一区| 国产一区二区按摩在线观看| 亚洲精品高清在线观看| 欧美v亚洲v综合ⅴ国产v| 成人av影院在线| 日韩国产欧美在线视频| 亚洲国产精品99久久久久久久久| 色婷婷精品久久二区二区蜜臀av| 麻豆精品在线看| 亚洲欧美欧美一区二区三区| 欧美成人一级视频| 色综合天天做天天爱| 久久爱www久久做| 亚洲精品亚洲人成人网在线播放| 日韩精品在线网站| 91久久精品一区二区| 国产伦精品一区二区三区视频青涩| 中文字幕在线一区二区三区| 欧美一区二区三区公司| av一区二区三区四区| 久久精品国产99久久6| 亚洲精品欧美激情| 久久精品日产第一区二区三区高清版| 欧美揉bbbbb揉bbbbb| 国产成人日日夜夜| 久久电影网站中文字幕| 亚洲综合区在线| 国产精品天美传媒沈樵| 精品成人一区二区三区| 欧美精品精品一区| 色综合久久中文综合久久牛| 国产在线日韩欧美| 午夜不卡av在线| 一区二区三区小说| 国产精品久久久久毛片软件| 26uuu欧美| 欧美一区二区三区四区高清 | 日韩中文字幕亚洲一区二区va在线| 久久日一线二线三线suv| 欧美丰满美乳xxx高潮www| 色综合久久久久网| 成人av资源在线| 国产激情一区二区三区四区| 蜜臀av在线播放一区二区三区 | 久久se这里有精品| 日本成人在线一区| 午夜精品一区二区三区免费视频 | 国产精品18久久久久| 日本午夜精品一区二区三区电影| 亚洲夂夂婷婷色拍ww47 | 欧美艳星brazzers| 91浏览器入口在线观看| 99国产精品99久久久久久| 99久久精品免费精品国产| av综合在线播放| 99视频精品全部免费在线| 成人激情视频网站| 91麻豆精品视频| 在线免费观看成人短视频| 在线观看国产精品网站| 在线一区二区三区做爰视频网站| 色综合激情五月| 日本韩国欧美在线| 欧美妇女性影城| 日韩欧美一级二级三级久久久| 日韩午夜小视频| 精品国产免费久久| 中文字幕高清不卡| 亚洲日本va午夜在线电影| 亚洲精品乱码久久久久久久久| 亚洲人成精品久久久久| 亚洲免费在线播放| 亚洲国产欧美在线| 六月丁香婷婷久久| 国产成人免费av在线| 成人免费视频网站在线观看| 99精品视频在线观看免费| 91国产视频在线观看| 在线播放日韩导航| 精品久久久影院| 中文字幕在线不卡一区| 亚洲综合一区二区三区| 麻豆国产一区二区| 国产91在线看| 欧美中文一区二区三区| 日韩欧美的一区二区| 国产精品无圣光一区二区| 亚洲永久精品大片| 久久精品二区亚洲w码| 高清日韩电视剧大全免费| 91黄色免费看| 26uuu另类欧美| 亚洲另类在线制服丝袜| 久久99蜜桃精品| 色一情一伦一子一伦一区| 91精品国产入口| 亚洲欧洲美洲综合色网| 日韩成人免费电影| 成人午夜av影视| 制服丝袜一区二区三区| 国产精品欧美一区二区三区| 午夜成人免费电影| 成人av资源站| 日韩欧美电影一二三| 一个色综合网站| 国产精品资源在线看| 欧美日韩中字一区| 国产精品久久看| 麻豆成人免费电影| 日本久久一区二区三区| 国产喂奶挤奶一区二区三区| 亚洲一级二级在线| 成人av资源在线观看| 精品国产乱码久久久久久浪潮| 亚洲欧美激情小说另类| 国产精品亚洲成人| 91精品国产综合久久久久久久| 国产精品国产三级国产a| 国内成人免费视频| 制服丝袜亚洲精品中文字幕| 亚洲精品日韩专区silk| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品乱码一区二三区小蝌蚪| 久久久欧美精品sm网站| 亚洲在线视频免费观看| 国产成人av电影在线观看| 欧美福利一区二区| 亚洲一区二区三区四区在线观看| 国产激情精品久久久第一区二区| 欧美精品一二三四| 亚洲午夜影视影院在线观看| 不卡一二三区首页| 中文字幕免费观看一区| 国内一区二区视频| 日韩欧美123| 美女网站色91| 欧美一区中文字幕| 亚洲成人动漫精品| 欧美日韩一二区| 一区av在线播放| 日本精品一级二级| 中文天堂在线一区| 成人一区二区三区在线观看| 久久天天做天天爱综合色| 精品亚洲国产成人av制服丝袜| 欧美一二三四区在线| 日韩一区在线免费观看| 日韩精品一区二区三区在线| 国产亚洲va综合人人澡精品 | 亚洲乱码一区二区三区在线观看| 国产成人免费在线视频| 欧美不卡在线视频| 激情伊人五月天久久综合| 日韩欧美一区二区视频| 麻豆91精品视频| 久久网这里都是精品| 国产91丝袜在线观看| 中文字幕在线不卡| 在线观看区一区二| 午夜精品成人在线| 69堂精品视频| 久久99精品国产91久久来源| 精品国产乱码久久| 丰满亚洲少妇av| 亚洲丝袜自拍清纯另类| 欧洲精品中文字幕| 日本美女视频一区二区| 精品国产污污免费网站入口 | 精品在线免费观看| 久久久噜噜噜久久中文字幕色伊伊| 国产成人精品1024| 最新欧美精品一区二区三区| 欧美色爱综合网| 国内外精品视频| 亚洲人成7777| 成人午夜短视频| 国产自产视频一区二区三区| 婷婷开心激情综合| 天堂精品中文字幕在线| 精品三级在线观看| 成人免费av资源| 五月婷婷久久丁香|