|
|
发表于 2026-5-18 17:47:32
|
显示全部楼层
用下面的读写函数试下。定时处理可以有效的降低cpu负载。
void read_dgus_vp(u16 addr, u8 *buf, u16 len)
{
u16 OS_addr = 0;
u16 OS_addr_offset = 0;
u16 OS_len = 0, OS_len_offset = 0;
u32 LenLimit;
if (0 == len)
return;
LenLimit = 0xffffU - addr + 1;
if (LenLimit < len)
{
len = LenLimit;
}
OS_addr = addr >> 1;
OS_addr_offset = addr & 0x01;
#ifdef INTVPACTION
EA = 0;
#endif
ADR_H = 0;
ADR_M = (u8)(OS_addr >> 8);
ADR_L = (u8)OS_addr;
ADR_INC = 1;
RAMMODE = 0xAF;
while (!APP_ACK)
;
if (OS_addr_offset)
{
APP_EN = 1;
while (APP_EN)
;
*buf++ = DATA1;
*buf++ = DATA0;
len--;
}
OS_len = len >> 1;
OS_len_offset = len & 0x01;
while (OS_len--)
{
APP_EN = 1;
while (APP_EN)
;
*buf++ = DATA3;
*buf++ = DATA2;
*buf++ = DATA1;
*buf++ = DATA0;
}
if (OS_len_offset)
{
APP_EN = 1;
while (APP_EN)
;
*buf++ = DATA3;
*buf++ = DATA2;
}
RAMMODE = 0x00;
#ifdef INTVPACTION
EA = 1;
#endif
}
/*****************************************************************************
函 数 名 : void write_dgus_vp(u32 addr,u8* buf,u16 len)
功能描述 : 写dgus地址数据
输入参数 : |
|