阅读:1225回复:2
请看过周立功的SMART的高手,指点迷津!
我在ep2_txdone函数中往EPBUF中写数据,程序是这样的
void ep2_txdone(void) { unsigned char i = 0; D12_ReadLastTransactionStatus(5);//复位中断寄存器 // if((byte_cnt.word<64)&&(byte_cnt.word>0)) // { // for(i=0;i<byte_cnt.word;i++) // { // P35 = 0; // EpBuf=i; // } // } // if((byte_cnt.word>64)&&(byte_cnt.word>0)) // { // byte_cnt.word=byte_cnt.word-64; for(i=0;i<64;i++) //ok { //ok P35 = 0; //ok EpBuf=i; //ok } //ok // } //可添加用户代码(进行检测端点号5IN令牌的操作) if(byte_cnt.word>0) { if(byte_cnt.word<64) { /* for(i=0;i<byte_cnt.word;i++) { // P35 = 0; EpBuf=i; } */ D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf); byte_cnt.word=0; } else { byte_cnt.word=byte_cnt.word-64; /* P35 = 0; for(i=0;i<64;i++) { // P35 = 0; EpBuf=i; }*/ D12_WriteEndpoint(5, 64, EpBuf); } } } 我写的内容是0 1 2 3 4 5 6 ..... 被我屏蔽掉的那两种写法,读出来的都是FF;用OK注释的那种写法可读出正确数据。我实在是想不通,哪为给指点一下迷津。100分相送,虽然这贴只能放23分但可到别的帖子放。多谢啦。 |
|
沙发#
发布于:2003-03-06 16:17
自个儿顶! :(
|
|
板凳#
发布于:2003-03-06 11:07
还有就是“byte_cnt.word”是在哪里被赋值的呢,我搜了一下好象就是只接那里用的,我想应该是PC给的吧,但PC是在哪里给它的呢?还有EPBUF的入口,我也找不到,这对我来说是最关键的地方,各位帮个忙吧! :(
|
|