⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 086.asm

📁 AVR液晶程序模块
💻 ASM
📖 第 1 页 / 共 5 页
字号:
			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 + -