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

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

?? d12_operation.c

?? 我的小作品--U盤(實際是USB SD卡讀卡器) ATmega168+PDIUSBD12+SD (內含GCC源碼和原理圖)
?? 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一区二区三区免费野_久草精品视频
欧美视频一区二| 欧美国产精品一区| 欧美不卡在线视频| 国产女人18水真多18精品一级做| 国产精品乱码久久久久久| 一区二区三区.www| 国内成+人亚洲+欧美+综合在线| 成人精品高清在线| 日韩一卡二卡三卡| 亚洲同性gay激情无套| 麻豆久久一区二区| 91视频观看免费| 久久一留热品黄| 亚洲一二三四区不卡| 国产综合色在线视频区| 欧美色网站导航| 欧美国产精品一区二区三区| 日本va欧美va精品发布| 色婷婷国产精品| 久久久久青草大香线综合精品| 亚洲综合网站在线观看| 国产成a人亚洲精| 日韩欧美国产精品一区| 亚洲激情图片一区| 成人性视频网站| 26uuu亚洲| 日本亚洲一区二区| 在线免费观看日韩欧美| 国产精品天美传媒沈樵| 久久99国产精品尤物| 7878成人国产在线观看| 亚洲综合在线五月| 91丨porny丨蝌蚪视频| 久久久不卡影院| 国内精品写真在线观看| 91精品国产91久久综合桃花| 亚洲精品视频观看| 国产激情视频一区二区三区欧美 | 中文字幕综合网| 久久99国产精品免费网站| 91黄色免费版| 亚洲另类中文字| k8久久久一区二区三区| 久久久国产精品不卡| 国产一区免费电影| 亚洲精品在线三区| 国模无码大尺度一区二区三区| 日韩免费性生活视频播放| 成人av在线影院| 国产片一区二区三区| 麻豆91在线看| 日韩区在线观看| 日精品一区二区| 欧美视频中文字幕| 一区二区三区不卡视频| 欧美影视一区在线| 亚洲午夜精品久久久久久久久| 国产成人av自拍| 国产亚洲欧美一区在线观看| 国产不卡在线播放| 国产精品每日更新| 91色九色蝌蚪| 亚洲午夜视频在线观看| 欧美乱妇一区二区三区不卡视频| 日韩影院免费视频| 欧美变态tickling挠脚心| 精品一区二区三区蜜桃| 久久免费精品国产久精品久久久久| 福利电影一区二区| 一区二区欧美视频| 欧美一区二区三区免费大片| 国产精品中文欧美| 1024精品合集| 欧美精品xxxxbbbb| 国产乱国产乱300精品| 国产精品乱码一区二区三区软件 | 国产v综合v亚洲欧| 亚洲精品免费电影| 欧美久久久久免费| 国产盗摄精品一区二区三区在线| 中文字幕综合网| 日韩手机在线导航| 成人国产精品视频| 亚洲超丰满肉感bbw| 欧美精品一区二区三区在线| 成人av网在线| 欧美aaaaa成人免费观看视频| 国产欧美一区二区精品性色超碰 | 亚洲国产一区二区视频| 日韩免费性生活视频播放| 成人午夜视频在线| 亚洲午夜久久久久久久久电影院 | 一区二区三区免费网站| 日韩免费观看高清完整版| 国产麻豆视频一区| 亚洲国产精品人人做人人爽| 欧美精品一区男女天堂| 99久久婷婷国产综合精品电影| 亚洲国产精品久久人人爱| 国产日韩欧美不卡| 国产精品无码永久免费888| 国产白丝精品91爽爽久久| 欧美一区二区三区小说| 国产精品538一区二区在线| **欧美大码日韩| 亚洲精品在线一区二区| 欧美午夜理伦三级在线观看| 国产+成+人+亚洲欧洲自线| 日韩精品视频网站| 亚洲免费av高清| 欧美一区二区国产| 色综合天天综合狠狠| 国内欧美视频一区二区| 日韩中文字幕91| 亚洲欧美日韩国产综合| 久久精品夜色噜噜亚洲a∨| 欧美久久久久久久久中文字幕| av动漫一区二区| 国产高清精品网站| 久久精品国产秦先生| 一区二区三区精品视频在线| 久久九九影视网| 欧美tickling网站挠脚心| 欧美日韩另类一区| 日本乱人伦一区| 麻豆成人在线观看| 日韩在线卡一卡二| 亚洲成人资源在线| 亚洲一区二区欧美| 亚洲自拍偷拍网站| 国产精品久久久久精k8| 国产日韩精品久久久| 26uuu成人网一区二区三区| 欧美高清你懂得| 欧美性色黄大片| 色香蕉成人二区免费| 日本不卡高清视频| 亚洲日韩欧美一区二区在线| 中文字幕在线播放不卡一区| 国产精品免费视频一区| 国产精品乱码一区二区三区软件| 国产视频视频一区| 国产精品久久久久久久浪潮网站| 国产欧美精品一区二区三区四区| 国产亚洲1区2区3区| 国产日韩欧美激情| 亚洲欧洲日韩在线| 亚洲欧美日韩国产手机在线| 国产精品妹子av| 中文字幕视频一区| 亚洲欧洲精品成人久久奇米网| 中文欧美字幕免费| 樱花影视一区二区| 水野朝阳av一区二区三区| 免费高清在线一区| 国产高清久久久| 91美女片黄在线观看91美女| 欧美三级中文字幕| 在线综合视频播放| 久久久久久一级片| 亚洲免费观看在线观看| 亚洲成人先锋电影| 日韩不卡在线观看日韩不卡视频| 欧美色倩网站大全免费| 色婷婷综合久久| 欧美日韩国产片| 26uuu亚洲综合色| 中文字幕一区二区三区四区不卡| 亚洲男人天堂av网| 一区二区三区电影在线播| 免费人成精品欧美精品| 精品影视av免费| 成人白浆超碰人人人人| 欧美日韩电影在线| 欧美激情综合五月色丁香| 综合精品久久久| 奇米精品一区二区三区四区| 成人小视频免费观看| 欧美猛男男办公室激情| 久久女同精品一区二区| 一区二区三区成人在线视频| 国精产品一区一区三区mba视频| 97se亚洲国产综合在线| 91精品久久久久久久久99蜜臂| 国产区在线观看成人精品| 婷婷综合另类小说色区| 国产91丝袜在线播放| 欧美精品一级二级| 国产精品美女久久久久av爽李琼| 石原莉奈在线亚洲三区| 国产999精品久久久久久绿帽| 欧美色视频一区| 亚洲色图一区二区三区| 激情六月婷婷综合| 在线免费观看日本欧美| 国产精品久久久一本精品 | 国产女人18水真多18精品一级做| 一区二区三区四区精品在线视频| 免费看欧美女人艹b| 91蝌蚪porny|