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

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

?? mmc_drv.c

?? 8051實現的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一区二区三区免费野_久草精品视频
亚洲一区二区三区视频在线播放| 欧美一区二区视频网站| 国产欧美日韩中文久久| 国产成人免费xxxxxxxx| 国产视频一区在线观看 | 亚洲视频一二区| 一道本成人在线| 亚洲二区在线视频| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区在线播放| 欧美日韩免费不卡视频一区二区三区| 午夜欧美一区二区三区在线播放| 欧美一区二区播放| 国产suv一区二区三区88区| 国产精品乱码一区二三区小蝌蚪| 成人高清在线视频| 一区二区三区四区乱视频| 在线电影院国产精品| 国模一区二区三区白浆| 国产精品美女久久久久高潮| 色综合久久66| 九色综合国产一区二区三区| 中文字幕一区二区三区色视频| 欧美日韩精品系列| 国产伦精品一区二区三区视频青涩| 国产精品久久二区二区| 欧美精品777| 成人毛片在线观看| 爽爽淫人综合网网站| 国产欧美一区二区精品仙草咪| 欧美在线短视频| 国产尤物一区二区| 一区二区三区不卡视频在线观看| 日韩欧美亚洲一区二区| 99国产精品99久久久久久| 男人的j进女人的j一区| 国产精品九色蝌蚪自拍| 综合色中文字幕| 91精品国产综合久久福利 | 亚洲啪啪综合av一区二区三区| 欧美日韩大陆一区二区| 丰满白嫩尤物一区二区| 三级一区在线视频先锋 | 欧美探花视频资源| 丰满亚洲少妇av| 美女一区二区三区| 亚洲精品久久7777| 中文字幕第一区二区| 日韩欧美专区在线| 欧美视频在线播放| 色综合咪咪久久| 国产成a人亚洲精品| 看电视剧不卡顿的网站| 午夜一区二区三区视频| 日韩一区在线免费观看| 亚洲国产高清aⅴ视频| 欧美xxxxxxxx| 欧美一区2区视频在线观看| 欧美在线免费观看亚洲| 99国产一区二区三精品乱码| 国产成人综合视频| 看电视剧不卡顿的网站| 午夜精品久久久久久久蜜桃app| 最好看的中文字幕久久| 欧美国产成人精品| 国产视频一区在线观看 | 色诱视频网站一区| 99精品视频免费在线观看| 国产91露脸合集magnet| 国产福利一区在线观看| 国产精品性做久久久久久| 国产精品小仙女| 成人性生交大片免费看在线播放| 国产精品888| 国产福利91精品一区二区三区| 六月丁香综合在线视频| 久久超级碰视频| 国产美女主播视频一区| 风间由美一区二区av101| 成人污视频在线观看| 成人免费视频caoporn| 成人网在线播放| 一本大道av一区二区在线播放| 色屁屁一区二区| 欧美午夜电影在线播放| 91精品国产丝袜白色高跟鞋| 日韩欧美电影在线| 国产午夜精品福利| 亚洲欧美区自拍先锋| 伊人夜夜躁av伊人久久| 亚洲国产视频a| 美女视频黄久久| 国产一区二区三区日韩| 成人黄色大片在线观看| 欧美亚洲国产一区在线观看网站| 欧美日韩一卡二卡三卡| 日韩精品一区二| 中文字幕二三区不卡| 精东粉嫩av免费一区二区三区| 国模冰冰炮一区二区| 国产91精品久久久久久久网曝门| 99久久精品国产一区二区三区| 欧美日韩一区二区电影| 26uuu国产电影一区二区| 国产精品三级电影| 一区二区三区在线免费| 婷婷综合五月天| 福利一区在线观看| 精品婷婷伊人一区三区三| www国产成人免费观看视频 深夜成人网| 欧美极品美女视频| 亚洲第一电影网| 国产91精品精华液一区二区三区| 欧美在线不卡视频| 欧美精品一区二区高清在线观看| 中文字幕一区二区三区不卡| 午夜日韩在线电影| 成人网页在线观看| 欧美一区二区三区四区久久| 欧美激情在线免费观看| 日韩精品每日更新| caoporen国产精品视频| 欧美一级高清大全免费观看| 国产精品视频你懂的| 首页亚洲欧美制服丝腿| gogogo免费视频观看亚洲一| 日韩精品一区二区三区中文精品| 自拍偷拍欧美激情| 国产一区二区三区免费播放| 欧美日韩三级一区| 国产精品不卡一区二区三区| 蜜臀av国产精品久久久久| 成人国产精品免费观看视频| 日韩美女视频在线| 亚洲一区二区精品视频| 成人国产精品免费网站| 欧美精品一区二区三区一线天视频| 亚洲成人综合视频| a亚洲天堂av| 国产女主播视频一区二区| 欧美bbbbb| 欧美三级视频在线播放| 亚洲欧洲av一区二区三区久久| 国产美女精品人人做人人爽| 欧美高清激情brazzers| 一区二区三区色| 波多野结衣欧美| 国产欧美精品一区二区三区四区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美视频完全免费看| 依依成人综合视频| 色综合网色综合| 国产精品国产馆在线真实露脸| 国产激情精品久久久第一区二区| 91精品国产综合久久久久久久久久| 樱桃国产成人精品视频| 91在线观看免费视频| 国产精品盗摄一区二区三区| 国产成人精品影院| 亚洲国产高清不卡| 成人午夜精品一区二区三区| 国产人成亚洲第一网站在线播放| 国产一区啦啦啦在线观看| 欧美大片一区二区| 精品一区二区三区免费观看 | 国产偷国产偷亚洲高清人白洁| 精品一区在线看| 日韩精品一区二区三区在线| 蜜乳av一区二区三区| 日韩欧美国产麻豆| 精品夜夜嗨av一区二区三区| 精品少妇一区二区三区免费观看 | 国产激情一区二区三区四区 | 国产成人精品影视| 国产性天天综合网| 国产成人在线影院| 国产精品国产三级国产三级人妇 | 日本精品一区二区三区高清 | 日本vs亚洲vs韩国一区三区二区| 欧美精品在线观看播放| 免费在线看成人av| 精品免费99久久| 国产黄人亚洲片| 国产精品久久久久久久久快鸭| 972aa.com艺术欧美| 一区二区成人在线视频| 欧美日韩国产高清一区二区三区 | 国内久久精品视频| 中文字幕欧美区| 99精品在线观看视频| 一区二区三区精品| 69堂国产成人免费视频| 久久成人18免费观看| 国产精品久久久久久久浪潮网站| 91黄色免费网站| 蜜乳av一区二区| 亚洲私人影院在线观看| 91麻豆精品91久久久久久清纯 | 亚洲免费资源在线播放| 欧美午夜精品一区二区三区|