亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品色眯眯| 国产99久久久国产精品免费看| 免费观看91视频大全| 成人福利在线看| 欧美一区国产二区| 一区二区三区欧美| 岛国一区二区在线观看| 日韩欧美在线网站| 亚洲午夜在线观看视频在线| 99久久99久久综合| 欧美国产一区二区| 精品一区在线看| 欧美一区二区观看视频| 亚洲一区二区在线免费观看视频 | 91麻豆高清视频| 精品人在线二区三区| 天堂成人国产精品一区| 在线一区二区观看| 1024成人网色www| 国产激情视频一区二区三区欧美 | 亚洲欧美欧美一区二区三区| 国产91精品精华液一区二区三区| 欧美一区二区三区男人的天堂| 亚洲成av人片一区二区梦乃| 91精品91久久久中77777| 专区另类欧美日韩| 91日韩一区二区三区| 亚洲色图制服诱惑 | 亚洲日本成人在线观看| 不卡一区二区三区四区| 国产精品毛片高清在线完整版| 韩国三级在线一区| 久久日韩粉嫩一区二区三区| 激情深爱一区二区| 久久女同互慰一区二区三区| 国产露脸91国语对白| 久久精品人人做人人爽人人 | 无码av中文一区二区三区桃花岛| 欧美日韩成人高清| 日本网站在线观看一区二区三区| 91麻豆精品久久久久蜜臀| 喷白浆一区二区| 精品久久久久av影院| 国产真实乱对白精彩久久| 国产欧美一区二区三区在线老狼| 国产宾馆实践打屁股91| 亚洲精选免费视频| 8v天堂国产在线一区二区| 美女在线视频一区| 国产欧美日韩久久| 91蜜桃免费观看视频| 图片区日韩欧美亚洲| 精品少妇一区二区三区| 99在线精品一区二区三区| 亚洲国产精品久久不卡毛片| 日韩美女视频一区二区在线观看| 国产宾馆实践打屁股91| 亚洲一区日韩精品中文字幕| 欧美一区二区大片| 国产乱国产乱300精品| 一区二区三区在线视频播放| 欧美精三区欧美精三区| 成人午夜免费视频| 亚洲大尺度视频在线观看| 精品国产成人系列| 91视频免费看| 国产一区久久久| 亚洲一区二区三区四区在线观看| 亚洲精品在线免费播放| 91久久线看在观草草青青| 久久国产综合精品| 亚洲色图都市小说| 337p粉嫩大胆色噜噜噜噜亚洲| 色综合久久综合网| 久久电影网站中文字幕| 亚洲免费看黄网站| 国产亚洲综合色| 午夜欧美视频在线观看| 欧美电影一区二区| 粉嫩嫩av羞羞动漫久久久 | 日韩电影免费在线观看网站| 久久精品亚洲麻豆av一区二区| 欧美主播一区二区三区| 粉嫩av一区二区三区| 56国语精品自产拍在线观看| 91精品国产综合久久久久久久久久 | 亚洲a一区二区| 肉色丝袜一区二区| 麻豆精品在线视频| 国产精品自拍av| av激情综合网| 欧美性视频一区二区三区| 久久久777精品电影网影网| 国产女同互慰高潮91漫画| 国产精品天美传媒| 亚洲综合视频网| 美国一区二区三区在线播放| 久久99精品久久久久久| 国产 欧美在线| 日本精品裸体写真集在线观看| 欧美日韩视频专区在线播放| 日韩三级电影网址| 中文欧美字幕免费| 亚洲国产成人va在线观看天堂| 伦理电影国产精品| 成人污视频在线观看| 91黄视频在线观看| 日韩欧美黄色影院| 国产精品久久久久婷婷| 视频在线观看91| 成人av在线播放网站| 欧美日韩在线免费视频| 精品福利av导航| 亚洲欧美另类小说| 麻豆精品在线播放| 色激情天天射综合网| 精品美女在线播放| 亚洲精品va在线观看| 国产剧情一区二区三区| 在线观看av一区| 国产欧美综合色| 日韩精品亚洲一区二区三区免费| 国产精品一级在线| 欧美久久久一区| 亚洲欧美日韩精品久久久久| 久久99精品久久久久久动态图 | 亚洲激情在线激情| 国产在线视视频有精品| 欧美色图片你懂的| 欧美激情一区不卡| 九九在线精品视频| 欧美午夜精品一区| 国产欧美精品一区二区三区四区| 三级亚洲高清视频| 日本韩国欧美在线| 中文字幕欧美三区| 激情深爱一区二区| 91.com视频| 亚洲bdsm女犯bdsm网站| 色综合色综合色综合| 亚洲国产成人在线| 国产一区 二区| 欧美刺激午夜性久久久久久久| 亚洲成av人片在线观看| www.欧美.com| 中文一区二区完整视频在线观看| 欧美aⅴ一区二区三区视频| 在线观看视频91| 亚洲色图制服丝袜| 成人免费黄色大片| 欧美激情一区二区三区蜜桃视频| 激情偷乱视频一区二区三区| 日韩一级免费一区| 日韩精品欧美成人高清一区二区| 欧美三级日韩三级| 依依成人精品视频| 91麻豆swag| 亚洲激情五月婷婷| 91色婷婷久久久久合中文| 国产中文字幕一区| 日韩视频免费直播| 麻豆精品国产传媒mv男同| 欧美一区二区精品久久911| 日韩精品亚洲一区二区三区免费| 欧美另类高清zo欧美| 日韩精品一级中文字幕精品视频免费观看 | 日本一区二区久久| 成人国产免费视频| 亚洲免费av网站| 欧美体内she精视频| 亚洲夂夂婷婷色拍ww47| 91久久精品一区二区三区| 夜夜揉揉日日人人青青一国产精品 | 久久综合色鬼综合色| 国产一区二区三区黄视频 | 91超碰这里只有精品国产| 亚洲va欧美va国产va天堂影院| 欧美日韩国产综合一区二区| 男女男精品视频网| 久久先锋影音av鲁色资源网| 国产v日产∨综合v精品视频| 中文字幕一区视频| 91精品办公室少妇高潮对白| 天堂在线一区二区| 精品sm在线观看| 不卡的电影网站| 亚洲综合无码一区二区| 3d动漫精品啪啪| 国产91精品免费| 亚洲一区二区在线视频| 日韩免费观看2025年上映的电影 | 国产精品成人在线观看| 91福利在线观看| 免费一级片91| 中文字幕一区在线观看| 欧美久久久影院| 床上的激情91.| 亚洲成精国产精品女| 精品国产自在久精品国产| av色综合久久天堂av综合|