我的密秘女友无遮挡_ ┬绝世佳人┭-台山宾馆
淘宝减肥药排行榜十强
只推淘宝安全有效的减肥药

当前位置:我的密秘女友无遮挡 > 减肥产品

我的密秘女友无遮挡

时间:2020-05-28 04:55  编辑:wendj

程序功能:

实现多通道数据的存储和查询功能,数据按照月为计量单位来进行保存。

制作本文目的:

由于迪文科技网上提供可参考的OS程序实在是太少,迪文的工程师实在太忙,使用迪文的产品有些功能确实不那么容易实现,特提供我一个项目用到的一部分程序给大家做个参考。

使用注意:下方的代码中已有功能说明,能否适用到您的产品中,请自行按照程序说明来衡量。

例程说明:

按照如下说明操作:

如下图一:

图一

设置通道1(VP0x1000---VP0x1001,长整形)电能参数为500,设置通道2(VP0x1002---VP0x1003,长整形)电能参数为530,等待4秒后,

设置通道1(VP0x1000---VP0x1001,长整形)电能参数为503,设置通道2(VP0x1002---VP0x1003,长整形)电能参数为535,单击“查询”按键

进入界面如下图二所示:

图二

输入开始的年月和结束年月,通道上电默认为1,单击查询,即可看到如下图三所示的效果

开始日期年变量地址:VP0x1100

开始日期月变量地址:VP0x1101

结束日期年变量地址:VP0x1102

结束日期月变量地址:VP0x1103

通道变量地址:VP0x1200

查询按键变量地址:VP0x2000 返回值为0x00F1

同样选择通道2后,单击“查询”按键,可以得到如下图四所示效果

该文件的程序源代码请移步下方

;;;;--------------文件信息-------------------

;;文件名: 两通道电能存储及查询(每月保存数据一次)

;;创建人: Suck it up

;;适用产品: 那些需要断电保存及查询数据的产品,电力行业、美容行业、传统工业等行业应用

;;版本: V1.0.1

;;修改日期: 2015-08-31

;;功能及使用注意事项:

;支持1300多个通道电能存储及查询功能(可保存2年)

;功能占用变量说明:

;1.长期占用:VP0x6F00-VP0x6F03 对应输入的开始日期查询到的字库存储信息

;2.长期占用:VP0x6F04-VP0x6F07 对应输入的结束日期查询到的字库存储信息

;3.长期占用:VP0x6F08 对应输入的通道号X数值

;4.长期占用:VP0x6D00-VP0x6E98 保存通道号X对应的数据包

;数据包格式:通道号X、第一次保存数据的年月、保存次数、最近一次保存数据的年月

;5.做交换时占用:VP0x6200-VP0x6203 暂时缓存需要存储到字库的数据

;添加功能占用DGUS OS 的寄存器说明:

;1.寄存器R253:上电初始化通道号X的值用

;2.寄存器R254:作为定时器用,用于定时来扫描通道号X的电能参数是否按月为计时单位发生变化

;

;;以上,后续有更改再补充

;********************版本信息*************************

R0,5151H

LDWR

LDWR

R2,3730H

R4,3733H

LDWR

R6,3732H

LDWR

R8,3738H

LDWR

R10,38H,1

LDBR

;**********上电初始化通道X=1 即变量VP1200=1*********

R253,0,Init_Variable

IJNE

R253,1,1

LDBR

R70,1

LDWR

R0,1200H

LDWR

R70,0,1

MOVXR

Init_Variable:

;***********每隔2秒查询一次通道****************

R254,0,1

INC

R254,10,NEXT_1

IJNE

Alleyway_Search

CALL

DataSaveMethod

CALL

R254,0,1

LDBR

NEXT_1:

;***********判断查询按键判断********************

R0,2000H

LDWR

R70,1,1

MOVXR

IJNE

R71,0xF1,NextButton_Query

R0,2000H

LDWR

LDWR

R70,0

;清除按键状态

MOVXR

R70,0,1

CALL DataQueryMethod ;调用查询通道X函数

ElectricDataDisplay

CALL

NextButton_Query:

END

;************通道X+1运算*****************

Alleyway_Search:

R100,1

LDWR

R250,R100,Add_AlleywayCount

JS

R250,0

LDWR

RET

Add_AlleywayCount:

R250,1,1

INC

RET

;*************上电读一次字库********************

;变量VP0x6F60作为标志用

DataSaveMethod:

R0,6F60H

LDWR

R50,1,1

MOVXR

R51,0,EscFristReadDataBase_120 ;读120号字库

IJNE

R50,1

LDWR

R0,6F60H

LDWR

;清除上电读字库标志

R50,0,1

MOVXR

R0,6D00H

LDWR

R4,7800H

LDWR

R6,0000H

LDWR

0,408 ;读字库120的408个字到变量VP6D00-6E98 MOVXL

RET

EscFristReadDataBase_120:

AlleywayData_ExistOrNot

CALL

RET

;**********判断通道X是否有数据******************

AlleywayData_ExistOrNot:

LDBR

R70,0,24

;存储通道x电能数值的起始变量地址+1

LDWR

R72,1001H

R248,0,2

LDBR

LDWR R76,2 ;被乘数,用于通道x设置的变量地址不连贯时用R248,R74,R78 ;R78:..:R85=通道1和通道2的电能变量地址相差数 MAC

R70,R82,R86 ;R86:..:R93=通道x的变量地址

ADD

R92,R0,2

MOV

MOVXR

R82,1,1

R70,1

LDWR

R82,R70,NEXT_JUDGE1

JS

AlleywayHisData_Judge

CALL

RET

NEXT_JUDGE1:

LDBR

R70,0,24

;存储通道x电能数值的起始变量地址

R72,1000H

LDWR

R248,0,2

LDBR

LDWR R76,2 ;被乘数,用于通道x设置的变量地址不连贯时用 MAC

R248,R74,R78 ;R78:..:R85=通道1和通道2的电能变量地址相差数

R70,R82,R86 ;R86:..:R93=通道x的变量地址

ADD

R92,R0,2

MOV

R82,1,1

MOVXR

R70,1

LDWR

R82,R70,Esc_Circle

JS

AlleywayHisData_Judge

CALL

RET

Esc_Circle:

RET

;************判断通道X是否有历史数据保存记录******************* AlleywayHisData_Judge:

R70,0,30

LDBR

R72,6D00H

LDWR

R250,R76,2

MOV

R80,4

LDWR

MAC R74,R78,R82

;R82:..:R89=(X-1)*4

ADD

R70,R86,R90

;R90:..:R97=6D00H+(X-1)*4

R96,R0,2

MOV

R98,1,1

MOVXR

;R98:R99=VP(R96:R97)

IJNE

R98,0x5A,Alleyway_X_FristDataSave ;标志位不等则跳转到判断通道X是否有

;数据

R99,0xA5,Alleyway_X_FristDataSave

IJNE

SaveCurrentAllaywayData

CALL

RET

;****************通道X的第一次数据保存********************

Alleyway_X_FristDataSave:

R70,0,30

LDBR

R72,6D00H

LDWR

R250,R76,2

MOV

R80,4

LDWR

MAC

R74,R78,R82 ;R82:..:R89=(X-1)*4

R70,R86,R90 ;R90:..:R97=6D00H+(X-1)*4

ADD

R96,R0,2

MOV

R70,0x5AA5

LDWR

;VP[6D00H+(X-1)*4]=0x0AA5

MOVXR

R70,0,1

R70,0,30

LDBR

R72,6D01H

LDWR

R250,R76,2

MOV

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

0x20,R70,2

MOVDR

;VP[6D01H+(X-1)*4]=当前年月

MOVXR

R70,0,1

LDBR

R70,0,30

R72,6D03H

LDWR

R250,R76,2

MOV

LDWR

R80,4

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D03H+(X-1)*4

ADD

R96,R0,2

MOV

0x20,R70,2

MOVDR

R70,0,1

;VP[6D03H+(X-1)*4]=当前年月

MOVXR

R70,0,10

LDBR

R71,0x5AA5 ;R71:R72=0x5AA5,表示开始有历史记录信息

LDWR

MOVDR

0x20,R73,2 ;R73:R74=当前年、月;Frist time Y&M

R75,1

;R75:R76=0x0001,表示第一次存数据

LDWR

0x20,R77,2 ;R77:R78=当前年、月;Last time Y&M

MOVDR

R0,0x6200

LDWR

;VP0x6200-6203=R71:...:R78

R71,0,4

MOVXR

R70,0,16

LDBR

R248,0,2

LDBR

R250,R76,2

MOV

LDWR R72,4

R70,R74,R78 ;R78:..:R85=(X-1)*4

MAC

LDWR

R0,6200H

;定义字库ID:120,字库存放数据地址:(X-1)*4

R4,0x78,1

LDBR

R83,R5,3

MOV

;将变量存放到字库120中

1,4

MOVXL

R70,0,24

LDBR

;存储通道x电能数值的起始变量地址

R72,1000H

LDWR

R248,0,2

LDBR

R76,2

LDWR

R248,R74,R78 ;R78:..:R85=通道1和通道2的电能变量地址相差数

MAC

R70,R82,R86 ;R86:..:R93=通道x的变量地址

ADD

R92,R0,2

MOV

MOVXR

R70,1,2

R0,6202H

LDWR

;VP6202H:6203H=VP[1000H+X*2]:VP[1000H+X*2+1] MOVXR

R70,0,2

R70,0,16

LDBR

LDBR

R248,0,2

R250,R76,2

MOV

LDWR R72,96

MAC

R70,R74,R78 ;R78:..:R85=(X-1)*96

0x20,R70,2

MOVDR

R0,6201H

LDWR

MOVXR

;当前年月

R70,0,1

R0,6200H

LDWR

MOV

R250,R70,2

R70,1,1

INC

MOVXR

;通道号x

R70,0,1

R4,0x79,1

LDBR

MOV

R83,R5,3

;保存当前信息到字库121中

1,4

MOVXL

RET

;***************保存通道X的当前数值********************** SaveCurrentAllaywayData:

LDBR

R70,0,30

R72,6D03H

LDWR

R250,R76,2

MOV

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D03H+(X-1)*4

ADD

R96,R0,2 ;R0:R1=R96:R97

MOV

R70,0,30

LDBR

;R72:R73=VP[6D03H+(X-1)*4]

R72,1,1

MOVXR

0x20,R76,2

MOVDR

;R78:..:R85=当前年月-VP[6D03H+(X-1)*4] R74,R70,R78

SUB

R70,1

LDWR

R84,R70,Esc_SaveCurrentAllaywayData

JS

R70,0,30

LDBR

R72,6D01H

LDWR

R250,R76,2

MOV

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

;R200:R201=VP[6D01H+(X-1)*4]=第一次保存的年月 MOVXR

R200,1,1

BCDHEX

;R202=BCDHEX(第一次保存的年),转换用于后续计算R200,R202,0x11

;R203=BCDHEX(第一次保存的月)

R201,R203,0x11

BCDHEX

;R204:R205=当前年月

0x20,R204,2

MOVDR

;R206=BCDHEX(当前年),用于后面计算

BCDHEX

R204,R206,0x11

;R207=BCDHEX(当前月)

R205,R207,0x11

BCDHEX

R70,0,90

LDBR

MOV

R206,R73,1 ;R73=当前年

R202,R77,1

;R77=第一次保存的年

MOV

;R78:..:R85=当前年-第一次保存的年

SUB

R70,R74,R78

R88,12

LDWR

R82,R86,R90 ;R90:..:R97=(当前年-第一次保存的年)*12

MAC

R207,R101,1 ;R101=当前月

MOV

R94,R98,R102 ;R102:..:R109=(当前年-第一次保存的年)*12+当前月

ADD

;R113=第一次保存的月

R203,R113,1

MOV

;R114:..:R121=(当前年-第一次保存的年)*12+ R106,R110,R114

SUB

;当前月-第一次保存的月

R124,4

LDWR

;R126:..:R133=[(当前年-第一次保存的年)*12+

MAC

R118,R122,R126

;当前月-第一次保存的月]*4

R250,R136,2

MOV

R140,96

LDWR

;R142:..:R149=(X-1)*96

R134,R138,R142

MAC

;R150:..:R157=[(当前年-第一次保存的年)*12+ R130,R146,R150

ADD

;当前月-第一次保存的月]*4+(X-1)*96

R70,0,24

LDBR

;存储通道x电能数值的起始变量地址

LDWR

R72,1000H

R248,0,2

LDBR

R76,2

LDWR

R248,R74,R78 ;R78:..:R85=通道1和通道2的电能变量地址相差数

MAC

R70,R82,R86 ;R86:..:R93=通道x的变量地址

ADD

R92,R0,2

MOV

R70,1,2

MOVXR

R0,6202H

LDWR

;VP6202H:6203H=VP[1000H+X*2]:VP[1000H+X*2+1] MOVXR

R70,0,2

0x20,R70,2

MOVDR

R0,6201H

LDWR

;当前年月

MOVXR

R70,0,1

LDWR

R0,6200H

R250,R70,2

MOV

R70,1,1

INC

MOVXR

R70,0,1 ;通道号x

R4,0x79,1

LDBR

MOV

R155,R5,3

;保存当前信息到字库121中

1,4

MOVXL

R70,0,30

LDBR

R72,6D03H

LDWR

MOV

R250,R76,2

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

ADD

R70,R86,R90 ;R90:..:R97=6D03H+(X-1)*4

R96,R0,2

MOV

MOVDR

0x20,R70,2

;VP[6D03H+(X-1)*4]=当前年月

R70,0,1

MOVXR

RET

Esc_SaveCurrentAllaywayData:

RET

;***************通道X数据查询**************************

DataQueryMethod:

R70,0,2

LDBR

LDWR R0,1200H ;通道X

MOVXR

R70,1,1

R70,1,1

DEC

;VP6F08H=通道号X

LDWR

R0,6F08H

R70,0,1

MOVXR

R70,0,30 ;R70:..:R99=0

LDBR

LDWR

R72,6D01H

R0,6F08H

LDWR

MOVXR R76,1,1

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

;R98:R99=VP(R96:R97)=通道X第一次保存的年月R98,1,1

MOVXR

R70,1

LDWR

;通道X第一次保存的年月不为零,证明R98,R70,EscDataQuery_Start

JS

;有数据,可查询

R70,0,30

LDBR

R72,6D01H

LDWR

R0,6F08H

LDWR

MOVXR R76,1,1

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

R200,1,1

;R200:R201=VP[6D01H+(X-1)*4]=第一次保存的年月 MOVXR

;R202=BCDHEX(第一次保存的年),转换用于后续计算R200,R202,0x11

BCDHEX

;R203=BCDHEX(第一次保存的月)

BCDHEX

R201,R203,0x11

R70,0,16 ;R70:..:R85=0

LDBR

LDWR R0,1100H ;输入的查询起始年份变量地址 VP0x1100

MOVXR

R76,1,1

R72,2000

LDWR

R204,0,8

LDBR

SUB

R74,R70,R204 ;R204:..:R211=输入年份 - 2000

R70,0,24

LDBR

MOV

R202,R73,1

R208,R70,R74 ;R74:..:R81=输入开始日期的年份-历史第一次保存的年份=AA SUB

R84,12

LDWR

LDBR

R180,0,8

R82,R78,R180 ;R180:..:R187=AA*12=A

MAC

LDBR

R70,0,36 ;R70:..:R105=0

LDWR R0,1101H ;输入的查询起始月份变量地址 VP0x1101 R72,1,1

MOVXR

ADD

R184,R70,R74 ;R74:..:R81=A+输入开始日期的月份=B

R203,R85,1

MOV

SUB

;R86:..:R93=B-第一次保存的月份=C

R78,R82,R86

R96,4

LDWR

R90,R94,R98 ;R98:..:R105=C*4

MAC

R70,0

LDWR

R104,R70,EscDataQuery_Start

JS

R70,0,24 ;R70:..:R93=0

LDBR

R248,0,2

LDBR

R0,6F08H

LDWR

MOVXR R76,1,1

LDWR R72,96

R70,R74,R78 ;R78:..:R85=(X-1)*96

MAC

R102,R82,R86 ;R86:..:R93=C*4+(X-1)*96

ADD

R0,6F00H

LDWR

R4,0x79,1

LDBR

R91,R5,3

MOV

;读字库121查询开始日期的数据到变量VP6F00-6F03 0,4

MOVXL

NextQuery_StopDay

GOTO

EscDataQuery_Start:

RET

NextQuery_StopDay:

LDBR

R70,0,30 ;R70:..:R99=0

R72,6D01H

LDWR

R0,6F08H

LDWR

MOVXR R76,1,1

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

;R98:R99=VP(R96:R97)=通道X第一次保存的年月R98,1,1

MOVXR

R70,1

LDWR

JS

;通道X第一次保存的年月不为零,证明R98,R70,EscDataQuery_Stop

;有数据,可查询

R70,0,30

LDBR

LDWR

R72,6D01H

R0,6F08H

LDWR

MOVXR R76,1,1

R80,4

LDWR

R74,R78,R82 ;R82:..:R89=(X-1)*4

MAC

R70,R86,R90 ;R90:..:R97=6D01H+(X-1)*4

ADD

R96,R0,2

MOV

R200,1,1

;R200:R201=VP[6D01H+(X-1)*4]=第一次保存的年月 MOVXR

;R202=BCDHEX(第一次保存的年),转换用于后续计算R200,R202,0x11

BCDHEX

R201,R203,0x11

;R203=BCDHEX(第一次保存的月)

BCDHEX

R70,0,16 ;R70:..:R85=0

LDBR

;输入的查询结束年份变量地址 VP0x1102

R0,1102H

LDWR

R76,1,1

MOVXR

R72,2000

LDWR

SUB

R74,R70,R204 ;R204:..:R211=输入年份 - 2000

;入输入2015,得出结果为15

R70,0,24

LDBR

MOV

R202,R73,1

R208,R70,R74 ;R74:..:R81=输入开始日期的年份-历史第一次保存的年份 SUB

R84,12

LDWR

R180,0,8

LDBR

R82,R78,R180 ;R180:..:R187=(输入开始日期的年份-

MAC

;历史第一次保存的年份)*12=A

R70,0,36 ;R70:..:R105=0

LDBR

LDWR R0,1103H ;输入的查询起始月份变量地址 VP0x1103 R72,1,1

MOVXR

R184,R70,R74 ;R74:..:R81=A+输入开始日期的月份=B

ADD

MOV

R203,R85,1

;R86:..:R93=B-第一次保存的月份=C

SUB

R78,R82,R86

R96,4

LDWR

R90,R94,R98 ;R98:..:R105=C*4

MAC

LDWR

R70,0

R104,R70,EscDataQuery_Stop

JS

LDBR

R70,0,24 ;R70:..:R93=0

R248,0,2

LDBR

R0,6F08H

LDWR

MOVXR R76,1,1

LDWR R72,96

R70,R74,R78 ;R78:..:R85=(X-1)*96

MAC

R102,R82,R86 ;R86:..:R93=C*4+(X-1)*96

ADD

R0,6F04H

LDWR

R4,0x79,1

LDBR

R91,R5,3

MOV

;读字库121查询开始日期的数据到变量VP6F04-6F07 0,4

MOVXL

RET

EscDataQuery_Stop:

RET

;****************电能显示函数********************

ElectricDataDisplay:

R70,0,16 ;R70:..:R85=0

LDBR

R0,6F02H

LDWR

;电能查询起始值

MOVXR

R70,1,2

MOVXR

;电能查询终止值

R74,1,2

-

R70:..:R73

;R78:..:R85=R74:..:R77

SUB

R74,R70,R78

LDWR R0,1300H

MOVXR

R82,0,2 ;显示电能查询的值

RET

。

猜你喜欢

最安全有效的减肥药

最安全有效的减肥药

编辑:小徐

现在的减肥药真的是真假难分,在选择减肥药的同时也应该更加小心,减肥药多种多样,那么如何才能选择最安全有效的减肥药,也成了很多小仙女的内心疑问,下面就跟着我的密秘女友无遮挡小编一起看一下,如何选择最安全有效的减肥药。 最安全有效的减肥药选购方法 1、首先需要观察产品的外包装,在包装中可以看到其配方是不是含有激素,含有激素的减肥药对身体的内..

吃减肥药失眠

吃减肥药失眠

编辑:小徐

随着现在流行以瘦为美,很多人会不顾身体的健康选择减肥药,达到快速减肥瘦身的效果,但是很多减肥药都是有副作用的,副作用比较轻的就是失眠现象,那么吃减肥药出现失眠是怎么回事儿?如果出现失眠后,我们应该怎样缓解? 吃减肥药失眠是怎么回事 减肥药中富含安非他命,所以减肥药服用了太多会有失眠现象,服用减肥药期间,身体会逐渐出现抗药性,身..

最新文章