該程序的功能是通過控制芯片CH376對U盤文件和目錄進_第1頁
該程序的功能是通過控制芯片CH376對U盤文件和目錄進_第2頁
該程序的功能是通過控制芯片CH376對U盤文件和目錄進_第3頁
該程序的功能是通過控制芯片CH376對U盤文件和目錄進_第4頁
該程序的功能是通過控制芯片CH376對U盤文件和目錄進_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

//該程序的功能是通過控制芯片CH376對U盤文件和目錄進行操作//在單片機系統(tǒng)中使用U盤,主要目的是長期保存大批量的文件數(shù)據(jù),并方便與PC機進行數(shù)據(jù)交換//在一般情況下,這些數(shù)據(jù)會轉(zhuǎn)移到PC機,并由它做進一步的后續(xù)處理//所以該實驗安排了以下的硬件環(huán)境:51實驗主板+keil仿真器+CH376讀寫U盤擴展板//在該擴展板上還安排有轉(zhuǎn)接PC機USB口的電纜接口和切換開關(guān)92MHz,//該程序首先對CH376按主機工作方式進行初始化,然后等待U盤的插入和就緒//此后,用戶可通過按鍵以字節(jié)操作方式(另一種為扇區(qū)操作方式)實現(xiàn)以下功能//K1鍵--打開或創(chuàng)建1級子目錄/20yy,修改它的生成日期和時間,然后關(guān)閉//K2鍵--在前一操作的基礎(chǔ)上,打開或創(chuàng)建2級子目錄/20yy/mm-dd,修改它的生成日期和時間,然后關(guān)閉//K3鍵--在2級子目錄下打開或創(chuàng)建文本文件DEMO1.TXT,追加模擬數(shù)據(jù)塊,修改目錄項后關(guān)文件//K4鍵--第1步:在1級子目錄下創(chuàng)建二進制文件DEMO2.DAT,寫入18B20測溫數(shù)據(jù)2B和讀1302得到的時間數(shù)據(jù)6B//修改目錄項后關(guān)文件;第2步:再次打開該文件,讀取文件中的8B數(shù)據(jù),先顯示十六進制原始數(shù)據(jù)//經(jīng)處理后再顯示實際的溫度,年月日和時分秒//若程序運行出錯(如中途拔出U盤),它就會進入一個出錯處理的死循環(huán),此時實驗主板上的8個紅色LED會不斷閃爍//注意程序中的C函數(shù)分別來自本書作者(函數(shù)名全部小寫)和沁恒公司(函數(shù)名大小寫并用)//由沁恒公司提供的源代碼以文件包含的形式被利用,其中//2,文件DEBUG.C中的源碼用于系統(tǒng)出錯指示和調(diào)試時能通過串口來輸出調(diào)試信息,一般也要適當(dāng)修改//3,文件FILE_SYS.C中的源碼不會全部用到,對那些沒有用到C函數(shù)最后應(yīng)進行清理(一般是將它們注釋掉)//該程序在運行中會輸出較多的調(diào)試信息,注意它們將顯示在串口窗口#1,這些信息與輸出到文件中的數(shù)據(jù)不是一回事//1,文件打開方式不同:前者是打開文件,若原先沒有則創(chuàng)建;后者是創(chuàng)建文件,若原先有將抹去重建//2,數(shù)據(jù)表示形式不同:前者是寫入文本,并以逗號來間隔數(shù)據(jù),以回車換行來結(jié)束記錄;后者是直接寫入原始數(shù)據(jù)//3,數(shù)據(jù)寫入方式不同:前者是追加數(shù)據(jù)到文件尾;后者是從頭寫入數(shù)據(jù),所以原有數(shù)據(jù)將被覆蓋//ProgramSize:data=121.2xdata=0code=7411//以下頭文件由uVision提供,存于系統(tǒng)子目錄#include<reg52.h>#include<stdio.h>#include<string.h>#include<intrins.h>#include<absacc.h>//以下文件由沁恒公司提供,存于當(dāng)前項目,有些經(jīng)過修改#include"CH376INC.H" //說明操作CH376需要用到的數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)#include"HAL.H" //說明軟件延時函數(shù)#include"HAL_BASE.C" //經(jīng)修改,內(nèi)含2個軟件延時函數(shù)#include"SPI_SW.C" //經(jīng)修改,內(nèi)含軟件模擬SPI需要用到的一批函數(shù)#include"DEBUG.H" //說明系統(tǒng)出錯處理和UART串口初始化函數(shù)#include"DEBUG.C" //經(jīng)修改,內(nèi)含出錯處理和UART串口初始化函數(shù)#defineEN_DIR_CREATE1 //允許新建多級子目錄#include"FILE_SYS.H" //說明一批文件目錄操作類的函數(shù)和數(shù)據(jù)#include"FILE_SYS.C" //內(nèi)含一批文件目錄操作類的函數(shù)#defineucharunsignedchar#defineuintunsignedint#defineON0#defineOFF1#define FILE_MODIFY0#defineFILE_CREATE 1#defineRST_1302A15=0;A14=A13=1; //1302復(fù)位有效#defineNRST_1302A15=A14=A13=0; //1302復(fù)位無效#defineskiprom_cmd1820();wr_byte1820(0xcc); //跳過ROM操作(不識別芯片)#defineconvert_cmd1820();wr_byte1820(0x44); //啟動測溫轉(zhuǎn)換#definewrscrat_cmd1820();wr_byte1820(0x4e); //擬寫高速暫存#definerdscrat_cmd1820();wr_byte1820(0xbe); //擬讀高速暫存#definecopyscrat_cmd1820();wr_byte1820(0x48); //將高速暫存復(fù)制到EERAM保存sbitBEEP=P1^3; //蜂鳴器控制端sbitDQ_1820=P1^0; //18B20的DQ端sbitDIO_1302=P1^1; //1302的DIO端sbitCLK_1302=P1^2; //1302的CLK端sbitDAT_164=P3^4; //74HC164串入端DATsbitCLK_164=P3^5; //74HC164時鐘端CLKuchartime[7]={0,0,8,1,4,4,0x10}; //初始時間設(shè)為2010年4月1日8:00:00星期4uchardisbuf[6]; //數(shù)碼管顯示緩沖區(qū)ucharkeyvalue; //存按鍵鍵值bitKEY_FLG; //鍵按下標(biāo)志union //利用該結(jié)構(gòu)來分離測溫數(shù)據(jù)中的高/低8位{inti;ucharc[2];}temp; //擬存溫度數(shù)據(jù)volatileucharidatabuf[52],buf1[6]; //文件操作時作數(shù)據(jù)緩沖區(qū)使用uintfdate,fclk; //修改目錄項中時間數(shù)據(jù)時使用uintlen; //保存讀文件數(shù)據(jù)塊時實際讀到的數(shù)據(jù)長度uchars; //保存CH376的操作狀態(tài)或出錯代碼uchari; //循環(huán)控制用ucharcodeseg[]={ //七段碼表0x3f,0x06,0x5b,0x4f,0x66, //0~40x6d,0x7d,0x07,0x7f,0x6f, //5~90x77,0x7c,0x39,0x5e,0x79, //A~E0x71,0x40,0x46,0x00,0x76, //F,-,-1,全滅0xbf,0x86,0xdb,0xcf,0xe6, //0.~4.0xed,0xfd,0x87,0xff,0xef //5.~9.};voiddelay_10us(ucharn) //10微秒級延時{do{_nop_();_nop_();_nop_();_nop_();_nop_();}while(--n);}voiddelay_ms(uintn) //毫秒級延時{dodelay_10us(131);while(--n);}voidsendchar(ucharch) //向數(shù)碼管送1位顯示數(shù)碼{uchari;for(i=0;i<8;i++){DAT_164=ch&0x01;CLK_164=0; CLK_164=1;ch>>=1;}}voiddisplay() //將顯示緩沖區(qū)數(shù)據(jù)送數(shù)碼管顯示{uchari;for(i=0;i<6;i++)sendchar(seg[disbuf[i]]);}voidwr_byte1302(uchardat) //底層函數(shù),寫1B到1302{uchari;for(i=8;i>0;i--){DIO_1302=dat&0x01;CLK_1302=1;CLK_1302=0;dat>>=1;}}ucharrd_byte1302() //底層函數(shù),從1302讀1B{uchari,dat=0;for(i=8;i>0;i--){dat>>=1;if(DIO_1302)dat|=0x80;CLK_1302=1;CLK_1302=0;}return(dat);}voidwr_addr_byte1302(ucharaddr,uchardat) //向指定地址寫單字節(jié)數(shù)據(jù){RST_1302 //復(fù)位1302CLK_1302=0;NRST_1302wr_byte1302(addr); //寫地址/命令wr_byte1302(dat); //寫數(shù)據(jù)CLK_1302=1;RST_1302 //復(fù)位1302}voidwr_time_burst1302(uchar*ptr) //突發(fā)方式寫1302時鐘,ptr為寫數(shù)據(jù)指針{uchari;wr_addr_byte1302(0x8e,0x00); //去寫保護RST_1302 //復(fù)位1302CLK_1302=0;NRST_1302wr_byte1302(0xbe); //0xbe為突發(fā)寫時鐘命令for(i=7;i>0;i--) //7B時鐘{wr_byte1302(*ptr); //寫1B數(shù)據(jù)ptr++;}wr_byte1302(0x80); //加寫保護CLK_1302=1;RST_1302 //復(fù)位1302}voidrd_time_burst1302(uchar*ptr) //突發(fā)方式讀1302時鐘,ptr讀數(shù)據(jù)指針{uchari;RST_1302 //復(fù)位1302CLK_1302=0;NRST_1302wr_byte1302(0xbf); //0xbf為突發(fā)讀時鐘命令for(i=7;i>0;i--){*ptr=rd_byte1302(); //讀1B數(shù)據(jù)ptr++;}RST_1302 //復(fù)位1302}voidreset_1820() //復(fù)位18B20{DQ_1820=0;delay_10us(60); //延時約500us(要求>480us)DQ_1820=1; //主機上拉DQ_1820delay_10us(7); //延時約60uSwhile(!DQ_1820); //等18B20送出0}voidwr_byte1820(uchardat) //寫18B20{uchari;for(i=0;i<8;i++) //依次發(fā)送8位數(shù)據(jù){DQ_1820=0;delay_10us(2); //延時約20usDQ_1820=dat&0x01;dat>>=1;delay_10us(7); //延時約60usDQ_1820=1; //主機上拉DQ_1820}}ucharrd_byte1820() //讀18B20{uchari,dat=0;for(i=0;i<8;i++) //依次接收8位數(shù)據(jù){dat>>=1;DQ_1820=0; //主機下拉DQ_1820DQ_1820=1; //主機上拉DQ_1820if(DQ_1820)dat|=0x80;delay_10us(7); //滿足延時要求58us}returndat;}voidres1820_to_disbuf() //處理轉(zhuǎn)換結(jié)果并送顯示緩沖區(qū){uchari;uchartint; //用它處理溫度數(shù)據(jù)的整數(shù)部分uinttdec; //用它處理溫度數(shù)據(jù)的小數(shù)部分disbuf[0]=18; //正數(shù)時顯示空格if(temp.i<0){disbuf[0]=16; //顯示"-"temp.i=-temp.i; //負(fù)數(shù)取絕對值}tint=temp.i>>4; //右移4位后得8位整數(shù)(折合3位十進制)disbuf[1]=tint/100; //取百位上數(shù)據(jù)disbuf[2]=tint/10%10; //取十位上數(shù)據(jù)disbuf[3]=tint%10+20; //取個位上數(shù)據(jù)并加小數(shù)點i=1; //消隱數(shù)碼顯示前導(dǎo)0while(disbuf[i]==0)disbuf[i++]=18;tdec=temp.c[1]&0x0f; tdec=tdec*625+50; //小數(shù)作整數(shù)處理避免浮點運算(保留2位小數(shù))disbuf[4]=tdec/1000; //取十分之一位數(shù)據(jù)disbuf[5]=tdec/100%10; //取百分之一位數(shù)據(jù)}voidkey_prc() //按鍵處理{ucharkey;key=XBYTE[0x2000]; //讀鍵盤口if(key!=0xff) //有按鍵{BEEP=ON; //延時去抖,蜂鳴器鳴響delay_ms(10);BEEP=OFF;KEY_FLG=1; //設(shè)置標(biāo)志if((key=XBYTE[0x2000])!=0xff) //再讀鍵盤口{keyvalue=0; //獲取鍵值while(key&0x01!=0){key>>=1;keyvalue++;}if(!INT1)keyvalue+=8; //擴展鍵if(keyvalue>=16)KEY_FLG=0; //無效鍵while(XBYTE[0x2000]!=0xff); //等釋放delay_ms(15); //延時去抖}}}voidget_ftime() //從1302讀時間換算成目錄項中的日期時間形式{uchart1,t2,t3;rd_time_burst1302(time); //突發(fā)讀1302時間數(shù)據(jù)t1=2000+time[6]/16*10+time[6]%16; //年數(shù)據(jù)從壓縮BCD碼換算為十進制(20yy)t2=time[4]/16*10+time[4]%16; //月數(shù)據(jù)從壓縮BCD碼換算為十進制t3=time[3]/16*10+time[3]%16; //日數(shù)據(jù)從壓縮BCD碼換算為十進制fdate=MAKE_FILE_DATE(t1,t2,t3); //得到目錄項中需要的日期數(shù)據(jù)形式t1=time[2]/16*10+time[2]%16; //時數(shù)據(jù)從壓縮BCD碼換算為十進制t2=time[1]/16*10+time[1]%16; //分?jǐn)?shù)據(jù)從壓縮BCD碼換算為十進制t3=time[0]/16*10+time[0]%16; //秒數(shù)據(jù)從壓縮BCD碼換算為十進制fclk=MAKE_FILE_TIME(t1,t2,t3); //得到目錄項中需要的時間數(shù)據(jù)形式}voidmodify_ftime(ucharmod) //文件/目錄打開后修改目錄項中的創(chuàng)建/修改時間{s=CH376DirInfoRead(); //讀目錄項信息,相關(guān)數(shù)據(jù)調(diào)芯片內(nèi)存if(s==USB_INT_SUCCESS){buf[0]=(uchar)fdate; //形成日期低8位buf[1]=(uchar)(fdate>>8); //形成日期高8位buf[2]=(uchar)fclk; //形成時間低8位buf[3]=(uchar)(fclk>>8); //形成時間高8位if(mod) //寫文件/目錄創(chuàng)建的日期時間{CH376WriteOfsBlock(buf,STRUCT_OFFSET(FAT_DIR_INFO,DIR_CrtDate),2); //寫2B創(chuàng)建日期CH376WriteOfsBlock(buf+2,STRUCT_OFFSET(FAT_DIR_INFO,DIR_CrtTime),2); //寫2B創(chuàng)建時間}else //寫文件/目錄最近一次修改的日期時間{CH376WriteOfsBlock(buf,STRUCT_OFFSET(FAT_DIR_INFO,DIR_WrtDate),2); //寫2B修改日期CH376WriteOfsBlock(buf+2,STRUCT_OFFSET(FAT_DIR_INFO,DIR_WrtTime),2); //寫2B修改時間}s=CH376DirInfoSave(); //保存目錄項mStopIfError(s); //出錯處理}}voidwork0() //打開或新建1級子目錄并修改目錄項中的時間數(shù)據(jù){printf("OpenorcreateDir.:\n"); //PC顯示將打開或生成1級子目錄sprintf(buf,"/20%b02X",time[6]); //將1級目錄名格式化到字符數(shù)組bufprintf(buf);printf("\n"); //PC顯示1級目錄為\20yys=CH376DirCreate(buf); //打開或新建目錄mStopIfError(s); //出錯處理get_ftime(); //得到用于文件/目錄的時間數(shù)據(jù)modify_ftime(FILE_CREATE); //修改目錄創(chuàng)建時間modify_ftime(FILE_MODIFY); //修改目錄修改時間printf("ClosetheDir.\n\n"); //PC顯示將關(guān)閉該目錄s=CH376FileClose(FALSE); //關(guān)閉該目錄mStopIfError(s); //出錯處理}voidwork1() //打開或新建2級子目錄并修改目錄項中的時間數(shù)據(jù){printf("OpenorcreateDir.:\n"); //PC顯示將打開或生成2級子目錄sprintf(buf,"/20%b02X/%b02X-%b02X",time[6],time[4],time[3]); //將路徑格式化到字符數(shù)組bufprintf(buf);printf("\n"); //PC顯示2級目錄為\20yy\mm-dds=CH376DirCreatePath(buf); //打開或新建目錄mStopIfError(s); //出錯處理get_ftime(); //得到用于文件/目錄的時間數(shù)據(jù)modify_ftime(FILE_CREATE); //修改目錄創(chuàng)建時間modify_ftime(FILE_MODIFY); //修改目錄修改時間printf("ClosetheDir.\n\n"); //PC顯示將關(guān)閉該目錄s=CH376FileClose(FALSE); //關(guān)閉該目錄mStopIfError(s); //出錯處理}voidwork2() {printf("Openorcreatefile:\n"); //PC顯示打開或新建文件DEMO1.TXTsprintf(buf,"/20%b02X/%b02X-%b02X",time[6],time[4],time[3]); //將路徑格式化到字符數(shù)組bufstrcat(buf,"/DEMO1.TXT"); //路徑名連接文件名printf(buf);printf("\n"); //PC顯示文件的完整路徑s=CH376FileOpenPath(buf); //打開文件,若已存在則先刪再建if(s==USB_INT_SUCCESS) //文件存在時打開,移動指針到文件尾{printf("Openandlocatetail\n"); //PC顯示文件打開指針移到文件尾s=CH376ByteLocate(0xFFFFFFFF); //指針移到文件尾mStopIfError(s); //出錯處理}elseif(s==ERR_MISS_FILE) //未找到文件需要新建{printf("Create\n"); //PC顯示新建文件s=CH376FileCreatePath(NULL); //新建文件,文件名剛才已提供mStopIfError(s); //出錯處理get_ftime(); //得到用于文件/目錄的時間數(shù)據(jù)modify_ftime(FILE_CREATE); //修改文件創(chuàng)建時間}elsemStopIfError(s); //打開文件時出錯printf("Filesize=%ldB\n",CH376GetFileSize()); //PC顯示文件原先的長度printf("Writebegin\n"); //PC顯示寫數(shù)據(jù)開始buf[0]='\0'; //將多個數(shù)據(jù)依次格式化并連接到字符數(shù)組buffor(i=0;i<15;i++) //前15個數(shù)據(jù){sprintf(buf1,"%b2d,",i); //格式化到字符數(shù)組buf1strcat(buf,buf1); //連接到字符數(shù)組bufprintf(buf1); //PC顯示要寫入的數(shù)據(jù)}sprintf(buf1,"%b2d\r\n",i); //最后1個數(shù)據(jù)格式化到字符數(shù)組buf1strcat(buf,buf1); //連接到字符數(shù)組bufprintf(buf1); //PC顯示要寫入的最后一個數(shù)據(jù)s=CH376ByteWrite(buf,strlen(buf),NULL); //以字節(jié)寫形式將數(shù)據(jù)塊寫入文件mStopIfError(s); //出錯處理printf("Writeend\n"); //PC顯示寫數(shù)據(jù)結(jié)束printf("Filesize=%ldB\n",CH376GetFileSize()); //提示文件現(xiàn)在的長度get_ftime(); //得到用于文件/目錄的時間數(shù)據(jù)modify_ftime(FILE_MODIFY); //修改文件修改時間s=CH376FileClose(TRUE); //關(guān)閉文件并更新文件的字節(jié)長度mStopIfError(s);}voidwork3() {printf("Createfile:\n"); //PC顯示新建文件sprintf(buf,"/20%b02X/DEMO2.DAT",time[6]); //將文件名格式化到字符數(shù)組bufprintf(buf);printf("\n"); //PC顯示文件的完整路徑s=CH376FileCreatePath(buf); //新建文件,若文件原來存在將刪除重建mStopIfError(s); //出錯處理printf("Filesize=%ldB\n",CH376GetFileSize()); //PC顯示文件原先的長度reset_1820(); //復(fù)位18B20skiprom_cmd1820(); //跳過ROM操作(不進行芯片識別)convert_cmd1820(); //啟動測溫delay_ms(750); //延時等轉(zhuǎn)換結(jié)束,12位精度約需750msreset_1820(); //復(fù)位18B20skiprom_cmd1820(); //跳過ROM操作rdscrat_cmd1820(); //擬讀高速暫存temp.c[1]=buf[0]=rd_byte1820(); //讀18B20測溫2B數(shù)據(jù)中的低字節(jié)temp.c[0]=buf[1]=rd_byte1820(); //讀18B20測溫2B數(shù)據(jù)中的高字節(jié)reset_1820(); //復(fù)位18B20,強迫讀過程中止printf("Temp.=%6.2f\n",temp.i*0.0625); //PC顯示測得的當(dāng)前溫度res1820_to_disbuf(); //數(shù)據(jù)送顯示緩沖區(qū)display(); printf("WriteTemp.\n"); //PC顯示寫測溫數(shù)據(jù)(2B二進制補碼)s=CH376ByteWrite(buf,2,NULL); //將2B原始測溫數(shù)據(jù)寫入文件mStopIfError(s); //出錯處理rd_time_burst1302(time); //突發(fā)讀1302時間數(shù)據(jù)共7Bprintf("Date=20%b02X.%b02X.%b02X\n",time[6],time[4],time[3]); //提示當(dāng)前日期printf("Clk.=%b02X:%b02X:%b02X\n",time[2],time[1],time[0]); //提示當(dāng)前時間buf[0]=time[6]; //年數(shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)buf[1]=time[4]; //月數(shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)buf[2]=time[3]; //日數(shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)buf[3]=time[2]; //時數(shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)buf[4]=time[1]; //分?jǐn)?shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)buf[5]=time[0]; //秒數(shù)據(jù)(壓縮BCD)存寫入緩沖區(qū)printf("WriteTime\n"); //PC顯示寫時間數(shù)據(jù)(6B壓縮BCD碼)s=CH376ByteWrite(buf,6,NULL); //將6B時間數(shù)據(jù)(壓縮BCD)寫入文件mStopIfError(s); //出錯處理printf("Writeend\n"); //PC顯示寫數(shù)據(jù)結(jié)束printf("Filesize=%ldB\n",CH376GetFileSize()); //PC顯示文件現(xiàn)在的長度get_ftime(); //得到用于文件/目錄的時間數(shù)據(jù)modify_ftime(FILE_CREATE); //修改文件創(chuàng)建時間modify_ftime(FILE_MODIFY); //修改文件修改時間s=CH376FileClose(TRUE); //關(guān)閉文件并更新文件的字節(jié)長度mStopIfError(s);}voidwork4() {printf("Openfile:\n"); //PC顯示打開文件sprintf(buf,"/20%b02X/DEMO2.DAT",time[6]); //將文件名格式化到字符數(shù)組bufprintf(buf);printf("\n"); //PC顯示文件的完整路徑s=CH376FileOpenPath(buf); //打開文件,若文件原來存在將刪除重建mStopIfError(s); //出錯處理printf("Read8Byte\n"); //PC顯示讀8B文件數(shù)據(jù)s=CH376ByteRead(buf,8,&len); //讀8B數(shù)據(jù)塊,實際讀取長度將返回到flen中mStopIfError(s); //出錯處理for(i=0;i<8;i++) //PC顯示從文件中讀取的8B原始數(shù)據(jù)printf("%b02X",buf[i]);printf("\nTemp.=%6.2f\n",(buf[1]*256+buf[0])*0.0625); //顯示文件中的溫度數(shù)據(jù)printf("Date=20%b02X.%b02X.%b02X\n",buf[2],buf[3],buf[4]); //顯示文件中的日期數(shù)據(jù)printf("Clk.=%b02X:%b02X:%b02X\n",buf[5],buf[6],buf[7]); //顯示文件中的時間數(shù)據(jù)s=CH376FileClose(FALSE); //關(guān)閉文件mStopIfError(s);}voidmain(){for(i=0;i<6;i++)disbuf[i]=18; //令數(shù)碼管熄滅顯示display();XBYTE[0x2000]=XBYTE[0x4000]=0; //令所有LED熄滅wr_time_burst1302(time); //突發(fā)讀1302獲得7B時間數(shù)據(jù)mInitSTDIO(); //為在串口輸出調(diào)試信息初始化串口s=mInitCH376Host(); //初始化CH376,主機工作模式mStopIfError(s);printf("WaitUdisk"); //PC顯示等待U盤插入while(CH376DiskConnect()!=USB_INT_SUCCESS) //檢查U盤是否連接,等待U盤插入{mDelaymS(100); //延時100msprintf("."); //PC顯示仍在等U盤插入}printf("\nFoundUdisk!\n"); //PC顯示發(fā)現(xiàn)U盤mDelaymS(200); //可選延時操作,有的USB存儲器需幾十毫秒延時for(i=0;i<10;i++) //多次測U盤是否就緒最長可等10*50ms{mDelaymS(50);printf("Ready?\n"); //PC顯示U盤尚未就緒if(CH376DiskMount()==USB_INT_SUCCESS)break; //U盤就緒時退出}printf("Waitkey\n"); //PC顯示等待用戶按鍵while(1){key_prc(); //查有無按鍵if(KEY_FLG) //有按鍵{KEY_FLG=0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論