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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch372dbg.c

?? usb接口芯片CH375調(diào)試程序
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
		buf = (PUINT8)&udp.down;  /* 指令命令包緩沖區(qū) */
		do {
			*buf = CH375_RD_DAT_PORT( );  /* 接收命令包的數(shù)據(jù) */
			buf ++;
		} while ( -- cnt );
		if ( udp.down.mCommand != (UINT8)( ~ udp.down.mCommandNot ) ) return;  /* 命令包反碼校驗(yàn)錯(cuò)誤,放棄該下傳包 */
		if ( udp.down.mCommand & USB_CMD_MEM_ACCESS ) {  /* 命令類型:存儲(chǔ)器和SFR讀寫 */
			if ( ( udp.down.mCommand & USB_CMD_MEM_WIDTH ) != USB_CMD_MEM_W_BYTE ) {  /* 本程序目前對(duì)MCS51只支持以字節(jié)為單位進(jìn)行讀寫 */
				udp.up.mLength = 0;
				udp.up.mStatus = ERR_UNSUPPORT;  /* 命令不支持 */
			}
			else {  /* 以字節(jié)為單位進(jìn)行讀寫 */
				for ( cnt = 0; cnt != udp.down.mLength; cnt ++ ) {  /* 讀寫操作計(jì)數(shù) */
					dat = udp.down.mBuffer[ cnt ];  /* 準(zhǔn)備寫入的數(shù)據(jù) */
					switch( udp.down.mCommand & USB_CMD_MEM_SPACE ) {  /* 存儲(chǔ)器空間 */
						case USB_CMD_MEM_S_SFR:
							switch ( udp.down.u.mByte[0] ) {  /* 分析SFR地址 */
								case 0x80:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) P0 = dat;
									else dat = P0;
									break;
								case 0x87:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) PCON = dat;
									else dat = PCON;
									break;
								case 0x88:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TCON = dat;
									else dat = TCON;
									break;
								case 0x89:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TMOD = dat;
									else dat = TMOD;
									break;
								case 0x8A:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TL0 = dat;
									else dat = TL0;
									break;
								case 0x8B:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TL1 = dat;
									else dat = TL1;
									break;
								case 0x8C:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TH1 = dat;
									else dat = TH0;
									break;
								case 0x8D:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) TH1 = dat;
									else dat = TH1;
									break;
								case 0x90:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) P1 = dat;
									else dat = P1;
									break;
								case 0x98:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) SCON = dat;
									else dat = SCON;
									break;
								case 0x99:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) SBUF = dat;
									else {dat = SBUF;RI=0;}
									break;
								case 0xA0:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) P2 = dat;
									else dat = P2;
									break;
								case 0xA8:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) IE = dat;
									else dat = IE;
									break;
								case 0xB0:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) P3 = dat;
									else dat = P3;
									break;
								case 0xB8:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) IP = dat;
									else dat = IP;
									break;
								case 0xC8:
									if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) T2CON = dat;
									else dat = T2CON;
									break;
								default:
									dat = 0;
									break;
							}
							break;
						case USB_CMD_MEM_S_IRAM:
							if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) *(PUINT8)udp.down.u.mByte[0] = dat;
							else dat = *(PUINT8)udp.down.u.mByte[0];
							break;
						case USB_CMD_MEM_S_XRAM:
							if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) *(PUINT8X)( udp.down.u.mByte[0] | (UINT16)udp.down.u.mByte[1] << 8 )= dat;
							else dat = *(PUINT8X)( udp.down.u.mByte[0] | (UINT16)udp.down.u.mByte[1] << 8 );
							break;
						case USB_CMD_MEM_S_ROM:
							if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) udp.up.mStatus = ERR_UNSUPPORT;  /* 命令不支持 */
							else dat = *(PUINT8C)( udp.down.u.mByte[0] | (UINT16)udp.down.u.mByte[1] << 8 );
							break;
					}
					if ( ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) == 0 ) udp.up.mBuffer[ cnt ] = dat;  /* 返回讀出的數(shù)據(jù) */
					udp.down.u.mByte[0] ++;
					if ( udp.down.u.mByte[0] == 0 ) udp.down.u.mByte[1] ++;
				}
				if ( udp.down.mCommand & USB_CMD_MEM_DIR_WR ) udp.up.mLength = 0;  /* 寫操作不返回?cái)?shù)據(jù) */
				udp.up.mStatus = ERR_SUCCESS;
			}
		}
		else switch ( udp.down.mCommand ) {  /* 命令類型:實(shí)現(xiàn)特定功能,分析命令碼 */
			case USB_CMD_GET_FW_INFO:  /* 獲取調(diào)試固件程序的版本,并取消未完成的上傳數(shù)據(jù)塊 */
				udp.up.mBuffer[0] = THIS_FIRMWARE_VER;
				udp.up.mLength = 1;
				udp.up.mStatus = ERR_SUCCESS;
				CH375_WR_CMD_PORT( CMD_SET_ENDP7 );  /* 設(shè)置USB端點(diǎn)2的IN,也就是批量上傳端點(diǎn) */
				CH375_WR_DAT_PORT( 0x0E );  /* 同步觸發(fā)位不變,設(shè)置USB端點(diǎn)2的IN正忙,返回NAK,實(shí)際是清除上傳緩沖區(qū)的已有內(nèi)容 */
				break;
			case USB_CMD_GET_APP_INFO:  /* 獲取當(dāng)前應(yīng)用系統(tǒng)的版本和說明字符串 */
				udp.up.mBuffer[0] = THIS_APP_SYS_VER;
				cnt = 0;
				str = THIS_APP_SYS_STR;
				while ( udp.up.mBuffer[ cnt ] = *str ) { cnt ++; str ++; }  /* 說明字符串 */
				udp.up.mLength = 1 + sizeof( THIS_APP_SYS_STR );
				udp.up.mStatus = ERR_SUCCESS;
				break;
			case  USB_CMD_GET_RXD_DATA:
				if(REN)	{
			  		if(FLAG_RXD) {					
						for(cnt=0;cnt!=mRxdLen;cnt++)	udp.up.mBuffer[ cnt ] = RXDBUF[cnt];
						udp.up.mLength = mRxdLen;
                        mRxdLen=0;
                        FLAG_RXD=0;
						udp.up.mStatus = ERR_SUCCESS;
			 		}
					else {
						udp.up.mStatus = ERR_SUCCESS;
						udp.up.mLength = 0;
			    	}
	     		}
	     		else {
	      			udp.up.mStatus = ERR_NOPENSER;			/*沒有打開串口*/
					udp.up.mLength = 0;
	      		}
				break;
			case  USB_CMD_SEND_TXD:                         //寫串口
				if(REN) {
					mTxdLen=udp.down.mLength;
					for(cnt=0;cnt!= udp.down.mLength;cnt++) TXDBUF[cnt] = udp.down.mBuffer[ cnt ];
					TI=0;
					pTxdbuf=TXDBUF;
					if ( mTxdLen ) SBUF=*pTxdbuf;
					udp.up.mLength = 0;
					udp.up.mStatus = ERR_SUCCESS;
				}
				else {
					udp.up.mStatus = ERR_NOPENSER;			/*沒有打開串口*/
					udp.up.mLength = 0;
				}
				break;
			case USB_CMD_OPEN_S:
				TI=0;
				RI=0;
				PCON=0X80;
				SCON=0X50;
				TL2 = RCAP2L = 0-0X4e;      //默認(rèn)9600   @24MHz
				TH2 = RCAP2H = 0xFF;
				T2CON = 0x34;  /* 定時(shí)器2用于串口的波特率發(fā)生器 */
				ES=1;			//允許串口中斷
				mRxdLen=0;
				udp.up.mLength = 0;
				udp.up.mStatus = ERR_SUCCESS;
				break;
			case  USB_CMD_SET_BO:
				T2CON = 0x30;
				TL2 = RCAP2L = 0-udp.down.mBuffer[0];  /* 波特率常數(shù) */
				TH2 = RCAP2H = 0xFF;
				T2CON  = 0x34;  /* 定時(shí)器2用于串口的波特率發(fā)生器 */
				udp.up.mLength = 0;
				udp.up.mStatus = ERR_SUCCESS;
				break;
			case  USB_CMD_CLOSE_S:
				REN=0;
				TI=0;
				RI=0;
				T2CON  = 0x00;  /* 關(guān)閉定時(shí)器2用于串口的波特率發(fā)生器 */
				ES=0;			//不允許串口中斷
				mRxdLen=0;
				udp.up.mLength = 0;
				udp.up.mStatus = ERR_SUCCESS;
				break;
			case(USB_CMD_EXCHANGE_DATA_OUT):
				{	iic_addr_b=(udp.down.u.mByte[0]>>2)&0x03;
					if(udp.down.u.mByte[0]&0x03==0x01)iic_speed=1;
					else iic_speed=0;
					if(write_str_sub(udp.down.u.mByte[1],udp.down.u.mByte[2],udp.down.u.mByte[3],(UINT8*)&udp.down.mBuffer,udp.down.mLength)){udp.up.mStatus = ERR_SUCCESS;}
				}
				break;
			case(USB_CMD_EXCHANGE_DATA_IN):
				{	iic_addr_b=(udp.down.u.mByte[0]>>2)&0x03;
					if(udp.down.u.mByte[0]&0x03==0x01)iic_speed=1;
					else iic_speed=0;
					if(read_str_sub(udp.down.u.mByte[1],udp.down.u.mByte[2],udp.down.u.mByte[3],(UINT8*)&udp.up.mBuffer,udp.down.mLength)){udp.up.mStatus = ERR_SUCCESS;}
				}
				break;
			default:  /* 命令不支持 */
				udp.up.mLength = 0;
				udp.up.mStatus = ERR_UNSUPPORT;
				break;
		}
		CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點(diǎn)2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
		cnt = udp.up.mLength + (UINT8)( & ( (USB_UP_PKT *)0 ) -> mBuffer );
		CH375_WR_DAT_PORT( cnt );  /* 首先寫入后續(xù)數(shù)據(jù)長度 */
		buf = (PUINT8)&udp.up;  /* 指向狀態(tài)包緩沖區(qū) */
		do {
			CH375_WR_DAT_PORT( *buf );  /* 寫入數(shù)據(jù)到CH375 */
			buf ++;
		} while ( -- cnt );
	}
	else if ( IntStatus == USB_INT_EP2_IN ) {  /* 批量數(shù)據(jù)發(fā)送成功,狀態(tài)包已發(fā)送 */
		CH375_WR_CMD_PORT( CMD_UNLOCK_USB );  /* 釋放當(dāng)前USB緩沖區(qū),收到上傳成功中斷后,必須解鎖USB緩沖區(qū),以便繼續(xù)收發(fā) */
	}
	else if ( IntStatus == USB_INT_EP1_IN ) {  /* 中斷數(shù)據(jù)發(fā)送成功,本程序未用到 */
		CH375_WR_CMD_PORT( CMD_UNLOCK_USB );  /* 釋放當(dāng)前USB緩沖區(qū) */
	}
/* 內(nèi)置固件的USB方式下不應(yīng)該出現(xiàn)其它中斷狀態(tài) */
}

void mSportinterupt(void )interrupt 4 using 1{
	if(RI){						/*接收數(shù)據(jù)*/
		if(mRxdLen==0) pRxdbuf=RXDBUF;
		if(mRxdLen!=16){
			*pRxdbuf=SBUF;
			pRxdbuf++;
			mRxdLen++;
		}
		else *pRxdbuf=SBUF;
		RI=0;
		FLAG_RXD=1;
	}
	else{ 						/*發(fā)送數(shù)據(jù)*/
		TI=0;
		mTxdLen--;
		if(mTxdLen){
			pTxdbuf++;
			SBUF=*pTxdbuf;
	 	}
	}
}

main( void ) 
{	CH375_Init( );
	EA = 1;
	while(1);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩毛片高清在线播放| 成人永久aaa| 亚洲免费在线视频| 欧美高清在线精品一区| 国产三级欧美三级日产三级99| 欧美tickling挠脚心丨vk| 日韩一区二区三区视频在线观看| 777久久久精品| 欧美一级久久久| 久久一二三国产| 久久久久久久久久久电影| 日本高清不卡在线观看| 国产福利一区二区三区视频| 激情av综合网| 国产成人免费在线观看不卡| av电影一区二区| 在线观看三级视频欧美| 欧美久久一二区| 精品欧美一区二区久久| 国产午夜精品一区二区三区嫩草| 国产精品久久久久7777按摩 | 男女男精品网站| 精品一区二区影视| 从欧美一区二区三区| 91色视频在线| 91精品国产综合久久久久久久| 精品av久久707| 中文字幕亚洲欧美在线不卡| 亚洲成人你懂的| 国产一区二区三区最好精华液| a级精品国产片在线观看| 精品视频全国免费看| 精品久久人人做人人爽| **欧美大码日韩| 美女视频免费一区| 99在线视频精品| 欧美成人女星排行榜| 最新日韩av在线| 国产在线视频精品一区| 欧美日韩一区久久| 国产欧美日韩麻豆91| 亚洲18女电影在线观看| 高清beeg欧美| 欧美一级二级在线观看| 亚洲视频香蕉人妖| 国产精品12区| 日韩三级av在线播放| 樱桃视频在线观看一区| 韩国女主播一区二区三区| 欧美色视频在线| 日韩伦理免费电影| 精品制服美女丁香| 欧美日韩欧美一区二区| 国产精品网曝门| 久久精品国产在热久久| 欧美久久一二区| 亚洲一区二区中文在线| aaa欧美色吧激情视频| 久久久久国产精品麻豆| 美腿丝袜亚洲色图| 在线综合+亚洲+欧美中文字幕| 亚洲精品国产无套在线观 | 中文字幕中文字幕在线一区 | 成人一区在线观看| 久久影院视频免费| 蜜臀久久99精品久久久画质超高清 | 精品免费国产一区二区三区四区| 亚洲狠狠爱一区二区三区| 97久久超碰精品国产| 国产精品视频看| av在线不卡电影| 中文字幕av一区 二区| 国产成人综合精品三级| 国产三级一区二区三区| 国产福利一区二区三区视频| 久久精品夜色噜噜亚洲aⅴ| 狠狠网亚洲精品| 久久精品一区二区三区av| 国产成人小视频| 中文字幕在线免费不卡| 成人av电影免费观看| 中文字幕国产一区二区| 大白屁股一区二区视频| 最好看的中文字幕久久| 91丨九色丨蝌蚪富婆spa| 亚洲黄色av一区| 91精品国产91久久综合桃花| 日本欧美一区二区三区乱码 | 色综合天天综合网天天狠天天| 亚洲精品视频观看| 欧美日韩国产天堂| 美女视频一区在线观看| 欧美韩日一区二区三区| 99精品黄色片免费大全| 天堂一区二区在线| 久久综合九色综合97_久久久| 丰满少妇久久久久久久| 亚洲精品国产精品乱码不99| 777亚洲妇女| 岛国av在线一区| 日韩和欧美的一区| 久久久久久9999| 91久久精品网| 精品在线播放免费| 国产精品麻豆网站| 制服丝袜日韩国产| 成人黄动漫网站免费app| 亚洲精品写真福利| 精品福利一区二区三区 | 国产一区二区三区蝌蚪| 亚洲日韩欧美一区二区在线| 欧美日韩一区二区三区在线| 国产一区二区女| 亚洲第一久久影院| 中文字幕欧美国产| 日韩欧美综合在线| 色噜噜夜夜夜综合网| 成人污污视频在线观看| 亚洲国产精品天堂| 国产精品麻豆一区二区| 精品人伦一区二区色婷婷| av资源网一区| 国产精品一区在线| 日本在线不卡一区| 一区二区三区精品| 欧美国产视频在线| 精品毛片乱码1区2区3区| 欧美午夜电影在线播放| 丁香啪啪综合成人亚洲小说| 麻豆精品久久久| 午夜精品久久久久久久久久久 | 欧美性色黄大片| 国产高清亚洲一区| 免费国产亚洲视频| 亚洲最快最全在线视频| 中文字幕一区二区三区视频| 久久亚洲综合av| 欧美一区二区三区精品| 欧美日韩情趣电影| 欧美影院一区二区三区| 91蜜桃在线观看| 成人国产亚洲欧美成人综合网 | 日本国产一区二区| jlzzjlzz亚洲女人18| 国产成人午夜精品5599| 韩国av一区二区三区在线观看| 丝袜美腿一区二区三区| 亚洲成人动漫一区| 亚洲超碰97人人做人人爱| 亚洲精品日韩综合观看成人91| 国产精品婷婷午夜在线观看| 国产精品每日更新| 成人欧美一区二区三区黑人麻豆| 欧美国产禁国产网站cc| 一区二区中文字幕在线| 欧美经典一区二区| 日本一区二区三区免费乱视频| 国产亚洲污的网站| 国产精品免费网站在线观看| 中文一区二区在线观看| 亚洲色图欧洲色图| 亚洲综合视频在线观看| 亚洲大片免费看| 免费在线观看视频一区| 国产一区二区在线看| 成人自拍视频在线观看| 色噜噜狠狠成人中文综合| 日本韩国一区二区三区| 欧美男男青年gay1069videost | 日本久久一区二区| 欧美性一二三区| 欧美一个色资源| 国产色婷婷亚洲99精品小说| 亚洲视频免费看| 日本亚洲免费观看| 国产精品一区二区三区99| 99热在这里有精品免费| 欧美日韩精品一区二区三区蜜桃| 91精品蜜臀在线一区尤物| 久久久99久久| 亚洲码国产岛国毛片在线| 日韩精品电影一区亚洲| 国产成人一区在线| 欧美综合色免费| 久久你懂得1024| 亚洲专区一二三| 国产成人综合自拍| 欧美系列日韩一区| 国产色爱av资源综合区| 亚洲高清免费一级二级三级| 麻豆精品在线观看| 色综合天天综合网天天看片| 精品国产亚洲在线| 亚洲综合激情另类小说区| 日韩精品久久久久久| 色综合欧美在线视频区| 久久亚洲一级片| 日韩国产高清影视| 91官网在线观看| 国产精品免费久久久久|