迪文科技论坛

 找回密码
 立即注册
搜索
查看: 5361|回复: 21

求助各位大神,数据库内容批量读取OS怎么实现呢

[复制链接]

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
发表于 2020-3-2 12:46:22 | 显示全部楼层 |阅读模式
如题,我自己搞了一个很笨的方法,想求助一下各位大佬
回复

使用道具 举报

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
 楼主| 发表于 2020-3-2 14:06:31 | 显示全部楼层
本帖最后由 大鸡鸡男 于 2020-3-2 14:07 编辑

别人的代码这样的,但是我想继续往下写,怎么改都改不好呢


上电从数据库读取:
     IJNE R255,0,初始化结束   ;通常习惯用R255寄存器做标志位(这里不是很明白是什么意思)
     LDBR R255,1,1
     LDWR R0,0008H   
     LDWR R10,5A00H  ;数据库读操作
     LDWR R12,1500H  ;读取数据库地址001500
     LDWR R14,22C4H  ;读到VP22C4H
     LDWR R16,2      ;读取2个字长度
     MOVXR R10,0,4
  
     LOOP1:                ;判断数据库读操作是否完成
     LDWR R0,0008H
     MOVXR R10,1,1
     IJNE R10,0,LOOP1
  
初始化结束:
     RET
;====================================
保存数据到数据库:
    LDWR        R0,22C4H  ;判断22C4H数据是否有变化,变化则保存到数据库。
    MOVXR        R20,1,1
    TESTS        R20,R120,2
    IJNE        R0,0,1
    RET        
    MOV         R20,R120,2

    LDWR R0,0008H
    LDWR R10,A500H  ;数据库写操作
    LDWR R12,1500H  ;写到数据库地址001500
    LDWR R14,22C4H  ;需要保存的数据的VP为22C4H
    LDWR R16,2     ;保存2个字数据
    MOVXR R10,0,4
     
    LOOP2:            ;判断数据库写操作是否完成
    LDWR R0,0008H
    MOVXR R10,1,1
    IJNE R10,0,LOOP2
OVER:
    RET  
回复

使用道具 举报

0

主题

50

回帖

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2020-3-2 15:55:08 | 显示全部楼层
本帖最后由 z6642008 于 2020-3-2 15:58 编辑

截图中的就是读取数据库时控制的长度,改这个数据就行,对应的就是 LDWR R16,2这个中的2,修改这个长度就可以改变读取出来数据的长度。

本帖子中包含更多资源

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

x
回复

使用道具 举报

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
 楼主| 发表于 2020-3-2 15:58:44 | 显示全部楼层
z6642008 发表于 2020-3-2 15:55
截图中的就是读取数据库时控制的长度,改这个数据就行,对应的就是 LDWR R16,2这个中的2,修改这个长度就可 ...

单独写呢,比如我还有一个变量是22D8,我就需要在写一段,该怎么写呢
回复

使用道具 举报

0

主题

50

回帖

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2020-3-2 16:00:47 | 显示全部楼层
大鸡鸡男 发表于 2020-3-2 15:58
单独写呢,比如我还有一个变量是22D8,我就需要在写一段,该怎么写呢

按照上面的例子来写,把操作的变量地址和数据库地址改为要操作的地址就行。
上面用的是001500和22C4H
回复

使用道具 举报

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
 楼主| 发表于 2020-3-2 16:03:59 | 显示全部楼层
z6642008 发表于 2020-3-2 16:00
按照上面的例子来写,把操作的变量地址和数据库地址改为要操作的地址就行。
上面用的是001500和22C4H ...

我试过了,但是不得行,貌似是
IJNE R255,0,初始化结束   ;通常习惯用R255寄存器做标志位(这里不是很明白是什么意思)
  LDBR R255,1,1
这一段有问题,就是这里不清楚,我试过改成
IJNE R254,0,初始化结束   ;通常习惯用R255寄存器做标志位(这里不是很明白是什么意思)
  LDBR R254,1,1
这样好像可以,但是代码量太大了
回复

使用道具 举报

0

主题

50

回帖

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2020-3-2 16:12:47 | 显示全部楼层
大鸡鸡男 发表于 2020-3-2 16:03
我试过了,但是不得行,貌似是
IJNE R255,0,初始化结束   ;通常习惯用R255寄存器做标志位(这里不是很明 ...

这个R255,0的只是为了让其上电执行一次数据库的读取操作,就是上电初始化的意思,运行一次之后,就将R255改为1,这样就只有再下次上电的时候才会再次运行数据库的操作了,如果需要在不断电的情况下再次运行数据库操作,那么就要将R255再次置为0,。
这个R255也可以用R250之类的代替,个人习惯。
回复

使用道具 举报

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
 楼主| 发表于 2020-3-2 16:18:59 | 显示全部楼层
z6642008 发表于 2020-3-2 16:12
这个R255,0的只是为了让其上电执行一次数据库的读取操作,就是上电初始化的意思,运行一次之后,就将R25 ...

直接整段复制下来然后改一下数据吗,谢谢你,我先试一下
回复

使用道具 举报

0

主题

181

回帖

2023

积分

金牌会员

Rank: 6Rank: 6

积分
2023
发表于 2020-3-2 21:01:06 来自手机 | 显示全部楼层
是的,你可以先试试
回复

使用道具 举报

4

主题

24

回帖

349

积分

中级会员

Rank: 3Rank: 3

积分
349
 楼主| 发表于 2020-3-3 16:12:31 | 显示全部楼层
hao8584 发表于 2020-3-2 21:01
是的,你可以先试试

还是没有搞定呢,额
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-15 02:53 , Processed in 0.075207 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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