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

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

?? usb.c

?? Avr Atmeg128汽車行駛記錄儀 帶有USB驅動 c語言
?? C
字號:
#include "usb.h"

#define USBCS	PORTD |=_BV(PD7) |_BV(PD6) |_BV(PD5) ; PORTB |=_BV(PB7)//(PORTD |=_BV(PD7) |_BV(PD6) |_BV(PD5) )//; ( PORTB |=_BV(PB7)))

uchar i;
//***************************************************************************
/*
  下面是USB移動存儲設備的簡單應用參考。在單片機應用程序中,
  可以定義USB存儲設備的4種狀態:已斷開、已連接、初始化、可讀寫。其中"已連接"狀態可選。
● 已斷開是指USB存儲設備已經斷開(從USB插座中拔出),完全不可用;
● 已連接是指USB存儲設備已經連接(插入USB插座中),但是尚未初始化;
● 初始化是指USB存儲設備正在初始化或者初始化失敗,所以不可以進行讀寫;
● 可讀寫是指USB存儲設備初始化成功,可以進行數據讀寫。

單片機處理CH375中斷的一般步驟如下:
㈠ CH375將INT#引腳設置為低電平,向單片機請求中斷;
㈡ 單片機進入中斷服務程序,首先執行GET_STATUS命令獲取中斷狀態;
㈢ CH375在GET_STATUS命令完成后將INT#引腳恢復為高電平,取消中斷請求;
㈣ 單片機可以參考下面的順序分析GET_STATUS命令獲取的中斷狀態:
  ⑴ 如果中斷狀態是USB_INT_DISCONNECT,則說明USB設備已經斷開,置USB存儲設備狀態為"已斷開",
     如果在此之前USB存儲設備有讀寫操作尚未完成,則放棄操作并按操作失敗處理,然后退出中斷,必要時可以通知單片機主程序。
  ⑵ 如果中斷狀態是USB_INT_CONNECT,則說明USB設備已經連接,置USB存儲設備狀態為"已連接",
     接著發出DISK_INIT命令,并置USB存儲設備狀態為初始化,然后退出中斷,必要時可以通知單片機主程序。
  ⑶ 如果當前的USB存儲設備狀態是"初始化":
    ① 如果中斷狀態是USB_INT_SUCCESS,則說明USB存儲設備初始化成功,置USB存儲設備狀態為"可讀寫",
       然后退出中斷,必要時可以通知單片機主程序。
    ② 如果中斷狀態是其它狀態,則說明USB存儲設備初始化失敗,應該通知單片機主程序,
       提示該USB設備不是存儲設備或者該USB設備不支持,然后退出中斷。或者,單片機通過其它命令自行處理該USB存儲設備的通訊協議。
  ⑷ 如果當前的USB存儲設備狀態是"可讀寫",則可以保存中斷狀態并通知單片機主程序處理,
     然后直接退出中斷;或者,在中斷服務程序中繼續處理:
    ① 如果中斷狀態是USB_INT_DISK_READ,則說明正在進行USB存儲設備的讀操作,需要取走64個字節的數據,
       可以發出RD_USB_DATA命令取走數據,接著再發出DISK_RD_GO命令使CH375繼續讀,然后退出中斷。
    ② 如果中斷狀態是USB_INT_DISK_WRITE,則說明正在進行USB存儲設備的寫操作,需要提供64個字節的數據,
       可以發出WR_USB_DATA7命令提供數據,接著再發出DISK_WR_GO命令使CH375繼續寫,然后退出中斷。
    ③ 如果中斷狀態是USB_INT_SUCCESS,則說明讀寫操作成功,直接退出中斷并通知主程序該操作成功;
    ④ 如果中斷狀態是USB_INT_DISK_ERR,則說明讀寫操作失敗,直接退出中斷并通知主程序該操作失敗;
    ⑤ 通常不會返回其它中斷狀態,如果有,則說明出現錯誤。
  ⑸ 通常不會在其它USB存儲設備狀態下返回其它中斷狀態,如果有,則說明出現錯誤,可以參照USB設備斷開的狀態處理。

當單片機主程序需要從USB存儲設備中讀寫數據時,可以查詢USB存儲設備狀態,
如果是"可讀寫"狀態,則可以發出DISK_READ命令讀數據,或者發出DISK_WRITE命令寫數據。
后續的數據讀寫過程可以在單片機的中斷服務程序中完成,也可以由中斷程序置標志通知等待中的主程序,
由主程序分析中斷狀態再完成數據讀寫過程。
*/


//
void Usb_Initzx(void)
{
	MCUCR |=_BV(SRE) |_BV(SRW10);	//外部SRAM可用   SRW10高段WAIT
	XMCRA |= _BV(SRW11);
	DDRD = 0XFF;
	DDRB = 0XFF;
	PORTB |=_BV(PB7);
	USBCS;

}
void RestUSBzx(uchar i)
{
	PORTB |=_BV(PB7);
	USBCommandWrite = i;
	PORTB &=!_BV(PB7);
}

uchar CheckUSBzx(uchar i)
{
	uchar a;	
	PORTB |=_BV(PB7);	
	USBCommandWrite = i;
	PORTB &=!_BV(PB7);
	PORTB |=_BV(PB7);	
	USBCommandWrite = 0x57;
	PORTB &=!_BV(PB7);
	PORTB |=_BV(PB7);
	a = USBDataRead;
	PORTB &=!_BV(PB7);
	return a;
}

uchar Get_IC_VERzx(uchar i)
{
	uchar a;	
	PORTB |=_BV(PB7);	
	USBCommandWrite = i;
	PORTB &=!_BV(PB7);
	PORTB |=_BV(PB7);	
	//USBCommandWrite = 0x05;
	//PORTB &=!_BV(PB7);
	//PORTB |=_BV(PB7);
	a = USBDataRead;
	PORTB &=!_BV(PB7);
	return a;
}

uchar CH375Initzx(uchar i)
{
	uchar a;	
	PORTB |=_BV(PB7);	
	USBCommandWrite = i;
	PORTB &=!_BV(PB7);
	PORTB |=_BV(PB7);	
	USBCommandWrite = 0x06;
	PORTB &=!_BV(PB7);
	PORTB |=_BV(PB7);
	for(a = 0xff;a !=0;a --)
	{
		if(USBDataRead == CMD_RET_SUCCESS ) break;
	}
	PORTB &=!_BV(PB7);
	if(a != 0)
		return (TRUE);
	else
		return (FALSE);
}


/* 基本操作 */

void CH375_WR_CMD_PORT( unsigned char cmd ) {  /* 向CH375的命令端口寫入命令,周期不小于4uS,如果單片機較快則延時 */
	//delay2us();
//	uchar a;	
	PORTB |=_BV(PB7);
	CH375_CMD_PORT=cmd;
	PORTB &=!_BV(PB7);
	//delay2us();
}


void CH375_WR_DAT_PORT( unsigned char dat ) {  /* 向CH375的數據端口寫入數據,周期不小于1.5uS,如果單片機較快則延時 */
//	uchar a;
	PORTB |=_BV(PB7);
	CH375_DAT_PORT=dat;
	//delay1us();  /* 因為MCS51單片機較慢所以實際上無需延時 */
	PORTB &= !_BV(PB7);
}

unsigned char CH375_RD_DAT_PORT() {  /* 從CH375的數據端口讀出數據,周期不小于1.5uS,如果單片機較快則延時 */
	//delay1us();  /* 因為MCS51單片機較慢所以實際上無需延時 */
	uchar a;
	PORTB |=_BV(PB7);
	a = CH375_DAT_PORT;
	PORTB |=_BV(PB7);
	return(a);
}


/* CH375的INT#引腳連接51單片機的INT0引腳, 采用中斷方式 */
/* CH375中斷服務程序,使用寄存器組1 */

//中斷0
SIGNAL(SIG_INTERRUPT4)
//*******************************************
//void	CH375Interrupt( ) interrupt 0 using 1
{
	unsigned char i, s, len;
	CH375_WR_CMD_PORT( CMD_GET_STATUS );  /* 獲取中斷狀態并取消中斷請求 */
	for ( i = 2; i != 0; i -- );  /* 至少延時2uS */
	s = CH375_RD_DAT_PORT( );  /* 獲取中斷狀態 */
	if ( s == USB_INT_SUCCESS ) 
	{
		UdiskStatus = STATUS_READY;  /* 操作成功 */
		//****************************************************
		CH375_WR_CMD_PORT( CMD_DISK_READ );  /* 從USB存儲器讀數據塊 */
		CH375_WR_DAT_PORT(0); //(unsigned char)	iLbaStart );  /* LBA的最低8位 */
		CH375_WR_DAT_PORT(0);// (unsigned char)( iLbaStart >> 8 ) );
		CH375_WR_DAT_PORT(0);// (unsigned char)( iLbaStart >> 16 ) );
		CH375_WR_DAT_PORT(0);// (unsigned char)( iLbaStart >> 24 ) );  /* LBA的最高8位 */
		CH375_WR_DAT_PORT(1);// iSectorCount );  /* 扇區數 */
		//****************************************************
	}
	else
	 	if ( s == USB_INT_DISCONNECT ) 
	 	{
			UdiskStatus = STATUS_DISCONNECT;  /* 檢測到USB設備斷開事件 */
			//	LED_OUT_INACT( );
	 	}
		else 
			if ( s == USB_INT_CONNECT ) 
			{
				UdiskStatus = STATUS_CONNECT;  /* 檢測到USB設備連接事件 */
			//	LED_OUT_ACT( );
				//****************************
				CH375_WR_CMD_PORT( CMD_DISK_INIT );  /* 初始化USB存儲器 */
				//****************************
			}
			else
				 if ( s == USB_INT_DISK_READ ) 
				 {  /* USB存儲器讀數據塊,請求數據讀出 */
					CH375_WR_CMD_PORT( CMD_RD_USB_DATA );  /* 從CH375緩沖區讀取數據塊 */
					for ( i = 2; i != 0; i -- );  /* 至少延時2uS */
					len = CH375_RD_DAT_PORT( );  /* 后續數據的長度 */
					while ( len ) 
					{  /* 根據長度讀取數據 */
						*mBufferPoint = CH375_RD_DAT_PORT( );  /* 讀出數據并保存 */
						mBufferPoint ++;
						len --;
					}
					CH375_WR_CMD_PORT( CMD_DISK_RD_GO );  /* 繼續執行USB存儲器的讀操作 */
				}
				else
				 if ( s == USB_INT_DISK_WRITE ) 
				 {  /* USB存儲器寫數據塊,請求數據寫入 */
					CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向CH375緩沖區寫入數據塊 */
					for ( i = 2; i != 0; i -- );  /* 至少延時2uS */
					len = CH375_MAX_DATA_LEN;
					CH375_WR_DAT_PORT( len );  /* 后續數據的長度 */
					do {  /* 對于C51,這個DO+WHILE結構比上面的WHILE效率高,速度快 */
						CH375_WR_DAT_PORT( *mBufferPoint );
						mBufferPoint ++;
						} while ( -- len );
					CH375_WR_CMD_PORT( CMD_DISK_WR_GO );  /* 繼續執行USB存儲器的寫操作 */
				}
				else 
				{  /* 操作失敗 */
						UdiskStatus = STATUS_ERROR;
				}
			/*	CH375_INT_FLAG = 0;  清中斷標志 */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品中文字幕乱码三区| 国产精品福利在线播放| 欧美人成免费网站| 欧美电影一区二区三区| 2020日本不卡一区二区视频| 中文字幕成人网| 亚洲乱码日产精品bd| 成人av网站在线观看免费| 色久综合一二码| 欧美sm美女调教| 亚洲欧美激情一区二区| 青草av.久久免费一区| 国产成人精品亚洲日本在线桃色| 在线免费观看成人短视频| 精品91自产拍在线观看一区| 亚洲香肠在线观看| 国产精品一区二区久激情瑜伽| 欧美自拍丝袜亚洲| 亚洲成人三级小说| 成人激情图片网| 中文字幕一区二区三区四区不卡 | 亚洲丝袜精品丝袜在线| 美腿丝袜在线亚洲一区 | 99精品欧美一区| 日韩一级免费一区| 一区二区三区美女视频| 成人亚洲精品久久久久软件| 日韩精品一区二区三区四区| 亚洲午夜在线视频| 欧美精品视频www在线观看| 日韩中文字幕91| 欧美午夜寂寞影院| 中文字幕一区二区三区蜜月| 一本久久精品一区二区| 日本一区二区三区免费乱视频| 蜜臀va亚洲va欧美va天堂| 精品av综合导航| 国产成人免费视频精品含羞草妖精| 国产精品久久久久久久久久免费看| 一本大道综合伊人精品热热| 天天综合天天做天天综合| 色悠久久久久综合欧美99| 亚洲一区中文日韩| 欧美主播一区二区三区美女| 日韩福利视频网| 欧美日韩精品一区二区三区蜜桃 | 国产精品久久777777| 在线视频中文字幕一区二区| 日韩电影在线看| 国产日本亚洲高清| 91国内精品野花午夜精品| 青椒成人免费视频| 国产精品毛片高清在线完整版| 国内成人免费视频| 欧美va亚洲va在线观看蝴蝶网| 国产suv精品一区二区三区| 久久综合狠狠综合久久激情| 成人aaaa免费全部观看| 五月天亚洲婷婷| 国产精品你懂的在线欣赏| 欧美绝品在线观看成人午夜影视| 国产一区二区美女诱惑| 久久久久久久久久久电影| 国产一区二区三区电影在线观看| 亚洲欧美一区二区三区孕妇| 日韩欧美中文字幕一区| 99精品国产热久久91蜜凸| 蜜臀av在线播放一区二区三区| 国产精品久久久久影院亚瑟| 欧美日韩国产乱码电影| 国产资源在线一区| 艳妇臀荡乳欲伦亚洲一区| 色综合天天性综合| 亚洲裸体xxx| 欧美一区二区视频网站| 琪琪久久久久日韩精品| 中文字幕五月欧美| 91精品国产综合久久精品| 成人亚洲一区二区一| 日韩福利电影在线| 国产精品不卡在线| 3d成人h动漫网站入口| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩在线播放三区四区| 中文字幕第一页久久| 欧美视频一区二区三区| 成人午夜精品在线| 免费成人在线观看| 亚洲高清免费在线| 国产精品你懂的在线| 精品成人免费观看| 欧美日韩国产高清一区二区三区| 99综合电影在线视频| 精品一区二区三区不卡 | 在线电影欧美成精品| 91丨国产丨九色丨pron| 自拍偷拍欧美激情| 久久久噜噜噜久久中文字幕色伊伊 | 色欧美乱欧美15图片| 国产精品一色哟哟哟| 五月天久久比比资源色| 亚洲欧美另类小说| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美人牲a欧美精品| 91原创在线视频| 国产成人精品影视| 日韩制服丝袜先锋影音| 亚洲欧美另类小说| 国产日产欧美一区二区三区| 4438x成人网最大色成网站| av一区二区三区黑人| 国产麻豆视频精品| 亚欧色一区w666天堂| 亚洲国产成人av网| 一区二区视频在线看| 久久九九国产精品| 国产另类ts人妖一区二区| 天天色图综合网| 亚洲综合色区另类av| 自拍偷拍国产亚洲| 亚洲人妖av一区二区| 久久九九99视频| 久久综合色一综合色88| 欧美一区二区三区在线视频| 欧美高清激情brazzers| 91国偷自产一区二区使用方法| 成人动漫视频在线| 国产精品一线二线三线精华| 久草精品在线观看| 美女mm1313爽爽久久久蜜臀| 亚洲综合一区在线| 亚洲人成电影网站色mp4| 亚洲欧洲日产国码二区| 1000部国产精品成人观看| 国产精品久久久久久久蜜臀| 中文字幕在线不卡一区| 国产精品久久久久影院亚瑟| 综合久久久久久| 亚洲视频中文字幕| 亚洲另类色综合网站| 亚洲精品视频一区二区| 一区二区三区成人在线视频| 亚洲精品乱码久久久久久久久| 亚洲一区二区三区中文字幕| 一区二区成人在线| 调教+趴+乳夹+国产+精品| 亚洲成在线观看| 蜜臂av日日欢夜夜爽一区| 国产一区高清在线| 国产成人免费在线观看| 成人福利视频在线看| 99精品欧美一区| 欧美日韩国产三级| 日韩一区二区免费电影| 久久综合久久鬼色| 中文字幕精品综合| 亚洲免费观看高清在线观看| 亚洲码国产岛国毛片在线| 日韩国产在线观看| 丝袜国产日韩另类美女| 精品一区二区日韩| 精品中文字幕一区二区| 国产精品一区二区果冻传媒| 91在线一区二区| 欧美在线观看视频在线| 日韩精品在线网站| 久久精品免费在线观看| 亚洲特级片在线| 午夜精品视频在线观看| 韩国女主播成人在线| 成人91在线观看| 欧美二区在线观看| 欧美一区二区视频在线观看2020| 精品国产污污免费网站入口 | 国产一区视频网站| 91碰在线视频| 欧美丰满少妇xxxxx高潮对白| 久久亚洲一区二区三区四区| 中文在线免费一区三区高中清不卡| 亚洲免费观看高清在线观看| 天天射综合影视| 成人h动漫精品一区二| 欧洲日韩一区二区三区| 精品国产sm最大网站| 亚洲欧洲另类国产综合| 日韩精品91亚洲二区在线观看| 国产乱码精品一区二区三区av| 91美女精品福利| 日韩精品一区二区三区四区| 国产精品不卡一区二区三区| 日韩激情av在线| 国产不卡在线视频| 欧美美女喷水视频| 久久精品日韩一区二区三区| 亚洲男同性恋视频| 狠狠色狠狠色合久久伊人| 一本到不卡精品视频在线观看| 日韩美女天天操| 国产精品乱人伦中文| 日本伊人色综合网|