【提问】modbusC_V1.1 中访问变量地址空间
我想修改modbusC_V1.1的源码,在这里加个字节到位的映射,以提高通讯效率,需要访问变量地址空间,该如何访问变量地址空间?
我看头文件里面有2行注释了的声明:
// u16 Read_Dgus(u16 Dgus_Addr);
// void Write_Dgus(u16 Dgus_Addr,u16 Val);
这2个函数是做什么的? 我能调用吗?
可以调用的,这两个函数就是读取和写入 DGUS变量的。 u16 Read_Dgus(u16 Dgus_Addr)
{ u16 R_Dgus=0;
EA = 0;ADR_H = 0x00;
ADR_M = (u8)((Dgus_Addr/2)>>8);
ADR_L = (u8)(Dgus_Addr/2);
RAMMODE = 0xAF; while(!APP_ACK); //¶Á²Ù×÷
APP_EN = 1; while(APP_EN);
if(Dgus_Addr%2) R_Dgus = (DATA1<<8)+DATA0;
else R_Dgus=(DATA3<<8)+DATA2;
RAMMODE = 0; EA = 1; return R_Dgus;
}
//====================================
void Write_Dgus(u16 Dgus_Addr,u16 Val)
{ EA = 0;ADR_H = 0x00;
ADR_M = (u8)((Dgus_Addr/2)>>8);
ADR_L = (u8)(Dgus_Addr/2);
RAMMODE = 0xAF;while(!APP_ACK); //¶Á²Ù×÷
APP_EN = 1;while(APP_EN);RAMMODE = 0;
ADR_M = (u8)((Dgus_Addr/2)>>8);
ADR_L = (u8)(Dgus_Addr/2);
RAMMODE = 0x8F;while(!APP_ACK); //д²Ù×÷
if(Dgus_Addr%2){DATA1=(u8)(Val>>8);DATA0=(u8)(Val);}
else {DATA3=(u8)(Val>>8);DATA2=(u8)(Val);}
APP_EN = 1; while(APP_EN);RAMMODE = 0;
EA = 1;
}
页:
[1]