迪文科技论坛

 找回密码
 立即注册
搜索
查看: 4814|回复: 14

【提问】OS 与 DGUS变量存储器 是怎么联系的

[复制链接]

16

主题

21

回帖

173

积分

注册会员

Rank: 2

积分
173
发表于 2021-1-11 16:50:48 | 显示全部楼层 |阅读模式
OS 与 DGUS变量存储器 是怎么联系的,他们硬件接口是怎么样的,
比如我在用在OS读取和写 DGUS变量存储器 最基本的命令是什么?

屏上的控件地址是0x2000
那么 OS 需要发个什么命定来读这个地址
还是说他们本身是在一起的,只是虚拟一个空间?


回复

使用道具 举报

16

主题

21

回帖

173

积分

注册会员

Rank: 2

积分
173
 楼主| 发表于 2021-1-11 16:57:53 | 显示全部楼层
sfr        RAMMODE        =        0xF8;                                /******DGUS变量存储器访问接口控制寄存器*********/?是什么?
回复

使用道具 举报

0

主题

106

回帖

959

积分

高级会员

Rank: 4

积分
959
发表于 2021-1-11 17:38:40 | 显示全部楼层
本帖最后由 kehu20190527 于 2021-1-11 17:41 编辑

您好!这个DGUS变量地址是存放到RAM里面的,FALSH里面共128KB的DGUS变量空间大小0000-FFFF这个范围空间,1000以前是系统占用,1000-FFFF是用户使用变量地址。
sfr        RAMMODE        =        0xF8;                                /******DGUS变量存储器访问接口控制寄存器*********/    这个是存储器地址  就是内部特殊功能寄存器地址
您是用C51开发,直接用  void sys_read_vp(u16 addr,u8* buf,u16 len) 读变量地址函数   void sys_write_vp(u16 addr,u8* buf,u16 len)写变量地址函数这些函数,论坛上有下载的。
回复

使用道具 举报

16

主题

21

回帖

173

积分

注册会员

Rank: 2

积分
173
 楼主| 发表于 2021-1-12 10:11:47 | 显示全部楼层
kehu20190527 发表于 2021-1-11 17:38
您好!这个DGUS变量地址是存放到RAM里面的,FALSH里面共128KB的DGUS变量空间大小0000-FFFF这个范围空间,10 ...

void sys_write_vp(u16 addr,u8* buf,u16 len)
{   
        u8 i;  
       
        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;               
                len--;
        }
        RAMMODE = 0x8F;
        while(len>=2)
        {       
                DATA3 = *buf++;               
                DATA2 = *buf++;
                DATA1 = *buf++;               
                DATA0 = *buf++;
                APP_EN = 1;               
                len -= 2;
        }
        if(len)
        {       
                RAMMODE = 0x8C;
                DATA3 = *buf++;               
                DATA2 = *buf++;
                APP_EN = 1;
        }
        RAMMODE = 0x00;
}

while(APP_ACK==0); 这个是系统自动置位1吗?不然不是一直等待中.
回复

使用道具 举报

0

主题

106

回帖

959

积分

高级会员

Rank: 4

积分
959
发表于 2021-1-12 10:55:45 | 显示全部楼层
我们的DGUS内核会应答请求的。
回复

使用道具 举报

16

主题

55

回帖

500

积分

高级会员

Rank: 4

积分
500
发表于 2021-10-9 20:59:12 | 显示全部楼层
FALSH里面共128KB的DGUS变量空间大小0000-FFFF这个范围空间?
请问0000H-FFFFH不是64K吗?DGUS变量空间到底是多大?
回复

使用道具 举报

0

主题

1034

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11122
发表于 2021-10-10 10:39:13 | 显示全部楼层
每个变量地址是2个字节的,0X0000-0XFFFF这个范围空间就是128KB的
回复

使用道具 举报

16

主题

55

回帖

500

积分

高级会员

Rank: 4

积分
500
发表于 2021-10-10 21:28:05 | 显示全部楼层
明白了,谢谢·
回复

使用道具 举报

16

主题

55

回帖

500

积分

高级会员

Rank: 4

积分
500
发表于 2021-10-10 22:37:57 | 显示全部楼层
本帖最后由 xz130587tec 于 2021-10-10 22:39 编辑

"FALSH里面共128KB的DGUS变量空间大小0000-FFFF这个范围空间"
这个说法逻辑上很有问题,应该说:FALSH里面共64K的DGUS变量空间,变量地址范围0000-FFFF,每个变量地址是2个字节,共128KB
,迪文文档为什么很多人看不明白,就是因为文档上很多逻辑上的错误
回复

使用道具 举报

0

主题

714

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10153
发表于 2021-10-11 10:44:30 | 显示全部楼层
xz130587tec 发表于 2021-10-10 22:37
"FALSH里面共128KB的DGUS变量空间大小0000-FFFF这个范围空间"
这个说法逻辑上很有问题,应该说:FALSH里面 ...

感谢您的反馈,我们会及时向上反映做出修改
沧海横流,方显英雄本色。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-14 23:14 , Processed in 0.039449 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表