迪文屏OS汇编代码开发-参数修改 保存 翻页(七)
; DWIN OS
;程序功能:上翻页,下翻页,参数修改,保存
;软件环境: DWIN OS ASM Builder V1.5
;硬件环境:DW K600+平台
;变量
;用户数据区地址从0x0600 0000开始分配,目前定义的参数区为40个 = 最大处方数。
;参数从0x0600 0000开始存储,参数区大小为16word
;参区1:0x0600 0000-0x0120 000F
;参区2:0x0600 0010-0x0120 001F
;参区3:0x0600 0020-0x0120 002F
;参区4:0x0600 0030-0x0120 003F
;参区5:0x0600 0040-0x0120 004F
;参区6:0x0600 0050-0x0120 005F
;...
;以下为程序占用的寄存器变量
;R214-R215 开机下发中英文标志
;R216-R217 处方应用后,发送温度修改指令
;R218-R219 处方页保存图标更新计数
;R220-R221 当前页序号+9存储地址
;R230-R233 当前显示页首地址
;R234-R237 当前显示页尾地址
;R238-R239 当前显示首页对应的序号
;R240-R244 删除页地址
;R249-R252 当前页面,记录首地址
;R253-R254 用于保存选择删除记录的图标位置,开机初始化0x4004
;0x2ffA 中英文图标
;0x2ffB 中英文按键
;0x2ffc 处方页保存图标地址
;0x2ffd 箭头左地址
;0x2ffe 箭头右地址
;临时使用变量 0x1001
;翻页后,更新选择标志为第一条处方,读取更新时间温度值。
;增加保存后显示保存成功图标
;开机1分钟后,发送保存的治疗时间和温度
;点击启动治疗后,保存治疗温度时间。
;中英文图标单独分配变量
;开机后发送中英文标志
;宏定义区域
保存键 EQU 0X1000
英文处方保存提示 EQU 0X2FF9
中英文图标 EQU 0X2FFA
中英文键 EQU 0X2FFB
中文处方保存提示 EQU 0X2FFC
显示键 EQU 0X3000
全部删除键 EQU 0X4000
应用按键 EQU 0X4000
删除键 EQU 0X4001
上页键 EQU 0X4002
下页键 EQU 0X4003
选择记录图标1 EQU 0X4004
选择记录键 EQU 0X400E
时间地址 EQU 0X4010
温度地址 EQU 0X4011
记录序号 EQU 0X4012
处方键 EQU 0x3000
每页记录数 EQU 10
最大处方数 EQU 40
中英文标志HA EQU 0X0600
中英文标志LA EQU 0X0500
处方标志HA EQU 0X0600
处方标志LA EQU 0X0510
BUF0HA EQU 0X0600
BUF0LA EQU 0X0000
中文开机界面 EQU 0X0001
英文开机界面 EQU 72
bit16 EQU 1
bit8 EQU 0
XR EQU 1
RX EQU 0
CALL 开机提醒
CALL 更新中英文标志
CALL 保存键处理函数
CALL 选择处方函数
CALL 处方按键按下处理函数
CALL 下翻页函数
CALL 上翻页按键处理函数
CALL 应用按键按下处理函数
CALL 周期判断执行函数
END
;------------------------------------程序模块======更新中英文标志------------------------------
;实时读取变量值,如果更改,保存用户数据
更新中英文标志:
LDWR R0,中英文键 ;将中英文键地址赋值给R0 R1
;读取中英文键地址的数据到R10 R11
MOVXR R10,1,1 ;2字节变量数据到寄存器R10 R11
IJNE R11,1,继续判断英文;判断读取的按键值是否为1;1是中文,2是英文
;保存中文标志
LDWR R10,0X0001;
LDWR R4,中英文标志HA ;读取保存中英文标志数据
LDWR R6,中英文标志LA
CALL 写1W用户数据
;更新中文图标显示
LDWR R0,中英文图标
LDWR R10,0X0001
MOVXR R10,RX,1
;COMTXI 0,R10,2;
;clear button value
LDWR R0,中英文键
LDWR R10,0X0000
MOVXR R10,RX,1
RET
继续判断英文:
IJNE R11,2,结束判断;判断读取的按键值是否为2
;保存英文标志
LDWR R10,0X0002;
LDWR R4,中英文标志HA ;读取保存中英文标志数据
LDWR R6,中英文标志LA
CALL 写1W用户数据
;更新显示英文图标显示
LDWR R0,中英文图标
LDWR R10,0X0002
MOVXR R10,RX,1
;COMTXI 0,R10,2;
;clear button value
LDWR R0,中英文键
LDWR R10,0X0000
MOVXR R10,RX,1
RET
结束判断:
RET
;--------------------------------------END----------------------------------------
;------------------------------------程序模块======读取中英文标志-------------------------
读取中英文标志:;切换开机界面
LDWR R4,中英文标志HA ;读取保存的中英文标志数据
LDWR R6,中英文标志LA
CALL 读1W用户数据
MOVXR R50,XR,1; 1个字
LDWR R52,0XAA01;调试串口
COMTXI 0,R50,4;发送中英文
IJNE R50,0,英文标志 ;1是中文,else是英文
IJNE R51,1,英文标志
;确定为中文标志
LDWR R10,中文开机界面 ;跳转中文界面
MOVRD R10,3,2
;更新中文图标
LDWR R0,中英文图标
LDWR R10,0X0001
MOVXR R10,RX,1
RET
英文标志:
LDWR R10,英文开机界面 ;跳转英文界面
MOVRD R10,3,2
;更新英文图标
LDWR R0,中英文图标
LDWR R10,0X0002
MOVXR R10,RX,1
;结束读取中英文:
RET
;--------------------------------------END----------------------------------------
;------------------------------------程序模块======清除保存图标------------------------------
周期判断执行函数:
LDWR R10,0x0001;
JS R218,R10,不需要清保存图标; R218R219 >=1,需要清图标
;需要清图标
INC R218,bit16,1;i++
;COMTXI 0,R219,1;发送显示的序号
LDWR R10,0x000A;
JS R218,R10,不需要清保存图标; R218R219 >=10,需要清图标
;清除保存图标
LDWR R0,中文处方保存提示;1个16为立即数到寄存器
LDWR R10,0;
MOVXR R10,RX,1;寄存器值赋值给dgus寄存器
LDWR R0,英文处方保存提示;1个16为立即数到寄存器
LDWR R10,0;
MOVXR R10,RX,1;寄存器值赋值给dgus寄存器
LDWR R218,0x0000;清除保存图标显示标志位
不需要清保存图标:
;--------------------------------------END----------------------------------------
;------------------------------程序模块======延时200ms下发温度数据--------------------------
LDWR R10,0x0001;
JS R216,R10,不用下发温度数据; R216R217 >=1,需要发温度数据
;需要发温度数据
INC R216,bit16,1;i++
LDWR R10,0x0003;
JS R216,R10,不用下发温度数据; R216R217 >=5,需要发温度数据
;发温度数据
LDWR R40,0XAA55 ;
LDWR R42,0X0683 ;
LDWR R44,0X0001 ;
LDWR R46,0X0100 ;
LDWR R48,0X0600;R48写入数据4010
LDWR R0,温度地址;1个16为立即数到寄存器
MOVXR R47,XR,1;变量到寄存器
COMTXI 0,R40,9; 发送给单片机,
LDWR R216,0x0000;清除下发温度数据标志
不用下发温度数据:
;--------------------------------------END----------------------------------------
;------------------------------程序模块======开机下发中英文标志--------------------------
LDWR R10,0x0001;
JS R214,R10,不用下发中英文; R214R215 >=1,需要发中英文状态
;需要发中英文状态
INC R214,bit16,1;i++
;发中英文数据
LDWR R40,0XAA55 ;
LDWR R42,0X0683 ;
LDWR R44,中英文键 ;模拟中英文按键
LDWR R46,0X0100 ;
LDWR R48,0X0000;R48写入数据
LDWR R0,中英文图标;1个16为立即数到寄存器
MOVXR R47,XR,1;变量到寄存器
COMTXI 0,R40,9; 发送给单片机,
LDWR R10,0x0010;
JS R214,R10,不用下发中英文; R214R215 >=10,清除标志
LDWR R214,0x0000;清除下发中英文标志
不用下发中英文:
;--------------------------------------END----------------------------------------
RET
;------------------------------应用按键按下处理函数-------------------------
应用按键按下处理函数:
;将保存按键地址赋值给R0 R1
LDWR R0,应用按键;
;读取按键地址的数据到R10 R11
MOVXR R10,1,1 ;2字节变量数据到寄存器R10 R11
IJNE R11,1,应用按键未按下;判断读取的按键值是否为1
;应用按键按下,发送温度,时间数据
;时间:AA 55 06 83 00 00 01 00 20
;温度:AA 55 06 83 00 01 01 00 06
;时间地址:4010-0000
;温度地址:4011-0001
LDWR R40,0XAA55 ;
LDWR R42,0X0683 ;
LDWR R44,0X0000 ;
LDWR R46,0X0100 ;
LDWR R48,0X2000;R48写入数据4010
;更新时间数据,发送单片机
LDWR R0,时间地址;1个16为立即数到寄存器
MOVXR R47,XR,1;变量到寄存器
COMTXI 0,R40,9; 发送给单片机,
;时间温度数据写入显示屏
LDWR R0,时间地址;源数据地址
LDWR R2,0X0000
MOVXX 2;时间、温度数据送显示
LDWR R0,应用按键;1个16为立即数到寄存器
LDWR R10,0X0000;
MOVXR R10,0,1;寄存器值赋值给dgus寄存器
LDBR R216,0,1;216 = 0
LDBR R217,1,1;217 = 1;延时发送温度修改串口数据标志位
应用按键未按下:
RET
;--------------------------------------END----------------------------------------
;------------------------------处方按键按下处理函数-------------------------
处方按键按下处理函数:
LDWR R0,处方键;
;读取按键地址的数据到R10 R11
MOVXR R10,1,1 ;2字节变量数据到寄存器R10 R11
IJNE R11,1,处方键未按下;判断读取的按键值是否为1
; 显示处方数据,初始化
;清零记录序号
LDWR R0,记录序号;数据地址写入R0R1指针
LDWR R10,0;LDWR R10,0X0000;
MOVXR R10,RX,1;寄存器值赋值
CALL 显示处方数据函数
;更新显示前10条的处方名字
;清除按下的按键
LDWR R0,处方键;1个16为立即数到寄存器
LDWR R10,0X0000;
MOVXR R10,0,1;寄存器值赋值给dgus寄存器
处方键未按下:
RET
;--------------------------------------END----------------------------------------
;=========================================子程序单元==========================================
;显示处方数据,根据处方序号,刷新显示整页10条处方数据
;记录序号存储在0x4012中
;=========================================子程序单元==========================================
显示处方数据函数:
LDWR R10,1
LDWR R0,选择记录键;
MOVXR R10,RX,1;
LDBR R30,0,1; i=0
LDBR R31,10,1; 每页显示10调数据
;序号值N*16 = 偏移地址
LDBR R40,0,16;寄存器清零
LDWR R0,记录序号;
MOVXR R42,XR,1;读出当前序号值N
LDWR R46,0x10;16
;COMTXI 0,R40,16;
MAC R40,R44,R48;N*16 R52-R55为偏移地址
;COMTXI 0,R40,16;发送显示的序号
;基地址 + 偏移地址 = 数据地址
MOV R52,R40,4;偏移地址写入40
LDWR R44,BUF0HA ;0x06000000 基础地址
LDWR R46,BUF0LA ;
ADD R40,R44,R48; R52-R55为数据地址
;COMTXI 0,R40,16;发送显示的序号
MOV R52,R4,4;增加后的结果重新写入R4,得到当前页第一条记录地址
;COMTXI 0,R4,4;发送显示的序号
LDWR R2,0x2000;数据显示地址1
;COMTXI 0,R0,4;
继续读处方FLASH数据:
;COMTXI 0,R4,4;用户地址
CALL 读3W用户数据; 读出到0x1001-0x1003, 时间温度序号
;COMTXI 0,R2,2;
MOVXX 3;时间温度序号暂存到2000地址,处方1显示位置
;如果是2000地址,更新时间温度数据
LDWR R40,0X20000
CJNE R2,R40,继续读处方数据
CJNE R3,R41,继续读处方数据
MOV R2,R40,2;暂存R2R3寄存器内容
LDWR R0,0X2000;源数据地址
LDWR R2,时间地址
MOVXX 2;读出的用户数据写入时间地址、温度地址
MOV R40,R2,2;独处暂存器内容
继续读处方数据:
;i++
INC R30,0,1
;r4r5r6r7 +16;
;flash基础地址+16
LDBR R40,0,16;寄存器清零
MOV R4,R40,4
LDWR R46,0x10;加16
ADD R40,R44,R48;R52 R53 R54 R55
MOV R52,R4,4;增加后的结果重新写入R4
;r2地址+16
LDBR R40,0,16;寄存器清零
MOV R2,R42,2
LDWR R46,0x10;加16
ADD R40,R44,R48;R52 R53 R54 R55
MOV R54,R2,2;增加后的结果重新写入R2
CJNE R30,R31,继续读处方FLASH数据
RET
;--------------------------------------END----------------------------------------
;=========================================子程序单元==========================================
;功能:保存当前的时间、温度数据。
;逻辑:根据记录序号--当前数据flash地址--时间地址+温度地址数据保存到flash
;=========================================子程序单元==========================================
保存键处理函数:
LDWR R0,保存键; ;将保存按键地址赋值给R0 R1
;读取按键地址的数据到R10 R11
MOVXR R10,1,1 ;2字节变量数据到寄存器R10 R11
IJNE R11,1,保存未按下;判断读取的按键值是否为1
;保存当前选中的处方数据。
;显示图标对应的时间温度数据,N*16 = 偏移地址
;选择序号+首处方序号 = 新的N
LDBR R40,0,16;寄存器清零
MOV R253,R42,2;当前选中的处方号0-9
LDWR R0,记录序号;
MOVXR R46,XR,1;读出当前序号值
ADD R40,R44,R48;R52 R53 R54 R55 新的N
;COMTXI 0,R40,16;发送显示的序号
MOV R52,R40,4;新的N
LDBR R44,0,12;寄存器清零
LDWR R46,0x10;16
MAC R40,R44,R48;新的N*16 R52-R55为偏移地址
;COMTXI 0,R40,16;发送显示的序号;COMTXI 0,R52,4;发送显示的序号
;基地址 + 偏移地址 = 数据地址
MOV R52,R40,4;偏移地址写入40
LDWR R44,BUF0HA ;
LDWR R46,BUF0LA ;
ADD R40,R44,R48; R52-R55为数据地址
MOV R52,R4,4;当前选中处方的flash地址
; COMTXI 0,R4,4;发送显示的序号
;保存显示的温度和时间到flash
;R4-R7 地址
LDWR R0,时间地址;r0 r1制定变量地址
MOVXL 3,2
LDWR R0,保存键;1个16为立即数到寄存器
LDWR R10,0X0000;
MOVXR R10,0,1;寄存器值赋值给dgus寄存器
;显示保存成功图标
LDWR R0,中文处方保存提示;1个16为立即数到寄存器
LDWR R10,1;
MOVXR R10,RX,1;寄存器值赋值给dgus寄存器
LDWR R0,英文处方保存提示;1个16为立即数到寄存器
LDWR R10,2;
MOVXR R10,RX,1;寄存器值赋值给dgus寄存器
LDBR R218,0,1;218 = 0
LDBR R219,1,1;219 = 1;选择一个标志位,用于更新显示保存图标的状态
保存未按下:
RET
;--------------------------------------END----------------------------------------
;=========================================子程序单元==========================================
开机提醒:
IJNE R255,0,BEEPEND; 变量立即数比较
LDBR R10,100,1;立即数到寄存器
MOVRD R10,2,1;寄存器R10到DGUS屏幕寄存器2,D2寄存器为蜂鸣器寄存器
LDBR R255,1,1 ;立即数到寄存器,标志位
;读取flash数据,如果不等于1,初始化处方数据;如果等于1,不再初始化处方。
CALL 读取中英文标志 ;
CALL OS_MODIFY_TOUCH_SENSITIVITY ;OS修改触摸灵敏度 子进程,上电执行一次
LDWR R214,0X0001;使能开机发送中英文标志
LDWR R4,处方标志HA;
LDWR R6,处方标志LA;
CALL 读1W用户数据;读取记录数
MOVXR R22,XR,1
LDWR R52,0XAA02
COMTXI 0,R52,2;
COMTXI 0,R22,2;
IJNE R22,0x0f,初始化处方;不相等就跳转,初始化处方
LDWR R52,0XAA03
COMTXI 0,R52,2;
GOTO BEEPEND
初始化处方:
;保存处方 标志
LDWR R10,0X0f0f;
LDWR R4,处方标志HA;
LDWR R6,处方标志LA;
CALL 写1W用户数据
;================开机初始化数据,所有处方数据都是1,2
LDBR R30,0,1; i=0
LDBR R31,最大处方数,1; 40
LDWR R10,0x0a; 初始写入的数据,时间
LDWR R12,0x0c;初始写入的数据,温度
LDWR R14,0x01;处方序号
LDWR R4,BUF0HA;处方首地址0x01200000
LDWR R6,BUF0LA
LDBR R40,0,16;寄存器清零
继续初始化处方:
; COMTXI 0,R4,4;
CALL 写3W用户数据;R10R11R12R13R14R15写入flash0x01200000
INC R11,0,1;改变时间
INC R15,0,1;处方序号++
INC R30,0,1;i++
COMTXI 0,R14,2;
;r4r5r6r7 +16;
MOV R4,R40,4
LDWR R46,0x10;加16
ADD R40,R44,R48;R52 R53 R54 R55
MOV R52,R4,4;增加后的结果重新写入R4
CJNE R30,R31,继续初始化处方
BEEPEND:
RET
;--------------------------------------END----------------------------------------
;=========================================子程序单元==========================================
读1W用户数据: ;读出到1001
LDWR R0,0x1001;
MOVXL 2,1;读出序号内容到0x1001
RET
;=========================================子程序单元==========================================
读2W用户数据: ;读出到1001
LDWR R0,0x1001;
MOVXL 2,2;读出序号内容到0x1001
RET
;=========================================子程序单元==========================================
读3W用户数据: ;读出到1001
LDWR R0,0x1001;
MOVXL 2,3;读出序号内容到0x1001-0x1003
RET
;=========================================子程序单元==========================================
写1W用户数据: ;R10为要写入的变量值,
LDWR R0,0X1001; 初始化R0
MOVXR R10,0,1; 1个字长度数据写入0x1001;
MOVXL 3,1;变量数据到用户数据库
RET
;=========================================子程序单元==========================================
写2W用户数据: ;R10 R11= H16,R12 R13= L16 ,R4-R7 地址
LDWR R0,0X1001;r0 r1制定变量地址
MOVXR R10,0,2
MOVXL 3,2
RET
;=========================================子程序单元==========================================
;涉及寄存器R10-R15,涉及变量地址0X1001-0X1003
写3W用户数据: ;R10 R11= H16,R12 R13= L16 ,R14R15,R4-R7 地址
LDWR R0,0X1001;r0 r1制定变量地址
MOVXR R10,RX,3
MOVXL 3,3
RET
;=========================================子程序单元==========================================
发送R0数据:
MOVXR R100,1,1;读出数据到寄存器
;COMTXI 0,R100,2;串口发送数据
RET
;=========================================子程序单元==========================================
发送R0R1数据:
MOVXR R100,XR,2;
;COMTXI 0,R100,4;
RET
;=========================================子程序单元==========================================
;根据给定的地址,对地址进行偏移操作后,读出地址内容数
;参数:地址:R4-R6,偏移量:R56-R59,读出数据:R4-R6
读偏移2W数据:
LDBR R40,0,16
MOV R4,R40,4
MOV R56,R44,4
ADD R40,R44,R48;R52 R53 R54 R55
MOV R52,R4,4
CALL 读2W用户数据
MOVXR R4,XR,2
;=========================================子程序单元==========================================
READ_ADD_WRITE_DATA:
;功能:根据给定的地址--读出给定地址内容--对内容加操作--以新内容为地址写入数据
;参数:设置地址:R4-R6,内容增量:R36-R39,写入数据:R56-R59
LDWR R0,0x1001;
MOVXL 2,2;读出内容
;加操作
LDBR R40,0,16
MOV R36,R44,4
MOVXR R40,XR,2
;COMTXI 0,R40,8
ADD R40,R44,R48;R52 R53 R54 R55
;COMTXI 0,R52,8;地址 01300002
;写入
MOV R52,R4,4
LDWR R0,0X1001;
MOVXR R56,RX,2
MOVXL 3,2 ;写
RET
;=========================================子程序单元==========================================
READ_DATA_WRITE_ADD:
;功能:根据给定的地址--读出给定地址内容--对内容加操作--以新内容为地址读出其中的数据,写入R70-R73
;参数:给定的地址存储在R56-R59,设置地址增量到R39,新地址 R70-R73
MOV R56,R4,4
LDWR R0,0x1001;
MOVXL 2,2;读出内容
;加操作
LDBR R40,0,16
MOV R39,R47,1
MOVXR R40,XR,2
ADD R40,R44,R48;R52 R53 R54 R55
;COMTXI 0,R52,4;新地址
MOV R52,R4,4
LDWR R0,0x1001;
MOVXL 2,2;读出内容
MOV R70,R4,4
MOVXL 3,2 ;写
RET
;=========================================子程序单元==========================================
READ_DATA_WRITE_DATA:;功能:根据给定的地址--读出给定地址内容--对内容进行减操作后写入原给定地址
;给定地址地址R4-R6,数据增量R39
LDWR R0,0x1001;
MOVXL 2,2;读出内容
;减操作
LDBR R40,0,16
MOV R39,R47,1
MOVXR R40,XR,2
SUB R40,R44,R48;R52 R53 R54 R55
;COMTXI 0,R40,16
;COMTXI 0,R52,8;地址 01300002
;写入
LDWR R0,0X1001;
MOVXR R52,RX,2
MOVXL 3,2 ;写
RET
;=========================================子程序单元==========================================
READ_PLUS_DATA_WRITE_BACK:;功能:根据给定的地址--读内容--对内容进行加操作后写入原给定地址
;给定地址地址R4-R6,数据增量R36-R39
LDWR R0,0x1001;
MOVXL 2,2;读出内容
;加操作
LDBR R40,0,16
MOV R36,R44,4
MOVXR R40,XR,2
ADD R40,R44,R48;R52 R53 R54 R55
;COMTXI 0,R52,8;地址 01300002
;写入
LDWR R0,0X1001;
MOVXR R52,RX,2
MOVXL 3,2 ;写
RET
;=========================================子程序单元==========================================
;=========================================子程序单元==========================================
;功能:获取要删除的记录地址
;参数: 当前页面记录首地址:R249-R252,选择的记录序号:R253-R254 结果地址:R240-R244
获取删除页地址:
LDBR R30,0,1; i=0
MOV R249,R4,4;当前页面,记录首地址
LDWR R36,0
LDWR R38,2;偏移地址
IJNE R254,0,继续检索
GOTO 找到删除页地址
继续检索:
INC R30,0,1;i++
ADD R4,R36,R48;R52 R53 R54 R55
MOV R52,R4,4
CALL 读2W用户数据;读出数据
MOVXR R4,XR,2;更新地址R4 R6
CJNE,R30,R254,继续检索
找到删除页地址:
MOV R4,R240,4
RET
;=========================================子程序单元==========================================
;=========================================子程序单元==========================================
;功能:获取当前页面选择的记录号,范围(1-10),存储在R253-R254
;图标地址存储在0X4004-0X400D
;按键地址存储在0X400E
选择处方函数:
LDWR R12,1
LDWR R0,选择记录键;
MOVXR R10,XR,1;保存当前选中的处方
JS R10,R12,未操作记录选择键;>=1执行,小于1跳转
;按下记录选择键,读取按键值R10-R11,清空图标内容,显示按下记录对应的图标
LDBR R40,0,20
LDWR R0,0X4004
MOVXR R40,RX,10;清空图标
;送显示图标
LDWR R0,选择记录图标1
;COMTXI 0,R10,2;发送显示的序号
MOV R10,R253,2;保存选择的序号
DEC R253,1,1
INC R10,0,0x40;选择图标序号+图标1的基础地址
INC R11,0,0x03;地址低位
MOV R10,R0,2;图标显示地址
LDWR R14,1;图标默认值
MOVXR R14,RX,1;写入图标值
;======================增加显示选中的时间温度数据
;COMTXI 0,R253,2;发送显示的序号
;显示图标对应的时间温度数据,N*16 = 偏移地址
;选择序号+首处方序号 = 新的N
LDBR R40,0,16;寄存器清零
MOV R253,R42,2;当前选中的处方号0-9
LDWR R0,记录序号;
MOVXR R46,XR,1;读出当前序号值
ADD R40,R44,R48;R52 R53 R54 R55 新的N
;COMTXI 0,R40,16;发送显示的序号
MOV R52,R40,4;新的N
LDBR R44,0,12;寄存器清零
LDWR R46,0x10;16
MAC R40,R44,R48;新的N*16 R52-R55为偏移地址
;COMTXI 0,R40,16;发送显示的序号;COMTXI 0,R52,4;发送显示的序号
;基地址 + 偏移地址 = 数据地址
MOV R52,R40,4;偏移地址写入40
LDWR R44,BUF0HA ;
LDWR R46,BUF0LA ;
ADD R40,R44,R48; R52-R55为数据地址
MOV R52,R4,4
;COMTXI 0,R4,4;发送显示的序号
CALL 读2W用户数据; 读出到1001,送时间温度/处方序号显示
LDWR R2,时间地址
;COMTXI 0,R0,4;
MOVXX 2;读出的用户数据写入时间地址、温度地址
LDWR R0,0X1001
MOVXR R180,1,2
;COMTXI 0,R180,4;
LDWR R0,0X4010
MOVXR R180,1,2
;COMTXI 0,R180,4;
;======================
LDWR R0,选择记录键 ;清除按键值
LDWR R10,0X0000
MOVXR R10,0,1
未操作记录选择键:
RET
;=========================================子程序单元==========================================
;上翻页函数
;=========================================子程序单元==========================================
上翻页按键处理函数:
LDWR R0,上页键;
MOVXR R10,XR,1 ;
IJNE R11,1,上页键未按下;判断读取的按键值是否为1
;比较当前处方序号
LDWR R0,记录序号;数据地址写入R0R1指针
MOVXR R10,1,1; 读出当前页第一条处方对应的处方序号
LDWR R20,10; 第一条记录号大于等于10,执行减翻页操作,else不翻页。
;COMTXI 0,R10,2;
;COMTXI 0,R20,2;39
JS R10,R20,清除上翻页按键值;A>=B执行下一条指令,A<B跳转。
;记录序号-10,读FLASH数
LDBR R40,0,16;寄存器清零
LDWR R46,每页记录数 ;每页10条记录
LDWR R0,记录序号;
MOVXR R42,XR,1;读出当前序号值
SUB R40,R44,R48;R52 R53 R54 R55
LDWR R0,记录序号;
MOVXR R54,RX,1;寄存器值赋值给dgus变量4012
CALL 显示处方数据函数
清除上翻页按键值:
LDWR R0,上页键;1个16为立即数到寄存器
LDWR R10,0X0000;
MOVXR R10,0,1;寄存器值赋值给dgus寄存器
上页键未按下:
RET
;=========================================子程序单元==========================================
;=========================================子程序单元==========================================
;下翻页
;=========================================子程序单元==========================================
下翻页函数:
LDWR R0,下页键;
MOVXR R10,XR,1 ;
IJNE R11,1,下页键未触发;判断读取的按键值是否为1
;下页键按下,不超过最大处方数,执行+10
;LDWR R20,0XCCDD
;COMTXI 0,R20,2;
;比较当前处方序号
LDWR R0,记录序号;数据地址写入R0R1指针
MOVXR R10,1,1; 读出当前页第一条处方对应的处方序号
LDWR R20,29;40条处方,最后一页第一个处方是30,最大处方数 - 11 ;LDWR R20,最大处方数- 11
;COMTXI 0,R10,2;
;COMTXI 0,R20,2;39
JS R10,R20,执行下翻页操作;A>=B执行下一条指令,A<B跳转。
GOTO 清除下翻页按键值;不进行翻页
执行下翻页操作:
;LDWR R20,0XEEFF
;COMTXI 0,R20,2;
;记录序号+10,读FLASH数
LDBR R40,0,16;寄存器清零
LDWR R42,每页记录数 ;每页10条记录
LDWR R0,记录序号;
MOVXR R46,XR,1;读出当前序号值
ADD R40,R44,R48;R52 R53 R54 R55
;MOV R52,R4,4;增加后的结果重新写入R4,得到当前页第一条记录地址
;更新处方序号数值
LDWR R0,记录序号;
MOVXR R54,RX,1;寄存器值赋值给dgus变量4012
;COMTXI 0,R54,2;10
CALL 显示处方数据函数
清除下翻页按键值:
LDWR R0,下页键;1个16为立即数到寄存器
LDWR R10,0X0000;
MOVXR R10,0,1;寄存器值赋值给dgus寄存器
下页键未触发:
RET
;=========================================子程序单元==========================================
;=========================================子程序单元==========================================
;OS修改触摸灵敏度 子进程
OS_MODIFY_TOUCH_SENSITIVITY:
LDBR R20,0,10
MOVDR 0xE0,R20,6;DGUS寄存器 0xE0-0xE5
LDBR R20,0x5A,1 ;0xE0 5A 表示执行一次 触摸配置
LDBR R21,0x5A,1 ;0xE1 5A表示掉电保存,其他值表示掉电不保存
LDBR R23,0x1E,1 ;0xE3 默认值 0x1E
LDBR R24,0x08,1 ;0xE4 默认值 0x08
LDBR R25,0x0A,1 ;0xE5 默认值 0x0A
;在此做灵敏度值的调整
LDBR R22,0x1E,1 ;范围 0x00-0x1F,值越大灵敏度越高
;
MOVRD R20,0xE0,6
RET
;=========================================子程序单元==========================================