|
|
发表于 2020-5-25 11:31:12
|
显示全部楼层
你好用这个函数读取你输入之后的值,去程序里面比较。弹出你输入后的值。
void ReadDGUS(uint32_t Addr, uint8_t *pBuf, uint16_t Len)
{
uint8_t Aoffset;
if(NULL == pBuf){return;}
if(0 == Len){return;}
if((Addr+Len/2) > (0xFFFF*2)){return;}
EA = 0;
Aoffset = Addr&0x01; /*取bit0作为奇偶判断*/
Addr = Addr >> 1; /*配置地址*/
ADR_H = (uint8_t)(Addr >> 16);
ADR_M = (uint8_t)(Addr >> 8);
ADR_L = (uint8_t)(Addr);
RAMMODE = 0x00;
ADR_INC = 0x01;
APP_REQ = 1; /*占用DGUS读写*/
while(!APP_ACK);
APP_RW = 1; /*读变量存储器*/
if(1 == Aoffset)
{ /*地址为奇数*/
if(1 == Len){ APP_DATA3=0,APP_DATA2=0,APP_DATA1=1,APP_DATA0=0;}
else{ APP_DATA3=0,APP_DATA2=0,APP_DATA1=1,APP_DATA0=1;}
APP_EN = 1;
while(APP_EN);
if(1 == Len){ *pBuf++=DATA1;Len=Len-1; }
else{ *pBuf++=DATA1;*pBuf++=DATA0;Len=Len-2;}
}
while(1) /*地址为偶数*/
{
if(0 == Len) break;
if(Len < 4)
{
switch(Len)
{
case 3: APP_DATA3=1,APP_DATA2=1,APP_DATA1=1,APP_DATA0=0;break;
case 2: APP_DATA3=1,APP_DATA2=1,APP_DATA1=0,APP_DATA0=0;break;
case 1: APP_DATA3=1,APP_DATA2=0,APP_DATA1=0,APP_DATA0=0;break;
}
APP_EN = 1;
while(APP_EN);
switch(Len)
{
case 3: *pBuf++=DATA3;*pBuf++=DATA2;*pBuf++=DATA1;break;
case 2: *pBuf++=DATA3;*pBuf++=DATA2;break;
case 1: *pBuf++=DATA3;break;
}
break;
}
else
{
APP_DATA3=1,APP_DATA2=1,APP_DATA1=1,APP_DATA0=1;
APP_EN = 1;
while(APP_EN);
*pBuf++=DATA3;*pBuf++=DATA2;*pBuf++=DATA1;*pBuf++=DATA0;
Len = Len - 4;
}
}
RAMMODE = 0x00; /*不占用时必须清零*/
EA = 1;
} |
|