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

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

?? ch375blk.c

?? Ch372開發軟硬件詳細資料,硬件為CH372+8051 軟件為VB或VC皆有
?? C
字號:
/*
; CH375/CH372 Bulk Data Test
; U2(AT89C51) Program
; 本程序測試數據傳輸的正確性, 并通過收發大數據塊來測試傳輸速度,
; 本程序適用于時鐘頻率不高于24MHz的標準MCS-51單片機, 如果高于24MHz則應該適當增加延時, 如果低于24MHz則可以適當減少延時
; 只要單片機允許, 盡量使用較高的時鐘, 例如將原12MHz晶振換為24MHz,
; 因為MCS51單片機自身速度較慢,讀寫外部RAM需要2個周期以及附加的循環指令,即使24MHz時鐘也無法超過500KB/S
; 為了減少單片機自身對速度測試的影響,本程序中速度測試部分在單片機中斷服務程序中完成
;
; Website:  http://winchiphead.com
; Email:    tech@winchiphead.com
; Author:   W.ch 2003.09
*/

/* MCS-51單片機C語言的示例程序 */

#include <reg52.h>
#include <string.h>
#include "..\..\MCU_IF1\MCS51C\CH375INC.H"

/* #define USE_MY_USB_ID	YES */
#define MY_USB_VENDOR_ID	0x1234		/* 廠商ID */
#define MY_USB_DEVICE_ID	0x5678		/* 設備ID */

unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1;		/* CH375命令端口的I/O地址 */
unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0;		/* CH375數據端口的I/O地址 */

unsigned char THIS_CMD_CODE;  /* 保存當前命令碼 */
unsigned char RECV_LEN;       /* 剛接收到的數據的長度 */
unsigned char RECV_BUFFER[ CH375_MAX_DATA_LEN ];  /* 數據緩沖區,用于保存接收到的下傳數據,長度為0到64字節 */
/* 由于MCS-51單片機存取外部RAM的讀寫速度低于內部RAM, 并且需要用到DPTR, 所以讀寫速度較慢, 其程序可以參考本程序修改 */

/* 定義位標志 */
bit bdata FLAG_RECV_OK;       /* 接收成功標志,1指示成功接收到數據塊 */
bit bdata FLAG_SEND_WAIT;     /* 發送等待標志,1指示有數據塊正在CH375中等待發送 */

/* 應用層定義 */
/* TEST_OTHER		EQU    00H				;其它自定義的命令碼 */
#define TEST_START		0x20  /* 測試過程開始 */
#define TEST_DATA		0x21  /* 測試數據正確性 */
#define TEST_UPLOAD		0x22  /* 測試上傳數據塊 */
#define TEST_DOWNLOAD	0x23  /* 測試下傳數據塊 */

/* 有關CH451的定義,演示板的連接方式,該程序沒有用到鍵盤 */
sbit   CH451_dclk=P1^7;      /* 串行數據時鐘上升延激活 */
sbit   CH451_din=P1^6;	     /* 串行數據輸出,接CH451的數據輸入 */
sbit   CH451_load=P1^5;      /* 串行命令加載,上升延激活 */

/* 延時2微秒,不精確 */
void	Delay2us( )
{
	unsigned char i;
#define DELAY_START_VALUE	1  /* 根據單片機的時鐘選擇初值,20MHz以下為0,30MHz以上為2 */
	for ( i=DELAY_START_VALUE; i!=0; i-- );
}

/* 延時50毫秒,不精確 */
void	Delay50ms( )
{
	unsigned char i, j;
	for ( i=200; i!=0; i-- ) for ( j=250; j!=0; j-- );
}

/* CH451初始化子程序 */
void	CH451_Init( )
{
  CH451_din=0;         /* 先低后高,選擇4線輸入 */
  CH451_din=1;
}

/* CH451輸出命令子程序 */
/* 定義一無符號整型變量存儲12字節的命令字 */
void	CH451_Write( unsigned int command )
{
  unsigned char i;
  CH451_load=0;  /* 命令開始 */
  for( i=0; i<12; i++ ) {  /* 送入12位數據,低位在前 */
    CH451_din = command & 1;
    CH451_dclk = 0;
    command >>= 1;
    CH451_dclk = 1;  /* 上升沿有效 */
  }
  CH451_load = 1;  /* 加載數據 */
}

/* CH375初始化子程序 */
void	CH375_Init( )
{
	unsigned char i;
	FLAG_RECV_OK=0;  /* 清接收成功標志,1指示成功接收到數據塊 */
	FLAG_SEND_WAIT=0;  /* 清發送等待標志,1指示有數據塊正在CH375中等待發送 */
/* 測試CH375是否正常工作,可選操作,通常不需要 */
#ifdef TEST_CH375_FIRST
	CH375_CMD_PORT = CMD_CHECK_EXIST;  /* 測試CH375是否正常工作 */
	Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
	CH375_DAT_PORT = 0x55;  /* 寫入測試數據 */
	Delay2us( );
	i = ~ 0x55;  /* 返回數據應該是測試數據取反 */
	if ( CH375_DAT_PORT != i ) {  /* CH375不正常 */
		for ( i=80; i!=0; i-- ) {
			CH375_CMD_PORT = CMD_RESET_ALL;  /* 多次重復發命令,執行硬件復位 */
			Delay2us( );
		}
		CH375_CMD_PORT = 0;
		Delay50ms( );  /* 延時50ms */
	}
#endif
#ifdef USE_MY_USB_ID
/* 設置外部自定義的USB設備VID和PID,可選操作,不執行該命令則使用默認的VID和PID */
	CH375_CMD_PORT = CMD_SET_USB_ID;  /* 設置外部自定義的USB設備VID和PID,可選操作 */
	Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
	CH375_DAT_PORT = (unsigned char)MY_USB_VENDOR_ID;  /* 寫入廠商ID的低字節 */
	CH375_DAT_PORT = (unsigned char)(MY_USB_VENDOR_ID>>8);  /* 寫入廠商ID的高字節 */
	CH375_DAT_PORT = (unsigned char)MY_USB_DEVICE_ID;  /* 寫入設備ID的低字節 */
	CH375_DAT_PORT = (unsigned char)(MY_USB_DEVICE_ID>>8);  /* 寫入設備ID的高字節 */
	Delay2us( );
#endif
/* 設置USB工作模式, 必要操作 */
	CH375_CMD_PORT = CMD_SET_USB_MODE;
	Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
	CH375_DAT_PORT = 2;  /* 設置為使用內置固件的USB設備方式 */
	for ( i=100; i!=0; i-- ) {  /* 等待操作成功,通常需要等待10uS-20uS */
		if ( CH375_DAT_PORT==CMD_RET_SUCCESS ) break;
	}
/*	if ( i==0 ) { CH372/CH375存在硬件錯誤 }; */
/* 下述啟用中斷,假定CH375連接在INT0 */
	IT0 = 0;  /* 置外部信號為低電平觸發 */
	IE0 = 0;  /* 清中斷標志 */
	EX0 = 1;  /* 允許CH375中斷 */
}

/* CH375中斷服務程序,使用寄存器組1 */
void	mCh375Interrupt( ) interrupt 0 using 1
{
	unsigned char InterruptStatus;
	unsigned char length, c1;
	unsigned char data *cmd_buf;
	unsigned char data *ret_buf;
	CH375_CMD_PORT = CMD_GET_STATUS;  /* 獲取中斷狀態并取消中斷請求 */
	Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
	InterruptStatus = CH375_DAT_PORT;  /* 獲取中斷狀態 */
	IE0 = 0;  /* 清中斷標志,對應于INT0中斷 */
	if ( InterruptStatus == USB_INT_EP2_OUT ) {  /* 批量端點下傳成功 */
		CH375_CMD_PORT = CMD_RD_USB_DATA;  /* 從當前USB中斷的端點緩沖區讀取數據塊,并釋放緩沖區 */
		Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
		length = CH375_DAT_PORT;  /* 首先讀取后續數據長度 */
		if ( length != 0 ) {  /* 如果長度為0則不處理 */
			THIS_CMD_CODE = CH375_DAT_PORT;  /* 保存當前命令碼,因為我們測試程序與PC機應用程序約定首字節為命令碼 */
			if ( THIS_CMD_CODE == TEST_DOWNLOAD ) {  /* 測試下傳速度 */
				while ( --length != 0 )  /* 先減1以去掉首字節后 */
					c1 = CH375_DAT_PORT;  /* 接收數據,為了測試速度,數據舍棄,24MHz的MCS51每讀取一個字節需要2uS */
			}
			else {  /* 不是測試下傳速度的命令,先接收完命令包再分析 */
				RECV_LEN = length;  /* 命令包的數據長度 */
				cmd_buf = RECV_BUFFER;  /* 接收緩沖區 */
				*cmd_buf = THIS_CMD_CODE;
				while ( --length != 0 ) {  /* 先減1以去掉首字節后 */
					cmd_buf++;
					*cmd_buf = CH375_DAT_PORT;
				}
/* 以上程序C語言要每讀一個字節可能要十多個機器周期,如果用匯編語言只要4個機器周期
					mov  a,length
					jz   skip_get
					mov  r7,a
					mov  dptr,#CH375_DAT_PORT
get_next_byte:		movx a,@dptr    數據直接放棄
					djnz r7,get_next_byte
skip_get:			nop
*/
				if ( THIS_CMD_CODE == TEST_UPLOAD ) {  /* 測試上傳速度 */
					CH375_CMD_PORT = CMD_WR_USB_DATA7;  /* 向USB端點2的發送緩沖區寫入數據塊 */
					Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
					length = CH375_MAX_DATA_LEN;
					CH375_DAT_PORT = length;  /* 首先寫入后續數據長度 */
					do {
						CH375_DAT_PORT = TL0;  /* 發送偽隨機數數據,為了測試速度,數據無效,24MHz的MCS51每寫出一個字節需要2uS */
					} while ( --length != 0 );
				}
				else if ( THIS_CMD_CODE == TEST_START ) {  /* 測試過程開始 */
/* 由于上一次測試數據上傳速度時可能在上傳緩沖區中遺留有數據, 所以在第二次測試前需要清除上傳緩沖區 */
					CH375_CMD_PORT = CMD_SET_ENDP7;  /* 設置USB端點2的IN */
					Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
					CH375_DAT_PORT = 0x0e;  /* 同步觸發位不變,設置USB端點2的IN正忙,返回NAK */
					FLAG_SEND_WAIT = 0;  /* 清除發送等待標志,通知應用程序可以繼續發送數據 */
				}
				else if ( THIS_CMD_CODE == TEST_DATA ) {  /* 測試數據正確性,將接收到的命令包數據取反后返回給PC機 */
					CH375_CMD_PORT = CMD_WR_USB_DATA7;  /* 向USB端點2的發送緩沖區寫入數據塊 */
					Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
					ret_buf = RECV_BUFFER;  /* 接收緩沖區 */
					length = RECV_LEN;  /* 剛接收到的數據長度 */
					CH375_DAT_PORT = length;  /* 首先寫入后續數據長度 */
					if ( length ) {
						do {
							CH375_DAT_PORT = ~ *ret_buf;  /* 數據取反后返回,由計算機應用程序測試數據是否正確 */
							ret_buf++;
						} while ( --length != 0 );
					}
				}
				else {  /* 其它命令,尚未定義 */
					FLAG_RECV_OK = 1;  /* 其它命令,設置接收成功標志,通知應用程序取走數據再分析 */
				}
			}
		}
	}
	else if ( InterruptStatus == USB_INT_EP2_IN ) {  /* 批量數據發送成功 */
		if ( THIS_CMD_CODE == TEST_UPLOAD ) {  /* 測試上傳速度,繼續準備上傳數據 */
			CH375_CMD_PORT = CMD_WR_USB_DATA7;  /* 向USB端點2的發送緩沖區寫入數據塊 */
			Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
			length = CH375_MAX_DATA_LEN;
			CH375_DAT_PORT = length;  /* 首先寫入后續數據長度 */
			do {
				CH375_DAT_PORT = TL0;  /* 發送偽隨機數數據,為了測試速度,數據無效,24MHz的MCS51每寫出一個字節需要2uS */
			} while ( --length != 0 );
		}
		CH375_CMD_PORT = CMD_UNLOCK_USB;  /* 釋放當前USB緩沖區 */
		FLAG_SEND_WAIT = 1;  /* 清除發送等待標志,通知應用程序可以繼續發送數據 */
	}
	else if ( InterruptStatus == USB_INT_EP1_IN ) {  /* 中斷數據發送成功 */
		CH375_CMD_PORT = CMD_UNLOCK_USB;  /* 釋放當前USB緩沖區 */
	}
	else {  /* 內置固件的USB方式下不應該出現其它中斷狀態 */
	}
}

main( ) {
	unsigned char i;
	Delay50ms( );	/* 延時等待CH375初始化完成,如果單片機由CH375提供復位信號則不必延時 */
	CH375_Init( );  /* 初始化CH375 */
	CH451_Init( );  /* 初始化CH451 */
/* 啟動CH451的顯示驅動 */
	CH451_Write( 0x0401 );  /* 設置系統參數命令,使能顯示驅動 */
	CH451_Write( 0x0588 );  /* 設置顯示參數,BCD譯碼方式,8級亮度 */
	for ( i=0; i<8; ++i ) CH451_Write( (unsigned int)i << 8 | 0x0800 | i );  /* 依次顯示12345678 */
	EA = 1;  /* 允許中斷 */
	TR0 = 1;  /* 由定時器0自由計數值產生偽隨機數 */
	while ( 1 ) {  /* 以下指令開始工作循環,等待PC機命令進行操作 */
		if ( FLAG_RECV_OK ) {  /* 收到未定義的命令 */
			CH451_Write( 0x0300 );  /* 發出命令使CH451顯示左移一位,提示收到未定義命令 */
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女一区二区| 国产日韩综合av| 不卡av在线网| 日韩精品一级二级| 综合久久综合久久| 久久综合一区二区| 在线观看91av| 91麻豆swag| 成人免费高清视频在线观看| 日韩不卡一区二区| 亚洲欧美日韩小说| 欧美国产日韩在线观看| 日韩欧美亚洲国产另类| 欧美色偷偷大香| 色网综合在线观看| 成人性视频免费网站| 精品一区二区三区免费| 亚洲成av人片在www色猫咪| 综合色天天鬼久久鬼色| 日本一区二区三区视频视频| 精品日韩欧美一区二区| 91精品91久久久中77777| 精品一区二区三区香蕉蜜桃| 成人黄色777网| 亚洲欧美在线视频| 国产欧美日韩综合精品一区二区 | 三级欧美在线一区| 亚洲欧美偷拍另类a∨色屁股| 国产女人18毛片水真多成人如厕| 欧美大片在线观看一区| 91麻豆精品久久久久蜜臀| 欧美少妇一区二区| 欧美专区亚洲专区| 欧美午夜寂寞影院| 91国偷自产一区二区开放时间| 99久久婷婷国产综合精品| 高清shemale亚洲人妖| 国内成人精品2018免费看| 久久福利视频一区二区| 麻豆专区一区二区三区四区五区| 免费人成网站在线观看欧美高清| 婷婷夜色潮精品综合在线| 亚洲一区二区在线观看视频 | 久久99精品久久久久久国产越南 | 精品国产一区二区三区久久久蜜月| 欧美浪妇xxxx高跟鞋交| 69堂成人精品免费视频| 欧美剧情片在线观看| 欧美久久婷婷综合色| 91精品免费观看| 日韩欧美亚洲一区二区| 久久色在线视频| 国产精品污网站| 亚洲女人的天堂| 亚洲成av人综合在线观看| 热久久久久久久| 国产精品一区久久久久| 9色porny自拍视频一区二区| 色国产精品一区在线观看| 欧美人伦禁忌dvd放荡欲情| 日韩欧美一二三| 五月激情综合网| 精品一二线国产| 免费在线成人网| 亚瑟在线精品视频| 蜜桃免费网站一区二区三区| 国产精品一区二区在线观看网站| 成人激情动漫在线观看| 欧美色国产精品| 337p日本欧洲亚洲大胆色噜噜| 国产精品久线观看视频| 亚洲成人免费看| 国内精品久久久久影院薰衣草 | 久久精品99久久久| 国产成人亚洲精品青草天美| 91亚洲精品久久久蜜桃网站 | 欧美高清视频不卡网| 久久婷婷国产综合精品青草| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品影音先锋| 色香蕉成人二区免费| 精品少妇一区二区三区免费观看 | 一色屋精品亚洲香蕉网站| 日韩极品在线观看| 成人中文字幕电影| 欧美一区二区免费观在线| 国产精品第一页第二页第三页| 亚洲成人激情综合网| 国产91在线观看丝袜| 欧美剧在线免费观看网站| 国产精品色哟哟网站| 视频一区二区三区在线| 成人黄色在线看| 日韩免费看网站| 亚洲一级电影视频| 高清国产一区二区三区| 91麻豆精品国产91久久久久 | 欧美日韩国产在线播放网站| 精品国产乱码久久久久久图片| 亚洲综合色视频| 成人爱爱电影网址| 久久亚洲影视婷婷| 午夜私人影院久久久久| 欧美视频在线一区二区三区| 在线观看www91| 国产一区亚洲一区| 91久久人澡人人添人人爽欧美| 日韩欧美精品三级| 亚洲一区二区三区不卡国产欧美| 国产精品亚洲成人| 精品日韩99亚洲| 日韩高清一区二区| 欧美视频三区在线播放| 国产精品久久99| 国产精品99久久久久久宅男| 日韩欧美国产三级电影视频| 亚洲sss视频在线视频| 色婷婷综合久久久久中文| 中文字幕av不卡| 粉嫩13p一区二区三区| 精品不卡在线视频| 美洲天堂一区二卡三卡四卡视频| 在线视频欧美精品| 一区二区三区色| 91网站最新地址| 国产精品高清亚洲| 99久久精品国产一区| 国产精品女上位| 国产99一区视频免费| 国产婷婷一区二区| 麻豆精品国产传媒mv男同| 洋洋成人永久网站入口| 欧美老肥妇做.爰bbww视频| 日韩视频一区二区| 偷窥少妇高潮呻吟av久久免费| 欧美色爱综合网| 亚洲一区二区在线免费看| 在线视频中文字幕一区二区| 亚洲一区二区在线观看视频| 在线亚洲+欧美+日本专区| 一区二区三区在线看| 在线观看国产精品网站| 亚洲高清免费视频| 4hu四虎永久在线影院成人| 五月天激情综合| 日韩欧美高清dvd碟片| 蜜臀av在线播放一区二区三区| 精品国产三级a在线观看| 国产另类ts人妖一区二区| 国产日韩精品久久久| 成人av网站大全| 一区二区三区不卡视频| 欧美高清www午色夜在线视频| 欧美aa在线视频| 久久久亚洲精品石原莉奈| 成人福利电影精品一区二区在线观看| 国产精品卡一卡二卡三| 日本道免费精品一区二区三区| 亚洲不卡一区二区三区| 欧美电影免费观看高清完整版在| 国产一区二区三区综合| ...xxx性欧美| 美女一区二区三区| 国产精品一区二区三区乱码| 国产精品538一区二区在线| 亚洲福利视频一区二区| 中文字幕一区二区三区在线观看 | 视频一区二区不卡| 2021久久国产精品不只是精品| 成人网男人的天堂| 午夜精品一区在线观看| 日韩精品一区二区三区在线 | 欧美日韩午夜影院| 久久aⅴ国产欧美74aaa| 日韩美女精品在线| 日韩一区二区不卡| av不卡一区二区三区| 日韩精品亚洲一区二区三区免费| 国产日产欧美一区| 欧美日本韩国一区| 成人毛片在线观看| 日韩av在线免费观看不卡| 国产精品视频一二三区| 欧美一区二区三区免费观看视频| 粉嫩13p一区二区三区| 日韩精彩视频在线观看| 国产精品成人一区二区艾草 | 青青草原综合久久大伊人精品优势 | 亚洲h在线观看| 国产女人水真多18毛片18精品视频| 在线观看一区日韩| 成人一区在线观看| 日韩电影在线观看电影| 亚洲天堂免费在线观看视频| 精品国产制服丝袜高跟| 欧美色手机在线观看| 成人一区在线看| 精品一区二区三区久久| 五月天激情综合| 亚洲激情自拍视频|