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

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

?? ch375prt.c

?? CH375 控制代碼 CH375控制U盤,初始化代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* 2004.03.05, 2004.8.18
****************************************
**  Copyright  (C)  W.ch  1999-2004   **
**  Web:  http://www.winchiphead.com  **
****************************************
**  USB 1.1 Host Examples for CH375   **
**  KC7.0@MCS-51                      **
****************************************
*/
/* 單片機通過CH375控制USB打印機 */
/* 程序示例,C語言,CH375中斷為查詢方式,只負責數據傳輸,不涉及打印格式及打印描述語言 */

/* 以下定義適用于MCS-51單片機,其它單片機參照修改,為了提供C語言的速度需要對本程序進行優化 */
#include <reg51.h>
unsigned char volatile xdata	CH375_CMD_PORT _at_ 0xBDF1;	/* CH375命令端口的I/O地址 */
unsigned char volatile xdata	CH375_DAT_PORT _at_ 0xBCF0;	/* CH375數據端口的I/O地址 */
sbit	CH375_INT_WIRE	=		0xB0^2;	/* P3.2, INT0, 連接CH375的INT#引腳,用于查詢中斷狀態 */
typedef	unsigned char BOOL1;  /* typedef	bit	BOOL1; */

/* 以下為通用的單片機C程序 */
#include <string.h>
#include <stdio.h>

/* 定義CH375命令代碼及返回狀態 */
#include "CH375INC.H"

typedef unsigned char	UCHAR;
typedef unsigned short	USHORT;

typedef struct _USB_DEVICE_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT bcdUSB;
    UCHAR bDeviceClass;
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    UCHAR iManufacturer;
    UCHAR iProduct;
    UCHAR iSerialNumber;
    UCHAR bNumConfigurations;
} USB_DEV_DESCR, *PUSB_DEV_DESCR;

typedef struct _USB_CONFIG_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT wTotalLength;
    UCHAR bNumInterfaces;
    UCHAR bConfigurationValue;
    UCHAR iConfiguration;
    UCHAR bmAttributes;
    UCHAR MaxPower;
} USB_CFG_DESCR, *PUSB_CFG_DESCR;

typedef struct _USB_INTERF_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bInterfaceNumber;
    UCHAR bAlternateSetting;
    UCHAR bNumEndpoints;
    UCHAR bInterfaceClass;
    UCHAR bInterfaceSubClass;
    UCHAR bInterfaceProtocol;
    UCHAR iInterface;
} USB_ITF_DESCR, *PUSB_ITF_DESCR;

typedef struct _USB_ENDPOINT_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bEndpointAddress;
    UCHAR bmAttributes;
    USHORT wMaxPacketSize;
    UCHAR bInterval;
} USB_ENDP_DESCR, *PUSB_ENDP_DESCR;

typedef struct _USB_CONFIG_DESCRIPTOR_LONG {
	USB_CFG_DESCR	cfg_descr;
	USB_ITF_DESCR	itf_descr;
	USB_ENDP_DESCR	endp_descr[4];
} USB_CFG_DESCR_LONG, *PUSB_CFG_DESCR_LONG;

unsigned char buffer[64];		/* 公用緩沖區 */

/* 延時2微秒,不精確 */
void	delay2us( )
{
	unsigned char i;
	for ( i = 2; i != 0; i -- );
}

/* 延時1微秒,不精確 */
void	delay1us( )
{
	unsigned char i;
	for ( i = 1; i != 0; i -- );
}

/* 延時100毫秒,不精確 */
void	delay100ms( )
{
	unsigned char	i, j, c;
	for ( i = 200; i != 0; i -- ) for ( j = 200; j != 0; j -- ) c+=3;
}

/* 基本操作 */

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

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

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

unsigned char wait_interrupt() {  /* 主機端等待操作完成, 返回操作狀態 */
	while( CH375_INT_WIRE );  /* 查詢等待CH375操作完成中斷(INT#低電平) */
	CH375_WR_CMD_PORT( CMD_GET_STATUS );  /* 產生操作完成中斷, 獲取中斷狀態 */
	return( CH375_RD_DAT_PORT() );
}

#define	TRUE	1
#define	FALSE	0
unsigned char set_usb_mode( unsigned char mode ) {  /* 設置CH375的工作模式 */
	unsigned char i;
	CH375_WR_CMD_PORT( CMD_SET_USB_MODE );
	CH375_WR_DAT_PORT( mode );
	for( i=0; i!=100; i++ ) {  /* 等待設置模式操作完成,不超過30uS */
		if ( CH375_RD_DAT_PORT()==CMD_RET_SUCCESS ) return( TRUE );  /* 成功 */
	}
	return( FALSE );  /* CH375出錯,例如芯片型號錯或者處于串口方式或者不支持 */
}

/* 數據同步 */
/* USB的數據同步通過切換DATA0和DATA1實現: 在設備端, USB打印機可以自動切換;
   在主機端, 必須由SET_ENDP6和SET_ENDP7命令控制CH375切換DATA0與DATA1.
   主機端的程序處理方法是為設備端的各個端點分別提供一個全局變量,
   初始值均為DATA0, 每執行一次成功事務后取反, 每執行一次失敗事務后將其復位為DATA1 */

void toggle_recv( BOOL1 tog ) {  /* 主機接收同步控制:0=DATA0,1=DATA1 */
	CH375_WR_CMD_PORT( CMD_SET_ENDP6 );
	CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 );
	delay2us();
}

void toggle_send( BOOL1 tog ) {  /* 主機發送同步控制:0=DATA0,1=DATA1 */
	CH375_WR_CMD_PORT( CMD_SET_ENDP7 );
	CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 );
	delay2us();
}

unsigned char clr_stall( unsigned char endp_addr ) {  /* USB通訊失敗后,復位設備端的指定端點到DATA0 */
	CH375_WR_CMD_PORT( CMD_CLR_STALL );
	CH375_WR_DAT_PORT( endp_addr );
	return( wait_interrupt() );
}

/* 數據讀寫, 單片機讀寫CH375芯片中的數據緩沖區 */

unsigned char rd_usb_data( unsigned char *buf ) {  /* 從CH37X讀出數據塊 */
	unsigned char i, len;
	CH375_WR_CMD_PORT( CMD_RD_USB_DATA );  /* 從CH375的端點緩沖區讀取接收到的數據 */
	len=CH375_RD_DAT_PORT();  /* 后續數據長度 */
	for ( i=0; i!=len; i++ ) *buf++=CH375_RD_DAT_PORT();
	return( len );
}

void wr_usb_data( unsigned char len, unsigned char *buf ) {  /* 向CH37X寫入數據塊 */
	CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向CH375的端點緩沖區寫入準備發送的數據 */
	CH375_WR_DAT_PORT( len );  /* 后續數據長度, len不能大于64 */
	while( len-- ) CH375_WR_DAT_PORT( *buf++ );
}

/* 主機操作 */
unsigned char endp_out_addr;	/* 打印機數據接收端點的端點地址 */
unsigned char endp_out_size;	/* 打印機數據接收端點的端點尺寸 */
BOOL1	tog_send;				/* 打印機數據接收端點的同步標志 */
unsigned char endp_in_addr;		/* 打印機狀態發送端點的端點地址,為0則只支持單向接口 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区三区免费| 国产在线精品一区二区三区不卡 | 亚洲123区在线观看| 99re这里只有精品首页| 日韩美女视频一区| 在线观看区一区二| 日韩高清一级片| 日韩精品专区在线影院重磅| 精品伊人久久久久7777人| 久久久精品国产免大香伊| 国产福利一区二区| 亚洲免费视频成人| 欧美精品日韩一区| 国模无码大尺度一区二区三区| 精品成人一区二区三区| 成人听书哪个软件好| 亚洲欧美国产高清| 欧美一区二区三区精品| 国产福利一区二区三区视频在线 | 日韩美女天天操| 国产成人精品一区二区三区四区 | 2021国产精品久久精品| 国产99久久久精品| 一区二区三区中文字幕精品精品 | 久久久激情视频| 一本久久精品一区二区| 奇米影视一区二区三区| 欧美国产欧美综合| 欧美日韩在线播放| 韩国精品一区二区| 伊人性伊人情综合网| 欧美一区二区在线观看| 成人免费看黄yyy456| 亚洲国产一区二区视频| 久久蜜桃av一区精品变态类天堂| 91丨九色丨蝌蚪富婆spa| 青青草原综合久久大伊人精品| 国产精品毛片高清在线完整版 | 97精品视频在线观看自产线路二| 亚洲aaa精品| 中文字幕免费不卡| 日韩欧美国产精品一区| 99riav一区二区三区| 久久精品二区亚洲w码| 一区二区三区不卡视频 | 91福利资源站| 国产福利不卡视频| 日韩av电影天堂| 亚洲精品中文字幕乱码三区| 久久夜色精品国产欧美乱极品| 在线欧美小视频| 成人免费视频一区二区| 久久国产成人午夜av影院| 亚洲免费看黄网站| 国产精品区一区二区三区| 日韩一区二区三区免费看| 在线一区二区三区四区五区| 国产高清久久久久| 国精品**一区二区三区在线蜜桃| 亚洲成a人片在线观看中文| 亚洲视频狠狠干| 中文在线一区二区 | 欧美—级在线免费片| 日韩欧美一区在线| 欧美片在线播放| 91福利资源站| 在线精品视频免费观看| aa级大片欧美| 成人18视频在线播放| 成人中文字幕合集| 国产在线播放一区二区三区| 免费成人在线播放| 免费在线看一区| 日本人妖一区二区| 午夜一区二区三区在线观看| 一级女性全黄久久生活片免费| 国产精品久久久久久久久动漫| 久久久国产精品午夜一区ai换脸| 欧美岛国在线观看| 欧美va亚洲va在线观看蝴蝶网| 欧美一区二区视频在线观看2022| 欧美日韩不卡一区二区| 欧美无乱码久久久免费午夜一区| 色8久久人人97超碰香蕉987| 一本色道久久综合亚洲精品按摩| 色哟哟欧美精品| 欧美性色综合网| 欧美狂野另类xxxxoooo| 7777精品伊人久久久大香线蕉的 | 精品久久久久av影院| 精品动漫一区二区三区在线观看| 日韩三级免费观看| 2023国产精品| 中文字幕va一区二区三区| 日韩久久一区二区| 一区二区三区在线影院| 亚洲成人先锋电影| 麻豆91免费观看| 国产精品99久久久久久宅男| 粉嫩av一区二区三区| 91丨九色丨蝌蚪丨老版| 欧美日韩综合在线免费观看| 69久久99精品久久久久婷婷| 久久久亚洲精品石原莉奈| 欧美国产精品一区二区三区| 亚洲精品国产a久久久久久| 三级欧美韩日大片在线看| 美国三级日本三级久久99| 精品一区二区免费视频| 成人综合婷婷国产精品久久蜜臀| 色美美综合视频| 欧美不卡一区二区三区四区| 中文字幕不卡在线播放| 天天色图综合网| 国产米奇在线777精品观看| 色先锋资源久久综合| 欧美mv日韩mv国产| 亚洲精品自拍动漫在线| 久久99精品久久只有精品| 99久久婷婷国产综合精品电影| 欧美日韩成人高清| 国产精品久久综合| 日本女人一区二区三区| 大桥未久av一区二区三区中文| 欧美日韩一区小说| 国产精品久久久久aaaa| 性感美女久久精品| 成人精品国产福利| 91精品国产综合久久久蜜臀图片| 中文字幕av一区二区三区免费看| 亚洲自拍欧美精品| 久久国产乱子精品免费女| 国产91精品一区二区麻豆网站 | 欧美日韩国产区一| 久久精品一级爱片| 亚洲综合小说图片| 怡红院av一区二区三区| 国产白丝网站精品污在线入口| 91精彩视频在线| 国产午夜精品久久久久久免费视 | 久久69国产一区二区蜜臀| 国产福利精品一区二区| 欧美精品视频www在线观看| 精品日韩欧美在线| 欧美国产乱子伦| 国产一区二区在线免费观看| 99精品欧美一区| 精品成人免费观看| 亚洲电影激情视频网站| 成人免费看黄yyy456| 日韩欧美一区二区视频| 亚洲男人都懂的| 国产乱码字幕精品高清av| 99精品国产视频| 国产欧美日韩在线观看| 亚洲成国产人片在线观看| 成人丝袜18视频在线观看| 制服丝袜亚洲网站| 国产精品久久午夜| 国产福利91精品一区二区三区| 欧美日韩www| 亚洲激情五月婷婷| 国产精品夜夜嗨| 久久久久青草大香线综合精品| 亚洲成人av一区二区三区| 9色porny自拍视频一区二区| 精品国产成人系列| 韩国三级中文字幕hd久久精品| 欧美日高清视频| 亚洲自拍偷拍网站| 91美女在线观看| 日本一区二区三区久久久久久久久不| 日本少妇一区二区| 欧美日韩一区二区三区在线 | 制服丝袜激情欧洲亚洲| 亚洲精品国久久99热| 成人av网站免费| 综合自拍亚洲综合图不卡区| 成人性生交大合| 久久久精品国产99久久精品芒果| 狠狠色丁香久久婷婷综| 国产日韩精品一区| 国产91在线|亚洲| 国产欧美一区二区精品仙草咪 | 国产午夜亚洲精品理论片色戒 | 一区二区三区国产精华| eeuss鲁片一区二区三区| 亚洲国产高清aⅴ视频| jizz一区二区| 亚洲人成精品久久久久| 色噜噜久久综合| 亚洲成人一区二区| 日韩午夜激情免费电影| 久久精品999| 国产清纯在线一区二区www| 国产99精品视频| 亚洲成av人片在www色猫咪| 欧美日韩精品一区二区三区四区| 亚洲一区二区三区免费视频| 欧美少妇性性性|