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

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

?? usb375.c

?? EZ80 CPU 控制usb375芯片的實現(xiàn)USB 口通訊程序
?? C
字號:
#include <ez80.h>
#include <string.h>

#include "CH375INC.H"
#include "push.h"
//#include "storage.h"
#define PD2_IVECT 0x54
#define uchar unsigned char
#define uint unsigned int
#define ushort unsigned short
#define CH375_CMD_PORT (*(ISFR)0x31)
#define CH375_DAT_PORT (*(ISFR)0x30) 




unsigned char buffer[64];		/* 公用緩沖區(qū) */
uchar sendbuff[896];
uchar CH375RUSH=0;
uchar ready=0,finish=0;
extern struct parameter para;//菜單項的參數(shù)		
extern struct asc_parameter asc_para; //菜單項的參數(shù)asc
extern savepara storagepara;	//存儲區(qū)的參數(shù)	

extern void set_vector(unsigned short vector,void (*hndlr)(void));

extern void delay1us(void);
extern void delay2us(void);

extern void CH375_WR_CMD_PORT( unsigned char cmd );
extern void CH375_WR_DAT_PORT( unsigned char dat );
extern uchar CH375_RD_DAT_PORT( void );
extern unsigned char set_usb_mode( unsigned char mode );
extern void senddata(StorageNum);
extern void interrupt PD20_isr( void );
 
extern uchar RParameter(uchar Tsindex);
extern void para_to_ascpara(void);
extern uchar ReadStoragePara(uchar n);


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

/* 延時1微秒,不精確 */
void	delay1us( )
{
	unsigned char i;
	for ( i = 1; i != 0; i -- );
}
//////////////////////////////////////////////////
/* 以毫秒為單位延時,不精確,適用于24MHz時鐘 */
void	mDelaymS( unsigned char delay )
{
	unsigned char	i, j, c;
	for ( i = delay; i != 0; i -- ) {
		for ( j = 200; j != 0; j -- ) c += 3;  /* 在24MHz時鐘下延時500uS */
		for ( j = 200; j != 0; j -- ) c += 3;  /* 在24MHz時鐘下延時500uS */
	}
}

/* 基本操作 */

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

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

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

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



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

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

//////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
initusb() {
	unsigned char  data_to_send[200];  /* 緩沖區(qū) */
	unsigned char str_to_print[]="OK, support text print\n";
	unsigned char s,k,g,i;

for(k=0;k<0x0a;k++)
 {
   
   CH375_WR_CMD_PORT(0x06);
   CH375_WR_DAT_PORT(0xaa);
   g=CH375_RD_DAT_PORT();
   displaydata(460-20*k,70,(short)g,4,0);
   if(g==0x55&&k!=0) break;
   CH375_WR_CMD_PORT(0x05);
   mDelaymS(50);
   
   for(i=0;i<0x0a;i++)
   {
   	set_usb_mode( 2 );  /* 結(jié)束復(fù)位 */
   	delay2us();
   	if(CH375_RD_DAT_PORT()==CMD_RET_SUCCESS) break;
   }

  }
set_vector(PD2_IVECT,PD20_isr);
}
/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
	


//////////////////////////////////////////////////////////////////////////
void senddata()
{
   int i,j,k,StorageNum;
   uchar *p,g,s;
   int checkout=0;
   
   mDelaymS( 200 );
   set_usb_mode( 7 );  // 設(shè)置USB主機(jī)模式 /
   s=(*(ISFR)0x30);
   displaydata(370,45,(short)s,4,0);
   mDelaymS( 50 );  // 復(fù)位時間不少于1mS,建議為10mS /
   for(i=0;i<0x0a;i++)
   {
   	set_usb_mode( 2 );  // 結(jié)束復(fù)位 /
   	delay2us();
   	if(CH375_RD_DAT_PORT()==CMD_RET_SUCCESS) break;
   }
   
   
   mDelaymS( 100 );
   StorageNum=*STORAGENUM_H;
   StorageNum=(StorageNum<<8)+*STORAGENUM_L;
   
   ready=0;

   enusb();
   while(ready==0);
   //disusb();
   //發(fā)31組探頭參數(shù)
   for(i=0;i<31;i++)
   {
      for(k=0;k<5;k++) {s=RParameter(i); if(s!='f') break;}
      para_to_ascpara();
      p=(uchar*)&asc_para;
      for (j=0;j<sizeof(asc_para);j++,p++) {sendbuff[j]=*p;checkout+=*p;} 
      p=(uchar*)&storagepara;
      for (;j<( LEN_STORAGE+sizeof(asc_para) );j++,p++) {sendbuff[j]=*p;checkout+=*p;}
	  for(;j<893;j++) sendbuff[j]=0;
      *( (int*)(sendbuff+893) )=checkout;
      //for (j=0;j<824;j++) sendbuff[j]=i+1;   


      for(j=0;j<896;) 
      {
        for(k=0;k<64;k++) 
        buffer[k]=sendbuff[j++];
  finish=0;
    CH375_WR_CMD_PORT( CMD_UNLOCK_USB );
	CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  // 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 
	CH375_WR_DAT_PORT( 64 );  // 首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 
	for ( k = 0; k < 64; k ++ ) CH375_WR_DAT_PORT(buffer[ k ] );

      
        //enusb();
        while(finish==0);
        //disusb();
     }
  }

 //發(fā)存儲 
  for (i=1;i<=StorageNum;i++)
  {
  	//ReadStoragePara(i);
	
	for(k=0;k<5;k++) {s=ReadStoragePara(i); if(s!='f') break;}
	para_to_ascpara();
	p=(uchar*)&asc_para;
	for (j=0;j<sizeof(asc_para);j++,p++) {sendbuff[j]=*p;checkout+=*p;} 
        p=(uchar*)&storagepara;
        for (;j<( LEN_STORAGE+sizeof(asc_para) );j++,p++) {sendbuff[j]=*p;checkout+=*p;}
		for(;j<893;j++) sendbuff[j]=0;
        *( (int*)(sendbuff+893) )=checkout;
   
       for(j=0;j<896;) 
       {
        for(k=0;k<64;k++) 
        buffer[k]=sendbuff[j++];
   finish=0;
    //CH375_WR_CMD_PORT( CMD_UNLOCK_USB );
	CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
	CH375_WR_DAT_PORT( 64 );  /* 首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 */
	for ( k = 0; k < 64; k ++ ) CH375_WR_DAT_PORT(buffer[ k ] );

     
        //enusb();
        while(finish==0);
        //disusb();
      }
  }
  
     buffer[0]='e';
     buffer[1]='n';
     buffer[2]='d';
 finish=0;
     CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
     CH375_WR_DAT_PORT( 64 );  /* 首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 */
     for ( k = 0; k < 64; k ++ ) CH375_WR_DAT_PORT(buffer[ k ] );

    
     //enusb();
     while(finish==0);
    disusb();
}
////////=======================================/////////////////////

//////===========================================///////////////////
void interrupt PD20_isr( void )
{
	unsigned char InterruptStatus;
	unsigned char i, length;
	uchar buf[64];
//	static uchar testready=50;
	static uchar t='0';

	stascii(1,5,'z');
	CH375RUSH=1;
	CH375_WR_CMD_PORT( CMD_GET_STATUS );  /* 獲取中斷狀態(tài)并取消中斷請求 */
	InterruptStatus = CH375_RD_DAT_PORT( );  /* 獲取中斷狀態(tài) */
	switch ( InterruptStatus ) {  /* 分析中斷狀態(tài)處理 */
		case USB_INT_EP2_OUT: {  /* 批量端點下傳成功 */
			CH375_WR_CMD_PORT( CMD_RD_USB_DATA );  /* 從當(dāng)前USB中斷的端點緩沖區(qū)讀取數(shù)據(jù)塊,并釋放緩沖區(qū) */
			length=CH375_RD_DAT_PORT( );
			displaydata(460,1,(short)length,3,0);
			for ( i = 0; i < length; i ++ ) 
			buf[i] = CH375_RD_DAT_PORT( );
			if(ready==0)
			{
			  stascii(1,7,t++);
			 // if(buf[0]==137&&buf[1]==139&&buf[2]==141) //保留
			  if(buf[0]=='o'&&buf[1]=='k'&&buf[2]=='E'&&length==3)
			  {CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */	
			   CH375_WR_DAT_PORT(4);
			   for ( i = 0; i <2; i ++ ) CH375_WR_DAT_PORT( 0 );CH375_WR_DAT_PORT( *STORAGENUM_L );	CH375_WR_DAT_PORT(*STORAGENUM_H);		  
			   ready=1;wrasc1624(1,19,'%');
			  }

			  else if(buf[0]!='e'||buf[1]!='r'||buf[2]!='r'||length!=3)  			  
			  {CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );
			  CH375_WR_DAT_PORT(length);stascii(1,29,'*');

			  for ( i = 0; i < length; i ++ ) CH375_WR_DAT_PORT( ~ buf[ i ] );
			  }
			}  
//////////////////////////////////
			else
			{			
			  //for ( i = 0; i < 3; i ++ ) 
			  //buf[0] = CH375_RD_DAT_PORT( );
			  //if(buf[0]==137&&buf[1]==139&&buf[2]==141)
			  stascii(460,20,'@');
			  {
			    CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
			    CH375_WR_DAT_PORT( 64 );  /* 首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 */
			    for ( i = 0; i < 64; i ++ ) CH375_WR_DAT_PORT(buffer[ i ] );
			  }
			/* 測試數(shù)據(jù)正確性,將接收到的命令包數(shù)據(jù)取反后返回給PC機(jī) */
			}  
			//CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
			//CH375_WR_DAT_PORT( length );  /* 首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 */
			//for ( i = 0; i < length; i ++ ) CH375_WR_DAT_PORT( ~ buff[ i ] );  /* 數(shù)據(jù)取反后返回,由計算機(jī)應(yīng)用程序測試數(shù)據(jù)是否正確 */
			break;
		}
		case USB_INT_EP2_IN: {  /* 批量數(shù)據(jù)發(fā)送成功 */
			stascii(460,30,'&');
		if(ready==1) finish=1;
		//else  
		//{
		  //testready--;
		  //if(testready==0) {ready=1;testready=50;}
		//}  
		      
		CH375_WR_CMD_PORT( CMD_UNLOCK_USB );  /* 釋放當(dāng)前USB緩沖區(qū) */			
		break;
		}
		default: {  /* 其它中斷,未用到,解鎖后退出即可 */
			CH375_WR_CMD_PORT( CMD_UNLOCK_USB );  /* 釋放當(dāng)前USB緩沖區(qū) */
			break;
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色欧美片视频在线观看在线视频| 精品一区二区综合| 色综合天天性综合| 亚洲精品国产a久久久久久 | 国产精品99久| 中文字幕欧美三区| 91官网在线免费观看| 亚洲大片在线观看| 欧美精品一区二区三区在线 | 91麻豆精品国产综合久久久久久| 日本免费在线视频不卡一不卡二| 精品国产91久久久久久久妲己| 国产剧情在线观看一区二区| 国产精品久久久久婷婷二区次| 色成人在线视频| 美女在线观看视频一区二区| 久久久精品中文字幕麻豆发布| 91麻豆免费观看| 日韩电影在线看| 欧美激情一区二区三区全黄| 色婷婷av久久久久久久| 久久电影网站中文字幕| 亚洲欧洲国产日韩| 日韩欧美色综合| 99国产精品久久久久久久久久久 | 欧美羞羞免费网站| 国产综合成人久久大片91| 亚洲视频一二三| 日韩限制级电影在线观看| 99久久777色| 麻豆精品在线看| 亚洲美女偷拍久久| 亚洲精品一区二区三区福利| 91日韩精品一区| 韩日av一区二区| 亚洲一区免费视频| 久久毛片高清国产| 欧美日韩亚洲综合在线 | 日韩欧美成人午夜| 色综合久久久久网| 国产在线视频一区二区三区| 亚洲一区二区四区蜜桃| 国产欧美一区二区精品婷婷| 欧美日韩激情一区二区三区| 成人黄色a**站在线观看| 久久国产婷婷国产香蕉| 亚洲成人综合视频| 亚洲婷婷综合色高清在线| 精品理论电影在线观看| 欧美日韩成人综合在线一区二区| 99久免费精品视频在线观看 | 成人av电影在线| 美女一区二区久久| 亚洲综合小说图片| 国产精品美女久久久久av爽李琼 | 久久影院午夜论| 91精品国产综合久久久久久| 色婷婷精品久久二区二区蜜臂av| 韩国成人福利片在线播放| 午夜精品久久久久久不卡8050| 18成人在线视频| 中文字幕不卡在线播放| 久久久天堂av| 久久尤物电影视频在线观看| 精品国产乱码久久久久久蜜臀| 777午夜精品免费视频| 欧美在线观看你懂的| 91麻豆蜜桃一区二区三区| av综合在线播放| 成人av在线一区二区| 国产精品66部| 国产福利91精品一区二区三区| 韩日欧美一区二区三区| 久久99精品国产麻豆不卡| 蜜桃视频第一区免费观看| 五月天一区二区三区| 午夜婷婷国产麻豆精品| 亚洲一区二区三区爽爽爽爽爽| 亚洲免费在线观看| 亚洲黄色小说网站| 亚洲制服丝袜av| 日韩精品五月天| 久久成人精品无人区| 国产在线播放一区| 成人性色生活片| 99久久精品国产麻豆演员表| 91丝袜国产在线播放| 色呦呦国产精品| 欧美日韩亚洲综合| 日韩精品一区二区三区四区| 日韩精品一区二区三区蜜臀 | 国产精品久久777777| 亚洲伦理在线精品| 午夜精品久久久久久久| 久久99国产精品尤物| 成人手机在线视频| 一本久道中文字幕精品亚洲嫩| 在线免费观看日本欧美| 4438x亚洲最大成人网| www欧美成人18+| 青草国产精品久久久久久| 激情图区综合网| 风流少妇一区二区| 91精品1区2区| 91.xcao| 久久精品亚洲一区二区三区浴池| 中文字幕av一区二区三区高| 亚洲免费av高清| 欧美96一区二区免费视频| 国产福利精品一区二区| 欧美在线影院一区二区| 久久午夜色播影院免费高清| 亚洲精品自拍动漫在线| 久久99精品国产麻豆婷婷洗澡| jiyouzz国产精品久久| 在线不卡a资源高清| 欧美激情一区二区三区全黄| 亚洲3atv精品一区二区三区| 激情图片小说一区| 欧美三级欧美一级| 国产精品天干天干在观线| 日韩精品免费专区| 99久久99久久综合| 久久奇米777| 亚洲成av人片在www色猫咪| 国产精品18久久久久| 欧美在线观看一二区| 国产精品天美传媒| 麻豆国产一区二区| 欧美日韩一区二区电影| 国产精品看片你懂得| 精油按摩中文字幕久久| 欧美一a一片一级一片| 欧美国产精品一区二区三区| 日韩av在线发布| 色综合激情五月| 久久久久99精品一区| 日韩精品欧美精品| 欧美三级中文字| 亚洲欧洲国产日韩| 国产成人aaa| 久久日一线二线三线suv| 日韩中文字幕麻豆| 91久久免费观看| 国产精品福利电影一区二区三区四区| 美腿丝袜亚洲三区| 日韩一级片在线观看| 亚洲一本大道在线| 色婷婷av一区二区三区大白胸| 日本一区二区视频在线观看| 国产自产高清不卡| 日韩一级黄色片| 日韩av中文字幕一区二区| 欧美精品视频www在线观看| 亚洲一级二级三级| 在线观看成人免费视频| 国产精品国产三级国产有无不卡| 国产乱码精品一区二区三区av | 丁香婷婷综合色啪| 久久久久久久久岛国免费| 另类小说欧美激情| 日韩欧美国产一区二区三区| 日本女人一区二区三区| 91精品国产品国语在线不卡| 日韩黄色免费电影| 日韩一本二本av| 裸体一区二区三区| 精品国产一区二区在线观看| 久久国产精品色| 欧美精品一区二区三区在线播放 | 欧美mv和日韩mv的网站| 免费成人美女在线观看.| 日韩女优电影在线观看| 精品亚洲成a人| 欧美国产丝袜视频| 成人av免费在线观看| 一区二区三区电影在线播| 欧美日韩中文字幕一区| 五月综合激情日本mⅴ| 3atv一区二区三区| 加勒比av一区二区| 国产精品电影一区二区三区| 色综合激情久久| 免费精品99久久国产综合精品| 日韩免费成人网| 国产精品123区| 亚洲欧美精品午睡沙发| 欧美日本精品一区二区三区| 久久99精品网久久| 亚洲欧洲精品成人久久奇米网| 欧美午夜一区二区| 久久99国产精品免费网站| 国产精品无人区| 欧美三级中文字| 国产乱码一区二区三区| 夜夜嗨av一区二区三区中文字幕| 欧美一级xxx| www.欧美日韩国产在线| 亚洲国产精品久久人人爱蜜臀| 精品入口麻豆88视频|