📄 086.asm
字号:
MOV WINDOWS,#04H
MOV WBZ,#00H ;初始化输入位数为0
XZSWITCH2:
LCALL WDISMRealPara;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
LJMP K02CLret
;针头窗口切换
ZDSWITCH:
;显示保存的针头值
;MOV WINDOWS,#03H
MOV XSTMPH,#00H
MOV XSTMPL,ZD
MOV JCQ1,#DISM5
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
;修改: 毫升/小时 与 滴/分共存
; mov R0,#STATUS
; MOV A,@R0
;
; ANL A,#01H
; jz ZDSWITCH0
;
; ;调转到滴速显示
; MOV WINDOWS,#04H
; JMP ZDSWITCH1
;
;ZDSWITCH0:
; ;跳到毫升速显示窗口
; MOV WINDOWS,#06H
MOV A,WINDOWS
XRL A,#02H
JNZ ZDSWITCH1_0
;2号窗口的处理
MOV WINDOWS,#03
LCALL WDISMRealPara ;将SAVENDSJCQ或SAVENHASN的值付给XSTEMPH/L 并将DISM9地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
ljmp ZDSWITCH1
ZDSWITCH1_0:
MOV WINDOWS,#12
LCALL WDISMRealPara ;将SAVENDSJCQ或SAVENHASN的值付给XSTEMPH/L 并将DISM9地址赋值给JSQ1
ZDSWITCH1:
LJMP K02CLret
;---------------------------------
;滴速窗口切换
;---------------------------------
DRPSWITCH:
;显示保存的滴速值
mov R0,#SAVENDSJCQL
MOV A,@R0
MOV XSTMPL,A
INC R0
MOV A,@R0
MOV XSTMPH,A
MOV JCQ1,#DISM1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
;切换到毫升/小时 设置窗口
MOV WINDOWS,#06H
MOV WBZ,#00H ;初始化输入位数为0
LCALL WDISMRealPara;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
MOV FLOWRATETYPE,#01H ;当前显示方式为流速
LJMP K02CLret
;---------------------------------
;流速窗口切换
;---------------------------------
HSQRNSWITCH:
;显示保存的流速值
mov R0,#SAVENHASENL
MOV A,@R0
MOV XSTMPL,A
INC R0
MOV A,@R0
MOV XSTMPH,A
MOV JCQ1,#DISM1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
;切换到预先设置量窗口
MOV WINDOWS,#08H
MOV WBZ,#00H ;初始化输入位数为0
LCALL WDISMRealPara ;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF ;将暂存转换为BCD码送对应窗口显存
LJMP K02CLret
;-----------------------------------
;预设量窗口切换
;-----------------------------------
TOTALSWITCH:
;显示原来的预先设置量值
LCALL WDISMRealPara;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
;显示保存的预先设置值
MOV A,WINDOWS
XRL A,#08H
jz TOTALSWITCH0
JMP TOTALSWITCH1
TOTALSWITCH0:
INC WINDOWS
JMP TOTALSWITCH2
TOTALSWITCH1:
;切换到总累计设置窗口
MOV WINDOWS,#0AH
MOV WBZ,#00H ;初始化输入位数为0
;MOV FLOWRATETYPE,#00H ;当前控制方式为滴速
TOTALSWITCH2:
LCALL WDISMRealPara;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存 s
LJMP K02CLret
;-----------------------------------
;总累计窗口切换
;-----------------------------------
SUMSWITCH:
;显示保存的总累计
LCALL ADDCURRENTSUMWITHSUM
MOV XSTMPL,R5;
MOV XSTMPH,R4;
MOV JCQ1,#DISM9
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
LCALL LED7
LCALL LED8
LCALL LED9
LCALL LED10
;切换到管型设置
MOV WINDOWS,#02H
LCALL WDISMRealPara;将00ZD付给XSTEMPH/L 并将DISM5地址赋值给JSQ1
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存 s
;mov FLOWRATETYPE,#01H
LJMP K02CLret
;-----------------------------------------
;校正值符号切换窗口处理
;-----------------------------------------
STEPSIGNSWITCH:
LCALL CHANGESTEPSIGN
LJMP K02CLret
;---------------清除键处理-------------------------------
;修改:按清除键,清除一切报警标志
;------------------------------------------------------
K04CL:
;当有故障报警时按清除键,只清除报警处理,不进行输入的清除处理,且不能清除输完标志(只能停止键清除)
MOV A,GJBZ1
JNZ K04CL_0
MOV A,FATALERR
JNZ K04CL_0
LJMP K04CL0 ;没有报警信息
K04CL_0:
;有报警信息
LCALL WDISMRealPara
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
LCALL CLEARWARNFLAG;MOV GJBZ1,#00H
MOV TIMBZ3,#00H
MOV R0,#PAUSETIME
mov A,#00H
MOV @R0,A
;灭警告灯及光带显示还原
MOV A,P5K
ANL A,#11101111B
LCALL SETP5VALUE
MOV R7,DISM13 ;只发后四位;关"阻塞,气泡,欠压"
MOV R2,#02H;
MOV R6,#22;
LCALL WRCOM1;
LJMP XF
;没有报警处理,则做真正的清除数据操作
K04CL0:
MOV A,DJBEG
JZ K04CL0_0
;无报警信息且处于电机运行状态下不处理
LJMP XF
K04CL0_0:
;增加对总累计窗口的输入保护(总累计的清除在按键超时中处理)
MOV A,WINDOWS
RR A
XRL A,#05
JNZ K04CL10
LJMP XF
K04CL10:
MOV A,WINDOWS;逻辑窗口为奇数时,清零命令无效;
ANL A,#00000001B;
JZ K04CL1;
LJMP XF
K04CL1:
MOV WBZ,#00H
MOV HSJSQ,#00H
MOV XSTMPH,#00H;窗口清除;
MOV XSTMPL,#00H;
LCALL WWDISM ;将XSTMPH,XSTMPL写入各逻辑窗口对应的输入窗口寄存器中;
LCALL WIN1AD ;取得当前窗口显存首址到R0
LCALL CLRXS;
LJMP XF;
;--------------------------------------------------------------------------
;修改:
;按暂停键时,清除报警标志.
;--------------------------------------------------------------------------
K07CL:
LCALL STARTSPEED
MOV R0,#KVOBZ
MOV @R0,#00H
MOV R0,KUAIZHU
MOV @R0,#00H
MOV A,GJBZ1
jnz K07CL_clreer ;有错误报警
MOV A,FATALERR
JNZ K07CL_clreer
;无错误报警信息
jmp K07CL_0
K07CL_clreer:
;有错误报警信息
;安启动键进入输液处理前有可能某窗口处于设置输入状态,需要先刷新该窗口显示信息
LCALL WDISMRealPara
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
LCALL CLEARWARNFLAG
LJMP K07CLend
K07CL_0:
;安启动键进入输液处理前有可能某窗口处于设置输入状态,需要先刷新该窗口显示信息
LCALL WDISMRealPara
LCALL BCDZF;将暂存转换为BCD码送对应窗口显存
MOV WINDOWS,#0AH
MOV WBZ ,#00H
LCALL WDISMRealPara
lcall BCDZF
;输完的情况下按启动/停止键,输液真正结束处理
MOV R0,#STATUS ;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0 ;b7=1: 输完
JB ACC.7,OVERT0STOP ;输完到停止的处理
ljmp NOTTANSOVER
OVERT0STOP:
MOV R0,#STATUS ;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0 ;b7=1: 输完
ANL A,#00001111B
MOV @R0,A
MOV DJBEG,#00H
LCALL STOPSTEPMOTO
;清除KVO标志信息
MOV R0,#KVOBZ
MOV @R0,#00H
LJMP K07CLend
NOTTANSOVER:
;没有输液结束情况下的判断
MOV A,DJBEG
JZ STARTMOTO ;电机停止转动的情况下的
;电机在转动的情况下的处理(暂停处理)
LJMP PAUSETRANSFUSE
;电机停止转动的情况下启动电机(暂停启动或,直接启动)
STARTMOTO:
lcall JUDGSTARTCONDITION ;A返回;00 不能启动电机,FFH可以输液
CJNE A,#00H, STARTMOTO_0
;不能起始输液
LJMP CANNOTSTART
STARTMOTO_0:
MOV TIMBZ3,#00H
MOV R0,#PAUSETIME
MOV A,#00H
MOV @R0,A
;灭警告灯及光带显示还原
MOV A,P5K
ANL A,#11101111B
LCALL SETP5VALUE
MOV R7,DISM13 ;只发后四位;关"阻塞,气泡,欠压"
MOV R2,#02H;
MOV R6,#22;
LCALL WRCOM1;
mov TIMBZ3,#00H
MOV R0,#STATUS;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0
JNB ACC.6,STARTMOTO1
;暂停情况下的启动/停止处理,清除暂停标志
ANL A,#10111111B
MOV @R0,A
MOV DJBEG,#0FAH
;启动电机运行
LCALL STARTSPEED
LCALL STARTSTEPMOTO
LJMP K07CLend
STARTMOTO1:
lcall JUDGSTARTCONDITION ;A返回;00 不能启动电机,FFH可以输液
CJNE A,#0FFH, STARTMOTO1_0
ljmp STARTMOTO1_01
STARTMOTO1_0:
LJMP CANNOTSTART
STARTMOTO1_01:
MOV R0,#STATUS ;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0 ;b7=1: 输完
JNB ACC.5,STARTMOTO2
;故障暂停下的启动/停止处理
;LCALL CLEARWARNFLAG ;;MOV GJBZ1,#00
MOV TIMBZ3,#00H
MOV R0,#PAUSETIME
MOV A,#00H
MOV @R0,A
;灭警告灯及光带显示还原
MOV A,P5K
ANL A,#11101111B
LCALL SETP5VALUE
MOV R7,DISM13 ;只发后四位;关"阻塞,气泡,欠压"
MOV R2,#02H;
MOV R6,#22;
LCALL WRCOM1;
MOV DJBEG,#0FAH
;速度赋值
LCALL STARTSPEED
;启动电机运行
LCALL STARTSTEPMOTO
;清除KVO信息
MOV R0,#KVOBZ
MOV A,#00H
MOV @R0,A
; MOV R0,#STATUS;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
; MOV A,@R0
; ORL A,#00010000B
; MOV @R0,A
LCALL STARTTRANSDISPLAY
LJMP K07CLend
STARTMOTO2:
lcall JUDGSTARTCONDITION ;A返回;00 不能启动电机,FFH可以输液
CJNE A,#0FFH, CANNOTSTART
;正常情况下的启动停止处理
MOV TIMBZ3,#00H
MOV R0,#PAUSETIME
MOV A,#00H
MOV @R0,A
;灭警告灯及光带显示还原
MOV A,P5K
ANL A,#11101111B
LCALL SETP5VALUE
MOV R7,DISM13 ;只发后四位;关"阻塞,气泡,欠压"
MOV R2,#02H;
MOV R6,#22;
LCALL WRCOM1;
MOV DJBEG,#0FAH
;启动电机运行
;电机运行参数直接赋值
LCALL STARTSPEED
LCALL STARTSTEPMOTO
; MOV R0,#STATUS;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
; MOV A,@R0
; ORL A,#00010000B
; MOV @R0,A
LCALL STARTTRANSDISPLAY
LJMP K07CLend
;输液暂停
PAUSETRANSFUSE:
;置位暂停标识,并初始化暂停定时器
;开键盘锁定状态,可以输入
MOV R0,#STATUS ;机器运行状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0 ;b7=1: B6=1 暂停
ORL A,#01000000B
anl A,#11101111B
MOV @R0,A
;初始化暂停计时器
MOV R0,#PAUSETIME
MOV @R0,#00H
;初始化暂停超时报警标志为0
MOV A,GJBZ1;第6位为暂停超时标志
ANL A,#10111111B
MOV GJBZ1,A
;置位电机转动标志
MOV DJBEG,#00H
;停止电机运行
LCALL STOPSTEPMOTO
LJMP K07CLend
K07CLend:
LJMP XF;
CANNOTSTART:
;输完报警
MOV R0,#STATUS ;状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=锁键盘,b3=,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
MOV A,@R0 ;b7=1: 输完
ORL A,#10000000B
MOV @R0,A
;置位报警标志 b7=,b6=,b5=输完,b4=门,b3=机障,b2=阻塞,b1=气泡,b0=欠压
MOV A,GJBZ1
ORL A,#00100000B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -