迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2670|回复: 13

【提问】C51程序切换页面

[复制链接]

2

主题

11

回帖

205

积分

中级会员

Rank: 3Rank: 3

积分
205
发表于 2021-8-4 23:11:28 | 显示全部楼层 |阅读模式
使用C51程序从0号界面延时2秒切换到1号界面后,1号界面上DGUS软件设置的按钮跳转界面,切换按钮按下后,被切换界面闪一下,又回到1号界面。请问下是什么问题。
代码如下:
void Pic_Next(u16 Page)   
{
                u16 DATA_RAM=0;
                DATA_RAM = Page;
                sys_write_vp(0x0085,(u8*)&DATA_RAM,1);
                DATA_RAM = 0x5A01;
                sys_write_vp(0x0084,(u8*)&DATA_RAM,1);
                do
                {
                                sys_delay_ms(5);
                                sys_write_vp(0x0084,(u8*)&DATA_RAM,1);
                }while((DATA_RAM>>8)!=0);
}

void main(void)
{   
        sys_init();
        num = 0;
        sys_delay_ms(2000);
        Pic_Next(1);
        while(1)
        {   
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

680

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
13212
发表于 2021-8-5 09:39:56 | 显示全部楼层
您好!在完成sys_write_vp(0x0084,(u8*)&DATA_RAM,1);语句切页后,屏幕0x0085地址的值依旧是00001,而while语句中判断的DATA_RAM值没有更改,一直等于5A01,条件为真,所以do   while是个死循环。
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10011
发表于 2021-8-5 09:45:52 | 显示全部楼层
void Pic_Next(u16 Page)   
{
                u16 DATA_RAM=0;
                DATA_RAM = Page;
                sys_write_vp(0x0085,(u8*)&DATA_RAM,1);
                DATA_RAM = 0x5A01;
                sys_write_vp(0x0084,(u8*)&DATA_RAM,1);
                do
                {
                                sys_delay_ms(5);
                                sys_read_vp(0x0084,(u8*)&DATA_RAM,1);
                }while((DATA_RAM>>8)!=0);
}

void main(void)
{   
        sys_init();
        num = 0;
        sys_delay_ms(2000);
        Pic_Next(1);
        while(1)
        {   
        }
}

你循环里面延迟5ms系统清零后判断应该是读 而不是又写,不然永远是5A。。。。。。。
回复

使用道具 举报

2

主题

11

回帖

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2021-8-5 15:54:16 | 显示全部楼层
Bensenl 发表于 2021-8-5 09:39
您好!在完成sys_write_vp(0x0084,(u8*)&DATA_RAM,1);语句切页后,屏幕0x0085地址的值依旧是00001,而while ...

谢谢 ,晚上我试试
回复

使用道具 举报

2

主题

11

回帖

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2021-8-5 15:54:58 | 显示全部楼层
zzs999k 发表于 2021-8-5 09:45
void Pic_Next(u16 Page)   
{
                u16 DATA_RAM=0;

晚上 在试下看看
回复

使用道具 举报

2

主题

11

回帖

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2021-8-5 15:57:24 | 显示全部楼层
zzs999k 发表于 2021-8-5 09:45
void Pic_Next(u16 Page)   
{
                u16 DATA_RAM=0;

后面 这个 DO while 循环 是必须要加吗?
回复

使用道具 举报

2

主题

680

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
13212
发表于 2021-8-5 20:18:34 | 显示全部楼层
本帖最后由 Bensenl 于 2021-8-5 21:52 编辑
代承华 发表于 2021-8-5 15:57
后面 这个 DO while 循环 是必须要加吗?

您好,一般是不用的
回复

使用道具 举报

1

主题

10

回帖

150

积分

注册会员

Rank: 2

积分
150
发表于 2022-6-30 15:10:33 | 显示全部楼层
您好,这个问题解决了吗?可以分享一下吗?
回复

使用道具 举报

3

主题

5

回帖

96

积分

注册会员

Rank: 2

积分
96
发表于 2022-11-21 10:27:04 | 显示全部楼层
zzs999k 发表于 2021-8-5 09:45
void Pic_Next(u16 Page)   
{
                u16 DATA_RAM=0;

为什么要写入0x0085,文档上没有哇
回复

使用道具 举报

2

主题

680

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
13212
发表于 2022-11-21 10:29:41 | 显示全部楼层
Dream_CCx 发表于 2022-11-21 10:27
为什么要写入0x0085,文档上没有哇

0x85地址存储要切换的页面ID
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 05:07 , Processed in 0.034253 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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