阅读:1179回复:4
问一个D12的固件问题
DISABLE和ENABLE有什么用,他们是控制51的读写低地址片外rom的
DISABLE; (跟这句话有什么关系)难道bEPPflags定义在片外,能不能在片内啊 bEPPflags.bits.control_state = USB_TRANSMIT; ENABLE; //发送端点号1建立代码 void code_transmit(unsigned char code * pRomData, unsigned short len) { ControlData.wCount = 0; if(ControlData.wLength > len) ControlData.wLength = len; ControlData.pData = pRomData; if( ControlData.wLength >= EP0_PACKET_SIZE) { D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);//发送16字节数据 ControlData.wCount += EP0_PACKET_SIZE; DISABLE; bEPPflags.bits.control_state = USB_TRANSMIT; ENABLE; } else { D12_WriteEndpoint(1, ControlData.wLength, pRomData);//发送16字节内数据 ControlData.wCount += ControlData.wLength; DISABLE; bEPPflags.bits.control_state = USB_IDLE; ENABLE; } } |
|
沙发#
发布于:2004-03-20 21:26
应该是关中断.
|
|
|
板凳#
发布于:2004-03-22 08:29
前面有DEFINE的
|
|
|
地板#
发布于:2004-03-22 08:57
DISABLE和ENABLE有什么用,他们是控制51的读写低地址片外rom的 DISABLE和ENABLE的作用是开关中断的,在文件EPPHAL.H(飞利浦提供的固件源程序)定义的 #ifndef __EPPHAL_H__ #define __EPPHAL_H__ #define CPLD_CNT0 0x00 #define CPLD_CNT1 0x01 #define COUNT_L 0x00 #define COUNT_H 0x00 #define EPP_PORT P1 #define DATA_BUS P0 sbit MCU_SWM0 = P1^2; sbit MCU_SWM1 = P1^3; sbit MCU_LED0 = P1^0; sbit MCU_LED1 = P1^1; sbit MCU_A0 = P1^4; sbit MCU_D12CS = P1^6; sbit MCU_D12RST = P1^7; sbit D12SUSPD = P3^3; #define DISABLE EA=0 #define ENABLE EA=1 #endif |
|
地下室#
发布于:2004-03-22 09:32
它的作用是开关中断,防止访问冲突。
如果你在Windows平台上写过多线程软件的话,应该对于这一概念是知道的。 类似于EnterCriticalSession之类的东西。如果不这样做,当主程序访问数据时,有可能被中断,且中断也访问这段数据,会导致数据错乱。所以必须采用中断开关来实现CriticalSession或Lock的效果。 |
|
|