CH375在設(shè)備方式下向PC發(fā)送數(shù)據(jù)錯誤

我使用的是AVR系列ATMEGA16單片機,將CH375做設(shè)備的時候,用端點1發(fā)送數(shù)據(jù)給電腦,在使用DEBUG372.EXE程序測試的時候,發(fā)現(xiàn)接收到的數(shù)據(jù)并非我所發(fā)送數(shù)據(jù)0000000000000000 竟然是000000600003041F,請大家?guī)兔纯? main() { uchar m,n; n=0; uchar Data1_w[]={0,0,0,0,0,0,0,0}; while(1) { _delay_ms(200); _delay_ms(200); while(n!=0xf0) { DDRB=0XFF; PORTB=0X0F; _delay_ms(100); reset_all(); n=check_exist(0x0f); PORTB=n;

} set_usb_mode(2);//USB設(shè)備工作為內(nèi)部固件模式 wr_usb_data5(8,Data1_w[8]);

} } 以下是wr_usb_data5(8,Data1_w[8]);函數(shù) void wr_usb_data5(uchar byte,uchar Data1_w[8])//向USB端點1上傳緩沖寫入數(shù)據(jù)塊,byte為要寫入的數(shù)據(jù)塊的字節(jié)數(shù),要小于等于8 { uchar i; w_order(0x2a); w_data(byte); for(i=0;i { w_data(Data1_w[i]); } }

你試下這段程序看下,我在51單片機上面試了沒有問題: #pragma NOAREGS #include #include #include "CH375INC.H" /* 頭文件,在網(wǎng)上下載的CH372或者CH375評估板資料中有 */

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

/* 延時2微秒,不精確 */ void delay2us( ) { unsigned char i; for ( i = 2; i != 0; i -- ); /* 根據(jù)單片機的時鐘選擇初值 */ }

/* 基本操作 */

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的數(shù)據(jù)端口寫入數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ CH375_DAT_PORT=dat; }

unsigned char CH375_RD_DAT_PORT( void ) { /* 從CH375的數(shù)據(jù)端口讀出數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ return( CH375_DAT_PORT ); }

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

/* CH375初始化子程序 */ void CH375_Init( ) { unsigned char i; /* 測試CH375是否正常工作,可選操作,通常不需要 */ CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 測試CH375是否正常工作 */ CH375_WR_DAT_PORT( 0x55 ); /* 寫入測試數(shù)據(jù) */ i = ~ 0x55; /* 返回數(shù)據(jù)應(yīng)該是測試數(shù)據(jù)取反 */ if ( CH375_RD_DAT_PORT( ) != i ) { /* CH375不正常 */ for ( i=80; i!=0; i-- ) { CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 多次重復(fù)發(fā)命令,執(zhí)行硬件復(fù)位 */ CH375_RD_DAT_PORT( ); } CH375_WR_CMD_PORT( 0 ); Delay50ms( ); /* 延時50ms */ } /* 設(shè)置USB工作模式, 必要操作 */ CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); CH375_WR_DAT_PORT( 2 ); /* 設(shè)置為使用內(nèi)置固件的USB設(shè)備方式 */ for ( i=100; i!=0; i-- ) { /* 等待操作成功,通常需要等待10uS-20uS */ if ( CH375_RD_DAT_PORT( ) == CMD_RET_SUCCESS ) break; } /* if ( i==0 ) { CH372/CH375存在硬件錯誤 }; */ /* 下述啟用中斷,假定CH375連接在INT0 */ IT0 = 0; /* 置外部信號為低電平觸發(fā) */ IE0 = 0; /* 清中斷標(biāo)志 */ EX0 = 1; /* 允許CH375中斷 */ }

main( ) { unsigned char i; unsigned char buf[]={0,0,0,0,0,0,0,0}; Delay50ms( ); /* 延時等待CH375初始化完成,如果單片機由CH375提供復(fù)位信號則不必延時 */ CH375_Init( ); /* 初始化CH375 */ CH375_WR_CMD_PORT(0x2a); CH375_WR_DAT_PORT(8); for(i=0;i!=8;i++) CH375_WR_DAT_PORT(buf[i]); }


什么原因可能導(dǎo)致單片機向PC發(fā)送的數(shù)據(jù)錯誤?有人嫩告訴我嗎?


問題已經(jīng)找到 ,原來是自己所定義的數(shù)組出錯。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频