|
发表于 2023-4-21 14:44:00
|
显示全部楼层
//有时间给找了下问题,您看下,可能是没有加这个语句 <while(APP_EN==1);>,但我现在找不到以前的环境
测试了
//写DGUS中的VP变量数据
//addr:就是直接传入DGUS中的地址
//buf:缓冲区
//len:被发送数据的字数,一个字等于2个字节
void SYS_Write_vp(u16 addr,u8* buf,u16 len)
{
#ifdef USE_XJY
u8 i;
EA = 0;
i = (u8)(addr&0x01);
addr >>= 1;
ADR_H = 0x00;
ADR_M = (u8)(addr>>8);
ADR_L = (u8)addr;
ADR_INC = 0x01;
RAMMODE = 0x8F;
while(APP_ACK==0);
if(i && len>0)
{
RAMMODE = 0x83;
DATA1 = *buf++;
DATA0 = *buf++;
APP_EN = 1;
while(APP_EN==1); //加这个语句是不是能保证操作成功
len--;
}
RAMMODE = 0x8F;
while(len>=2)
{
DATA3 = *buf++;
DATA2 = *buf++;
DATA1 = *buf++;
DATA0 = *buf++;
APP_EN = 1;
while(APP_EN==1); //加这个语句是不是能保证操作成功
len -= 2;
}
if(len)
{
RAMMODE = 0x8C;
DATA3 = *buf++;
DATA2 = *buf++;
APP_EN = 1;
while(APP_EN==1); //加这个语句是不是能保证操作成功
}
RAMMODE = 0x00;
EA = 1;
#else |
|