阅读:1141回复:0
d12固件程序标志位的问题
在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是不是说明现在没有在处理中断相应函数呢? 请各位大侠不吝赐教!!!先谢谢了! |
|
|