sirenfox
驱动牛犊
驱动牛犊
  • 注册日期2004-02-13
  • 最后登录2004-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1180回复:4

问一个D12的固件问题

楼主#
更多 发布于:2004-03-20 20:01
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;
}
}
ysfc51
驱动牛犊
驱动牛犊
  • 注册日期2001-10-01
  • 最后登录2009-12-27
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-20 21:26
应该是关中断.
千山千幅画 一步一重天
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-03-22 08:29
前面有DEFINE的
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
hustd6zzg
驱动牛犊
驱动牛犊
  • 注册日期2003-03-22
  • 最后登录2005-01-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-22 08:57
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;
}
}
 


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
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-22 09:32
它的作用是开关中断,防止访问冲突。
如果你在Windows平台上写过多线程软件的话,应该对于这一概念是知道的。
类似于EnterCriticalSession之类的东西。如果不这样做,当主程序访问数据时,有可能被中断,且中断也访问这段数据,会导致数据错乱。所以必须采用中断开关来实现CriticalSession或Lock的效果。
A strong man can save himself. A great man can save another.
游客

返回顶部