qiezi
驱动小牛
驱动小牛
  • 注册日期2002-10-17
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1225回复:2

请看过周立功的SMART的高手,指点迷津!

楼主#
更多 发布于:2003-03-06 10:55
我在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分但可到别的帖子放。多谢啦。
qiezi
驱动小牛
驱动小牛
  • 注册日期2002-10-17
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-06 16:17
自个儿顶! :(
qiezi
驱动小牛
驱动小牛
  • 注册日期2002-10-17
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-06 11:07
还有就是“byte_cnt.word”是在哪里被赋值的呢,我搜了一下好象就是只接那里用的,我想应该是PC给的吧,但PC是在哪里给它的呢?还有EPBUF的入口,我也找不到,这对我来说是最关键的地方,各位帮个忙吧! :(
游客

返回顶部