dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1175回复:4

D12_ReadChipID

楼主#
更多 发布于:2005-01-13 19:01
为我们我的每次是先是12 00

unsigned short D12_ReadChipID(void)
{
unsigned short i;

unsigned short j;

if(bEPPflags.bits.in_isr == 0)
DISABLE;

outportb(D12_COMMAND, 0xFD);
i=inportb(D12_DATA);

j=inportb(D12_DATA);
j<<=8;
j +=i;

if(bEPPflags.bits.in_isr == 0)
ENABLE;

return j;
}

*************************************************


void outportb(unsigned int port,unsigned char val)
{
     *((unsigned char  *)port)=val;//向D12发送命令或子程序
                                                
}
unsigned char inportb(unsigned int port)
{
   return * ((unsigned char *)port);    
}

有时候就是 10 00

总不是12 10??????????????????
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-14 09:04
有时候 我的中断值是 81 C1,可以肯定是没有清中断,数据叠加起来了,可是我执行了
ep_last = D12_ReadLastTransactionStatus(0);
很明显,有C1是说明1100|0001 就是3次中断,有挂起改变,有总线RESET,还有端点0 OUT,我看资料上说后面两位读取以后就清0的啊,第一位是 用D12_ReadLastTransactionStatus清除相应的位,是不是我的中断函数有问题,我的CHIPID 也是读取 12 00,有时是10 00,每次是在RELOAD 再运行就出现不同的结果.
为什么,大家谁遇到这种情况啊??讨论一哈,

[编辑 -  1/14/05 by  dxyldl]
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-14 10:11
老大们帮我看看啊
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-14 12:38
顶一哈
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-17 08:23
 :o
游客

返回顶部