wanggang508
驱动小牛
驱动小牛
  • 注册日期2003-08-24
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1142回复:0

d12固件程序标志位的问题

楼主#
更多 发布于:2005-02-21 16:14
在d12的固件程序中:USBD12_WriteEndpoint函数的如下:
unsigned char USBD12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
unsigned char i;
if(bZBoardFlags.bits.bIN_ISR == 0)
DISABLE_INTERRUPTS;
#ifdef PARALLEL_BUS
P1 &= 0xf1; // Enable D12
#endif
outportb(IC_D12_COMMAND, endp);
inportb(IC_D12_DATA);
outportb(IC_D12_COMMAND, 0xF0);
outportb(IC_D12_DATA, 0);
outportb(IC_D12_DATA, len);
for(i=0; i<len; i++)
outportb(IC_D12_DATA, *(buf+i));
outportb(IC_D12_COMMAND, 0xFA);
#ifdef PARALLEL_BUS
P1 |= 0x0e; // Disable D12
#endif
if(bZBoardFlags.bits.bIN_ISR == 0)
ENABLE_INTERRUPTS;
return len;
}
请问为何要:
if(bZBoardFlags.bits.bIN_ISR == 0)
DISABLE_INTERRUPTS;

if(bZBoardFlags.bits.bIN_ISR == 0)
ENABLE_INTERRUPTS;
这样的语句,有啥作用呢?
如果bZBoardFlags.bits.bIN_ISR == 0是不是说明现在没有在处理中断相应函数呢?
请各位大侠不吝赐教!!!先谢谢了!

多多交流,少走弯路!!!
游客

返回顶部