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

📄 wdt4mavprompt.s43

📁 射频卡水表源代码 射频卡水表源代码
💻 S43
字号:
        #include    "WDT4MDefination.h"

        PUBLIC  LCDALL
        PUBLIC  AVprompt
        extern  OneTwo
        extern  BinDec
        extern  DLY100ms
        RSEG    CODE
//***************************  Display All the LCD ****************************//
LCDALL  mov.b	#LCDM1_,AX
	mov.b	#10,BX
LCDALLLoop
	mov.b	#0ffh,0(AX)
	inc	AX
	dec.b	BX
	jnz	LCDALLLoop
        mov.b   #LCDON+LCD4MUX+LCDP1,&LCDCTL     ;LCD 4Mux, S0-S23;
	ret
//****************  Display all the system data with LCD *******************//
//******** IN:  &DSPNO
//******** 0:购量;1:余量;2:累计;3:表号;4:日期;5:时间;6:常数;7:基本量1;8:基本量2
AVprompt
	tst.b	&DSPTM			;显示延时时间
	jnz	AVpromptNXT1
	mov.b   #LCD4MUX+LCDP1,&LCDCTL  ;关显示时间到 LCD 4Mux, S0-S23;	
	jmp     AVpromptRTN
AVpromptNXT1	
        mov.b   #LCDON+LCD4MUX+LCDP1,&LCDCTL 
        bit     #DSPFG                  ;Entrance detect
        jz      AVpromptRTN
	bic	#DSPFG                  ;Display changing
	bit     #CardOpOKFG
	jz      AVpromptNXT2
        bic     #CardOpOKFG
        CALL    #DispCardOperate
        jmp     AVpromptRTN
AVpromptNXT2        
        CALL    #DispInit
	CALL    #DispParameter        		
        CALL    #DispOthers
AVpromptRTN
	ret
//************************ Display Fault  ***************************//
DispFault
	bit	#DataWrongFG
	jz      DispFaultNXT0
	bis.b   #h,&LCDM7
 	jmp     DispFaultRTN	
DispFaultNXT0	
	bit	#ERRFG
	jz      DispFaultNXT1
	bic	#ERRFG
	bis.b   #h,&LCDM7
//	BuzOn
//	call	#DLY100ms
//	call	#DLY100ms
//	call	#DLY100ms
// 	BuzOff
 	jmp     DispFaultRTN
DispFaultNXT1
        bic.b   #h,&LCDM7        
DispFaultRTN
	ret
//************************ Display valve state  ***************************//
DispValve
	bit	#ValveOperatingFG
	jz	DispValveNXT1         ;The VALVE is opened
	xor.b	#b,&LCDM1             ;The VALVE is closed, Flash the symbol
	jmp     DispValveRTN	
DispValveNXT1
	bit	#VALVEFG              ;Check the state of the VALVE
	jz	DispValveNXT2          ;The VALVE is opened
	bis.b	#b,&LCDM1             ;The VALVE is closed, show the symbol
	jmp     DispValveRTN
DispValveNXT2	
	bic.b	#b,&LCDM1             ;The VALVE is opend, light the symbol
DispValveRTN
	ret
//*************************** Display Stolen  ****************************//
DispStolen
	bit	#POARFG			;窃用显示
	jz	DispStolenNXT
        bis.b	#h,&LCDM4
        jmp     DispStolenRTN
DispStolenNXT
	bic.b	#h,&LCDM4
DispStolenRTN	
	ret
//*************************** Display Alarm  ****************************//
DispAlarm
	bit	#ALARMFG                 ;告警显示
	jz      DispAlarmNXT           
	bis.b	#h,&LCDM5
	jmp     DispAlarmRTN
DispAlarmNXT
        bic.b	#h,&LCDM5
DispAlarmRTN              
	ret
//*************************** Display LowVoltage  ****************************//
DispLowVoltage
//	bit	#BOUTFG
//	jnz	DispLowVoltageNXT1
	bit	#VLFG			;低压显示
	jz	DispLowVoltageNXT2
DispLowVoltageNXT1	
        xor.b	#a,&LCDM1
        jmp     DispLowVoltageRTN
DispLowVoltageNXT2
        bic.b   #a,&LCDM1
DispLowVoltageRTN
	ret
//*************************** Display Initialization  ****************************//
DispInit
	bic.b   #d,&LCDM1		;购量
	bic.b   #h,&LCDM2		;余量
	bic.b   #h,&LCDM3		;累计
	bic.b   #h,&LCDM9		;dot
	bic.b   #h,&LCDM6		;常数
	bic.b	#h,&LCDM10		;m3
	ret
//******************* Display the left water the user can use *****************//
DispLeft
	mov.b	#0,&DSPNO
	bic	#CARDOP
	bis.b   #h,&LCDM2		;余量
	clr	BX
	BIT     #LowSpeed
	JZ      DispLeftNXT1
	bic.b	#h,&LCDM10		;m3
	biS.b   #h,&LCDM9		;dot
	mov	&LcdLDisp,AX            ;040818 mov	&LcdL,AX
	JMP     DispLeftNXT2
DispLeftNXT1	
	mov	&Q_YLDisp,AX            ;040818 mov	&Q_YL,AX		;获得实际显示数值
	bis.b	#h,&LCDM10
	bis.b   #h,&LCDM9
DispLeftNXT2	
	ret
//*************************** Display how much the user buy  ****************************//
DispBuy
	mov.b	#2,&DSPNO
	mov	&Q_GL,AX
	bis.b	#d,&LCDM1		;购量
	bis.b	#h,&LCDM10		;m3
	clr	BX
        mov.b	#1,&DSPGAP
	ret
//*************************** Display how much the user use  ****************************//
DispSum        
	mov.b	#4,&DSPNO
	bis.b	#h,&LCDM3		;累计
	bis.b	#h,&LCDM10		;m3
	mov	&Q_LJ,AX
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Meter Number  ****************************//
DispMeterNum
	mov.b	#6,&DSPNO
	bic.b	#h,&LCDM6
	bic.b	#a+b,&LCDM1
	mov	#MeterNumH,DX	;LCD显示表号
	mov	#LcdDataBuf+1,CX
	mov	0(DX),AX
	call	#OneTwo
	swpb	AX
	call	#OneTwo
	mov.b	2(DX),AX
	call	#OneTwo
	mov	#LcdDataBuf,CX
	mov.b	#0ah,6(CX)		;7
	mov.b	#0ah,7(CX)		;8
	mov.b	#0ah,8(CX)		;9
	mov.b	#0ah,9(CX)		;10
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Date  ****************************//
DispDate
	mov.b	#5,&DSPNO
	bic.b	#h,&LCDM6
	mov.b	&MON,AX
	call	#BinDec
	mov	#LcdDataBuf+1,CX
	call	#OneTwo
	mov.b	#0bh,0(CX)
	
	mov.b	&DAY,AX
	call	#BinDec
	mov	#LcdDataBuf+4,CX
	call	#OneTwo
	
	mov	&YEAR,AX
	call	#BinDec
	mov	#LcdDataBuf+6,CX
	swpb	AX
	call	#OneTwo
	swpb	AX
	call	#OneTwo
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Time  ****************************//
DispTime
	mov.b	#0,&DSPNO
	bic.b	#h,&LCDM6

	mov.b	&HOUR,AX
	call	#BinDec
	mov	#LcdDataBuf+1,CX
	call	#OneTwo
	mov.b	#0bh,0(CX)
	
	mov.b	&MIN,AX
	call	#BinDec
	mov	#LcdDataBuf+4,CX
	call	#OneTwo
	mov.b	#0ah,0(CX)		;7
	mov.b	#0ah,1(CX)		;8
	mov.b	#0ah,2(CX)		;9
	mov.b	#0ah,3(CX)		;10
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Basic Data1  ****************************//
DispBasicData1
    	mov.b	#8,&DSPNO
	bis.b	#d,&LCDM1		;购量
	bis.b	#h,&LCDM2		;余量
	bic.b	#h,&LCDM5		;告警
	bis.b	#h,&LCDM10		;m3
	clr	BX
	mov	&Q_JB1,AX		;获得实际显示数值
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Basic Data2  ****************************//
DispBasicData2
	mov.b	#4,&DSPNO
	bis.b	#h,&LCDM2		;余量
	bis.b	#h,&LCDM3		;累计
	bic.b	#h,&LCDM5		;告警
	bis.b	#h,&LCDM10		;m3
	clr	BX
	mov	&Q_JB2,AX		;获得实际显示数值
        mov.b	#1,&DSPGAP
	ret
//*************************** Display Set Card  ****************************//
DispSetCard
        bic     #SetCardFG
	mov.b	#1,&DSPGAP
        mov.b	#7,&DSPNO		;显示日期
	ret
//*************************** Display Clear Card  ****************************//
DispClearCard
        bic     #ClearCardFG
        mov.b	#0,&DSPNO		;显示余量
	ret
//*************************** Display Test Card  ****************************//
DispTestCard
        bic     #TestCardFG
	mov.b	#000h,&LCDM1		;verb:0616-0302
	mov.b	#0fah,&LCDM2		;0
	mov.b	#0beh,&LCDM3		;6
	mov.b	#060h,&LCDM4		;1
	mov.b	#0beh,&LCDM5		;6
	mov.b	#004h,&LCDM6		;-
	mov.b	#0fah,&LCDM7		;0
	mov.b	#0f4h,&LCDM8		;3
	mov.b	#0fah,&LCDM9		;0
	mov.b	#0d6h,&LCDM10		;2
	mov.b	#0,&DSPNO			;开始显示
	mov.b	#1,&DSPGAP
	ret
//*************************** Display Check Card  ****************************//
DispCheckCard
        bic     #CheckCardFG
//sjh:040422	mov.b	#2,&DSPNO		;显示表号,表常数
	mov.b	#3,&DSPNO		;显示表号,表常数	sjh:040422
		ret
//*************************** Display User Card  ****************************//
DispUserCard
        bic     #UserCardFG
        mov.b	#1,&DSPNO		;显示购量
	ret
//*************************** Display Engineering Card  ****************************//
DispEngineeringCard
        bic     #EngineeringCardFG
        mov.b	#5,&DSPNO		;开始显示
	ret
//*************************** Display Card Operate  ****************************//
DispCardOperate       
	bic     #CardOpOKFG
	bit     #SetCardFG             
        jz      CardOperateNXT1	
        CALL    #DispSetCard
        jmp     CardOperateNXT6
CardOperateNXT1
	bit     #TestCardFG             
        jz      CardOperateNXT2	
        CALL    #DispTestCard
        jmp     CardOperateNXT6       
CardOperateNXT2
        bit     #CheckCardFG
        jz      CardOperateNXT3	
        CALL    #DispCheckCard
        jmp     CardOperateNXT6      
CardOperateNXT3
        bit     #ClearCardFG
        jz      CardOperateNXT4	
        CALL    #DispClearCard
        jmp     CardOperateNXT6       
CardOperateNXT4
        bit     #UserCardFG
        jz      CardOperateNXT5	
        CALL    #DispUserCard
        jmp     CardOperateNXT6            
CardOperateNXT5
        bit     #EngineeringCardFG
        jz      CardOperateRTN	
        CALL    #DispEngineeringCard
CardOperateNXT6
        bis     #DSPFG        
CardOperateRTN        
	ret
//*************************** Display Parameter  ****************************//
DispParameter	
ChgDsp1	
	cmp.b	#1,&DSPNO               ;1 --显示购量
	jne	ChgDsp2
	CALL    #DispBuy
	jmp	LCDOUTG
ChgDsp2	cmp.b	#2,&DSPNO		;2--显示累计
	jne	ChgDsp3
        CALL    #DispSum        
	jmp	LCDOUTG
ChgDsp3	cmp.b	#3,&DSPNO		;3--显示表号
	jne	ChgDsp4
        CALL    #DispMeterNum
//sjh:040422	jmp	LCDOUT
	jmp	LCDOUTNXT1			;sjh:040422
ChgDsp4 
	cmp.b	#4,&DSPNO	;显示时间:XX年XX月XX日
	jne	ChgDsp5
        CALL    #DispDate
//sjh:040422	jmp	LCDOUT			;显示数据送LCDM       
	jmp	LCDOUTNXT1	//sjh:040422
ChgDsp5
        cmp.b	#5,&DSPNO	;显示时间:XX时XX分
	jne	ChgDsp6
	CALL    #DispTime
//sjh:040422	jmp	LCDOUT			;显示数据送LCDM
	jmp	LCDOUTNXT1	//sjh:040422
ChgDsp6
	cmp.b	#7,&DSPNO		;显示基本量1
	jne	ChgDsp7
        CALL    #DispBasicData1
        jmp	LCDOUTG
ChgDsp7
	cmp.b	#8,&DSPNO		;显示基本量2
	jne	ChgDsp8
        CALL    #DispBasicData2
        jmp	LCDOUTG
ChgDsp8
        call    #CalYLDisp
        CALL    #DispLeft               ;0 or others --显示余量
        jmp	LCDOUTY
;-----------------------------------------------------        
;入口:AX,BX,CX为要显示的数据,其中BX只有一个位有效,CX为仪表常数计数值
LCDOUTY
	push	AX
	push	BX
	mov	#LcdDataBuf+6,CX
	BIT     #LowSpeed
	JZ      LCDOUTYNXT1
	mov	&OddDisp,AX	;040611
//040611 move them--->
/*	bit	#NFG
	jz	LCDOUTYNXT0
	mov	&Oddment,AX
	JMP     LCDOUTYNXT2
LCDOUTYNXT0
	mov	#10000,AX
	SUB	&Oddment,AX
*/
//<---040611 move them
	JMP     LCDOUTYNXT2	


LCDOUTYNXT1	
	mov	&LcdLDisp,AX    ;040818 mov	&LcdL,AX
LCDOUTYNXT2	
	call	#BinDec
	swpb	AX
	call	#OneTwo
	swpb	AX
	call	#OneTwo
	POP	BX
	POP	AX
	jmp	LCDSTR
LCDOUTG
	mov	#LcdDataBuf+6,CX
	mov.b	#0ah,0(CX)
	mov.b	#0ah,1(CX)
	mov.b	#0ah,2(CX)
	mov.b	#0ah,3(CX)
LCDSTR
	mov	#LcdDataBuf+2,CX
	call	#BinDec
	swpb	AX
	call	#OneTwo
	swpb	AX
	call	#OneTwo
	mov	#LcdDataBuf,CX
	mov.b	BX,1(CX)
	cmp.b	#0,&DSPNO
	
//040610	jne	LCDOUTNXT1
	jne	LCDOUTNXTC			;040610
	
	bit	#NFG
//040610	mov.b	#0Ah,1(CX)		;显示
	jz	LCDOUT
	mov.b	#0bh,1(CX)		;显示负号
LCDOUT 
        BIT     #LowSpeed
        JZ	LCDOUTNXTC
        MOV	#LcdDataBuf+9,DX
LCDOUTNXTA	     
        MOV.B	0(DX),1(DX)
        DEC	DX
        CMP	#LcdDataBuf+1,DX
        JNE	LCDOUTNXTA
        MOV.B	#00H,&LcdDataBuf+2
        MOV	#LcdDataBuf+9,DX
LCDOUTNXTB	     
        MOV.B	0(DX),1(DX)
        DEC	DX
        CMP	#LcdDataBuf+5,DX
        JNE	LCDOUTNXTB    
        MOV.B	#0AH,&LcdDataBuf+6
LCDOUTNXTC     

//040610--->
        MOV	#LcdDataBuf+1,DX      
        cmp.b	#0,&DSPNO
        jne	LCDOUTNXT0
	bit	#NFG
	jz	LCDOUTNXT0
        MOV	#LcdDataBuf+2,DX     
//<---040610

LCDOUTNXT0     
        CMP.B	#00H,0(DX)    
        JNE	LCDOUTNXT1
        MOV.B	#10,0(DX)
        INC  DX
        CMP	#LcdDataBuf+5,DX
        JLO	LCDOUTNXT0
        	
LCDOUTNXT1	
	mov	#LcdDataBuf+1,DX		;LCD数据传送RAM->LCD Memory
	mov	#LCDM2_,FX
	mov	#9,CX
LCDOUT2	mov.b	@DX+,AX
	mov.b	LCD_Tab(AX),AX
	and.b   #h,0(FX)
	bis.b	AX,0(FX)
	inc	FX
	dec	CX
	jnz	LCDOUT2
ENDD    mov.b   #LCDON+LCD4MUX+LCDP1,&LCDCTL
	ret
//*************************** Display Others  ****************************//
DispOthers
	bit     #TIMFG                          ;040818
	jz	DispOthersRnt                   ;040818
        bic	#TIMFG                          ;040818
//040818        CALL    #DispFault
        CALL    #DispValve
//040818	CALL    #DispStolen
        CALL    #DispLowVoltage
//040818	CALL    #DispAlarm
DispOthersRnt
        CALL    #DispFault                      ;040818
	CALL    #DispStolen                     ;040818
	CALL    #DispAlarm                      ;040818	
	bic.b   #h,&LCDM8			;040610	
	ret
//***************************************************************************//
CalYLDisp
        mov     &Q_YL,&Q_YLDisp         ;040818
        mov     &LcdL,&LcdLDisp         ;040818
        bit	#NFG
        jz	CountOddDisp1
        mov	&Oddment,&OddDisp
        jmp	Datadisp1
CountOddDisp1        
//040818 --->
        cmp     #00h,&LcdLDisp
        jnz     CountOddDisp2
        dec     &Q_YLDisp
        mov     #9999,&LcdLDisp
        jmp     CountOddDisp3
CountOddDisp2
        dec     &LcdLDisp        
CountOddDisp3
//<--- 040818
        mov	#10000,&OddDisp
        sub	&Oddment,&OddDisp
//<---040611
Datadisp1            
        ret
//*************************** LCD display Table  ****************************//
LCD_Tab	DB	a+b+c+d+e+f		;显示 "0"
	DB	b+c			;显示 "1"
	DB	a+b+d+e+g		;显示 "2"
	DB	a+b+c+d+g		;显示 "3"
	DB	b+c+f+g			;显示 "4"
	DB	a+c+d+f+g		;显示 "5"
	DB	a+c+d+e+f+g		;显示 "6"
	DB	a+b+c			;显示 "7"
	DB	a+b+c+d+e+f+g		;显示 "8"
	DB	a+b+c+d+f+g		;显示 "9"
	DB	0			;不显示--a
	DB	g			;显示"-"--b
	DB	a+e+f+g			;显示"F"--c
	even
	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -