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

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

?? d12_operation.c

?? U盤(實際是USB SD卡讀卡器)的制作方案。 硬件構成:ATmega168+PDIUSBD12+SD 內附GCC源碼和原理圖。 開發環境是AvrStudio4.13 b528 + WinAVR
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "D12_Operation.h"
#include"MMC_SD.h"

#define NOP8() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
#define NOP7() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
#define NOP6() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
#define NOP5() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
#define NOP4() asm("nop");asm("nop");asm("nop");asm("nop")
#define NOP3() asm("nop");asm("nop");asm("nop")
#define NOP2() asm("nop");asm("nop")
#define NOP1() asm("nop")

void D12_Delay(U8 n)
{
	while(n--);
}

void D12_PORT_INI()
{
	D12_CS_PORT |= 1<<D12_CS_BIT;
	D12_CS_DDR |= 1<<D12_CS_BIT;

	D12_INT_PORT |= 1<<D12_INT_BIT;
	D12_INT_DDR &= ~(1<<D12_INT_BIT);

	D12_WR_PORT |= 1<<D12_WR_BIT;
	D12_WR_DDR |= 1<<D12_WR_BIT;
	
	D12_RD_PORT |= 1<<D12_RD_BIT;
	D12_RD_DDR |= 1<<D12_RD_BIT;

	D12_A0_PORT |= 1<<D12_A0_BIT;
	D12_A0_DDR |= 1<<D12_A0_BIT;

}

/**************************************************************/
/* 函數名: U8 D12_Select_Endpoint(U8 Endpoint)                */
/* 功能  : 選擇端點                                           */
/* 返回值: bit0: 1 緩沖區滿 0 empty ; bit1: 1 端點停止        */
/* 參數  : 端點值 00H~05H                                     */
/**************************************************************/
U8 D12_Select_Endpoint(U8 Endpoint)
{
	U8 temp;

	NOP4();

	D12_OUTPUT_MODE();
	D12_OUTPUT = Endpoint;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_INPUT_MODE();
	D12_DAT_RD_L();	
	NOP3();
	temp = D12_INPUT;
	D12_DAT_RD_H();

	NOP4();

	return temp;
}

/***************************************************************/
/* 函數名  : void D12_Set_Endpoint_Status(U8 Endpoint,U8 Status);*/
/* 功能    : 設置端點狀態                                      */
/* 返回值  : 無                                                */
/* 參數    : 端點號+狀態                                       */
/* Endpoint:                                                   */
/*          0:控制輸出  1:控制輸入   2:端點1輸出               */
/*          3:端點1輸入 4:端點2輸出  5:端點2輸入               */
/* Status:                                                     */
/*          0:不停止 1:停止                                    */
/***************************************************************/
void D12_Set_Endpoint_Status(U8 Endpoint,U8 Status)
{
	NOP4();

	D12_OUTPUT_MODE();
	D12_OUTPUT = Endpoint+0x40;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = Status;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP4();
}


/***************************************************************/
/* 函數名: void D12_Set_Address(U8 Addr,U8 Enable)             */
/* 功能  : 設置地址/使能                                       */
/* 返回值: 無                                                  */
/* 參數  : Addr Enable                                         */
/* Addr  : 地址值0~127                                         */
/* Enable: 使能位                                              */
/***************************************************************/
void D12_Set_Address_Enable(U8 Addr,U8 Enable)
{

	NOP4();

	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xd0;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = Addr|(Enable<<7);
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP4();
}


/***************************************************************/
/* 函數名: void D12_Set_Endpoint_Enable(U8 Enable)             */
/* 功能  : 設置端點使能                                        */
/* 返回值: 無                                                  */
/* 參數  : Enable                                              */
/* Enable :                                                    */
/*         bit0: 普通/同步端點使能                             */
/***************************************************************/
void D12_Set_Endpoint_Enable(U8 Enable)
{
	NOP4();
	
	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xd8;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = Enable;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP4();
}

/***************************************************************/
/* 函數名: void D12_Set_DMA(U8 DMA)                            */
/* 功能  : 設置DMA                                             */
/* 返回值: 無                                                  */
/* 參數  : DMA                                                 */
/* DMA   :                                                     */
/*        bit0~1: DMA突發串長度:                               */
/*                00 單周期DMA                                 */
/*                01 4 周期DMA                                 */
/*                10 8 周期DMA                                 */
/*                11 16周期DMA                                 */
/*        bit2  : DMA使能   1:使能     0:停止                  */
/*        bit3  : DMA方向   1:RAM->D12 0:D12->RAM              */
/*        bit4  : 自動重裝  1:使能     0:禁止                  */
/*        bit5  : 中斷腳模式1:SOF模式  0:正常模式              */
/*        bit6  : 端點索引4中斷模式                            */
/*        bit7  : 端點索引5中斷模式                            */
/***************************************************************/
void D12_Set_DMA(U8 DMA)
{
	NOP4();

	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xfb;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = DMA;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP4();
}

/***************************************************************/
/* 函數名: U8 D12_Get_DMA(void)                                */
/* 功能  : 讀DMA設置值                                         */
/* 返回值: DMA值                                               */
/* 參數  : 無                                                  */
/***************************************************************/
U8 D12_Get_DMA(void)
{
	U8 temp;
	NOP4();

	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xfb;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_INPUT_MODE();
	D12_CMD_RD_L();
	NOP3();
	temp = D12_INPUT;
	D12_CMD_RD_H();

	NOP4();
	return temp;
}

/***************************************************************/
/* 函數名: void D12_Set_Mode(U8 Val1, U8 Val2)                 */
/* 功能  : 設置模式                                            */
/* 返回值: 無                                                  */
/* 參數  : Val1,Val2                                           */
/* Val1  :                                                     */
/*         bit0: 保留                                          */
/*         bit1: 無LazyClock                                   */
/*         bit2: 時鐘運行                                      */
/*         bit3: 中斷模式                                      */
/*         bit4: SoftConect                                    */
/*         bit5: 保留                                          */
/*         bit6&7: 端點配置                                    */
/*                00 非同步模式                                */
/*                01 同步輸出模式                              */
/*                10 同步輸入模式                              */
/*                11 同步輸入/輸出模式                         */
/* Val2  :                                                     */
/*         bit0~3: 時鐘分頻系數       48MHz/(N-1)              */
/*         bit4~5: 保留                                        */
/*         bit6  : SET_TO_ONE                                  */
/*         bit7  : SOF_ONLY中斷模式                            */
/***************************************************************/
void D12_Set_Mode(U8 Val1, U8 Val2)
{
	NOP4();
	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xf3;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = Val1;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP6();

	D12_OUTPUT = Val2;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP4();
}


/***************************************************************/
/* 函數名: void D12_Send_Resume(void)                          */
/* 功能  : 發送恢復                                            */
/* 返回值: 無                                                  */
/* 參數  : 無                                                  */
/***************************************************************/
void D12_Send_Resume(void)
{
	NOP4();
	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xf6;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP4();
}

/***************************************************************/
/* 函數名: void D12_Ack_Endpoint(U8 Endpoint)                  */
/* 功能  : 端點應答處理                                        */
/* 返回值: 無                                                  */
/* 參數  : Endpoint 端點號                                     */
/***************************************************************/
void D12_Ack_Endpoint(U8 Endpoint)
{
	NOP4();
	D12_OUTPUT_MODE();
	D12_OUTPUT = Endpoint;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_OUTPUT = 0xf1;
	D12_CMD_WR_L();
	D12_CMD_WR_H();
	NOP4();
	if(!Endpoint)
		D12_Clear_Buffer();
}


/***************************************************************/
/* 函數名: U16 D12_Read_Chip_ID(void)                          */
/* 功能  : 讀芯片ID 1210                                       */
/* 返回值: temp id號                                           */
/* 參數  : 無                                                  */
/***************************************************************/
U16 D12_Read_Chip_ID(void)
{

	U16 temp;
	NOP4();
	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xfd;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_INPUT_MODE();
	D12_DAT_RD_L();
	NOP3();
	temp = D12_INPUT;
	D12_DAT_RD_H();

	NOP6();

	D12_DAT_RD_L();
	NOP3();
	temp = temp<<8|D12_INPUT;
	D12_DAT_RD_H();

	NOP4();
	return temp;	
}


/***************************************************************/
/* 函數名: U8 D12_Read_Endpoint(U8 Endpoint,U8 * Buffer,U8 Count)*/
/* 功能  : 讀取端點數據                                        */
/* 返回值: 1正常 0無數據                                       */
/* 參數  :                                                     */
/* Endpoint:端點號                                             */
/* Buffer  :外部緩沖區指針                                     */
/* Count   :數據長度                                           */
/***************************************************************/
U8 D12_Read_Endpoint(U8 Endpoint,U8 * Buffer,U8 Count)
{
	U8 temp;
	NOP4();
	while(!(D12_Select_Endpoint(Endpoint)&1));
	
	D12_Read_Last_Transaction_Status(Endpoint);


	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xf0;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();

	D12_INPUT_MODE();
	D12_CMD_RD_L();
	NOP3();
	temp = D12_INPUT;
	D12_CMD_RD_H();

	NOP6();

	D12_CMD_RD_L();
	NOP3();
	temp = D12_INPUT;
	D12_CMD_RD_H();


	if(temp<Count)Count = temp;
	temp = Count;
	while(Count)
	{
		NOP4();
		D12_CMD_RD_L();
		NOP3();
		*Buffer++ = D12_INPUT;
		D12_CMD_RD_H();
		Count--;
	}
	NOP4();
	D12_Clear_Buffer();
	return temp;	
}


/**********************************************************************/
/* 函數名: void D12_Write_Endpoint(U8 Endpoint, U8 * Buffer, U8 Count)*/
/* 功能  : 把數據寫入端點                                             */
/* 返回值: 無                                                         */
/* 參數  :                                                            */
/* Endpoint:端點號                                                    */
/* Buffer  :外部緩沖區指針                                            */
/* Count   :數據長度                                                  */
/**********************************************************************/
void D12_Write_Endpoint(U8 Endpoint, U8 * Buffer, U8 Count)
{
	NOP4();
	while(1)//等待緩沖區為空
	{
		if(!(D12_Select_Endpoint(Endpoint)&1))break;
	}
	
	D12_Read_Last_Transaction_Status(Endpoint);

	D12_OUTPUT_MODE();
	D12_OUTPUT = 0xf0;
	D12_CMD_WR_L();
	D12_CMD_WR_H();

	NOP7();
	
	D12_OUTPUT = 0;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	NOP6();
	
	D12_OUTPUT = Count;
	D12_DAT_WR_L();
	D12_DAT_WR_H();

	while(Count)
	{
		NOP6();
		D12_OUTPUT = *Buffer++;
		D12_DAT_WR_L();
		D12_DAT_WR_H();

		Count--;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说综合欧美亚洲| 欧美精品久久99久久在免费线| 99久久精品国产一区| 欧美一级二级三级乱码| 综合久久综合久久| 国产剧情一区在线| 欧美高清你懂得| 一区二区三区四区在线免费观看| 国产精品一区二区黑丝| 欧美一区二区视频网站| 亚洲二区在线观看| 91小视频在线免费看| 亚洲精品在线观| 久草热8精品视频在线观看| 欧美日韩高清影院| 一区二区三区在线观看视频| www.久久久久久久久| 久久久久国产精品麻豆| 激情综合五月天| 欧美一级欧美三级| 丝袜美腿成人在线| 欧美这里有精品| 亚洲色图第一区| 成人精品视频一区二区三区| 久久久国产精品麻豆| 国内精品久久久久影院薰衣草| 欧美精品一级二级三级| 亚洲123区在线观看| 欧美性videosxxxxx| 一区二区三区在线高清| 在线看一区二区| 亚洲高清免费视频| 欧美日韩成人综合在线一区二区| 亚洲自拍偷拍九九九| 在线视频一区二区三区| 亚洲va国产va欧美va观看| 日本韩国欧美一区| 亚洲国产另类精品专区| 欧美日韩一区二区在线观看| 亚洲电影第三页| 欧美女孩性生活视频| 亚洲电影第三页| 日韩亚洲欧美在线观看| 激情图区综合网| 久久九九久精品国产免费直播| 国产精品亚洲成人| 亚洲欧美日韩国产综合| 一本色道久久综合狠狠躁的推荐 | 国产精品天干天干在观线| 国产99久久久国产精品潘金网站| 久久精品日韩一区二区三区| 不卡欧美aaaaa| 亚洲精品免费视频| 在线视频欧美区| 看片网站欧美日韩| 国产欧美一区二区精品性色 | 国产成人免费9x9x人网站视频| 欧美激情一区二区三区全黄| 色综合天天在线| 男女男精品网站| 国产喂奶挤奶一区二区三区| 91麻豆国产精品久久| 日韩成人av影视| 国产清纯美女被跳蛋高潮一区二区久久w| 成人动漫中文字幕| 亚洲图片欧美综合| 2021中文字幕一区亚洲| 一本大道久久a久久综合婷婷| 日韩av一二三| 亚洲色欲色欲www| 欧美va天堂va视频va在线| www.欧美日韩| 狠狠色狠狠色综合日日91app| 亚洲欧洲日韩综合一区二区| 日韩一区二区在线观看视频播放| 波多野结衣中文字幕一区| 日本欧美大码aⅴ在线播放| 国产精品国产三级国产普通话三级 | 日本一区二区三区在线不卡| 在线亚洲一区二区| 国产精品白丝jk白祙喷水网站| 亚洲一二三专区| 国产精品久久久久久久裸模| 欧美电视剧免费观看| 在线观看视频一区二区 | 国产欧美日韩久久| 91精品国产一区二区人妖| 99久久久久免费精品国产| 蜜桃视频免费观看一区| 亚洲美女视频在线观看| 久久久久国产精品麻豆ai换脸| 337p亚洲精品色噜噜| 91啦中文在线观看| 国产成人精品一区二区三区四区 | 不卡一卡二卡三乱码免费网站| 麻豆成人综合网| 亚洲电影中文字幕在线观看| 综合久久久久久| 日本一区二区高清| 久久久久国产免费免费 | 欧美一区二区不卡视频| 在线精品视频一区二区| 99久久免费视频.com| 国产精品77777| 国产乱码一区二区三区| 狠狠色综合播放一区二区| 美女性感视频久久| 久久99深爱久久99精品| 免费在线看一区| 免费高清视频精品| 秋霞av亚洲一区二区三| 日韩在线一区二区三区| 日本在线不卡视频| 日本v片在线高清不卡在线观看| 日韩精品一区第一页| 日本aⅴ免费视频一区二区三区| 亚洲国产综合91精品麻豆| 亚洲午夜久久久久久久久电影院 | 91麻豆精品国产91久久久久久久久| 欧美这里有精品| 精品视频1区2区| 51久久夜色精品国产麻豆| 91精品国产黑色紧身裤美女| 欧美一区二区二区| 欧美精品一区二区三| 日韩免费在线观看| 国产日韩精品久久久| 中文字幕欧美激情| 亚洲伦在线观看| 日韩激情在线观看| 国产精品99久久久久久似苏梦涵| 国产99久久久国产精品潘金网站| 成人av综合一区| 欧美撒尿777hd撒尿| 精品理论电影在线观看 | 亚州成人在线电影| 免费观看成人av| 国产成人精品一区二区三区网站观看| 成人免费不卡视频| 欧美在线综合视频| 精品国产三级电影在线观看| 国产精品三级av| 午夜精品爽啪视频| 国产麻豆精品一区二区| 91影视在线播放| 在线不卡的av| 亚洲国产精品t66y| 亚洲777理论| 国产电影一区在线| 欧美综合天天夜夜久久| 日韩欧美电影一二三| 国产精品国产自产拍在线| 亚洲成人免费在线| 国产99精品国产| 91精品综合久久久久久| 国产精品理论在线观看| 美脚の诱脚舐め脚责91| 91香蕉视频mp4| 欧美电影免费观看高清完整版在| 国产精品嫩草99a| 美女国产一区二区三区| 色婷婷av一区二区三区之一色屋| 精品理论电影在线| 亚洲精品一卡二卡| 国产99久久久国产精品| 日韩亚洲欧美在线| 亚洲一区二区综合| 不卡的电视剧免费网站有什么| 欧美一区二区视频免费观看| 亚洲女性喷水在线观看一区| 狠狠狠色丁香婷婷综合激情| 欧美人妇做爰xxxⅹ性高电影| 亚洲欧洲成人精品av97| 国内精品久久久久影院薰衣草| 欧美日韩午夜在线| 亚洲色图在线视频| 成人综合婷婷国产精品久久免费| 欧美成人精品高清在线播放| 亚洲成人av电影| 色av成人天堂桃色av| 中文字幕佐山爱一区二区免费| 久久99国产精品成人| 欧美一级理论性理论a| 亚洲v日本v欧美v久久精品| 色欧美日韩亚洲| 亚洲九九爱视频| 99国产欧美另类久久久精品| 欧美国产精品v| 国产a视频精品免费观看| 国产清纯美女被跳蛋高潮一区二区久久w | 99国产精品视频免费观看| 日韩视频一区二区三区| 日韩成人dvd| 欧美一个色资源| 麻豆91精品91久久久的内涵| 51精品秘密在线观看| 日韩精品高清不卡| 91精品国产一区二区人妖| 免费成人深夜小野草| 欧美一区二区美女|