📄 wdt4mavprompt.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 + -