📄 屏幕显示(51).asm
字号:
MOV ZC,C
JC MOS0
CLRZO:
MOV R0,#FZO
JB PE,MOS1
MOV R0,#FZO2
MOS1:
MOV @R0,#40H
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
MOS0:
RET
;----------定值设定显存全部清零----------
CDSB:
MOV R2,#5
MOV R1,#STB
CLR A
CDBLP:
MOV @R0,A
MOVX @R1,A
INC R0
INC R1
DJNZ R2,CDBLP
MOV A,R0
CLR C
SUBB A,#5
MOV R0,A
MOV CSR,#0
SETB DR
RET
;=========数字键处理程序=========
;入口: C=PA1(PA2),R0=DSB1(DSB2),R1=UNTB1(UNTB2),PE0,PA0
;出口: PE1(PE2),MC1(MC2),
NUP10:
JNC NUP100
JMP NUP13
NUP100:
CJNE R2,#0,NUP11 ;数字键零特殊处理
JMP NUP9
NUP11:
JB PA0,NP011
MOV C,K7B ;两页不可同时测量电信号或同时测量压力信号
ORL C,F0
MOV ACC.0,C
MOV C,PE0
MOV B.0,C
XRL A,B
JNB ACC.0,NP011
JMP NUP9
NP011:
CLR DZC
CALL CLRMD
CALL CLRZO
SETB RF
SETB KV
CLR BEY
MOV A,R3
MOV @R1,A
MOV B,A ;保存小数点位置
CLR A
CALL GPSD
MOV B,A
CJNE R3,#2,NP012
MOV B,#3
NP012:
MOV R0,#DPN
MOVX A,@R0
MOV R0,A
MOV A,B
MOVX @R0,A
JNB K7B,NUP12 ;数字键8选择3种压力UNIT
CLR PE
CLR K7B
MOV R0,#K7V
MOVX A,@R0
ADD A,@R1
MOV @R1,A
MOV R0,#K7V
MOVX A,@R0
INC A
MOVX @R0,A
CJNE A,#3,$+3
JC NUP9J
CLR A
MOVX @R0,A
NUP9J:
JMP NUP9
NUP12:
SETB PE
JNB F0,NUP121 ;数字键4-7各选择2种压力UNIT
CLR PE
CPL KNB
JB KNB,NUP9J
INC @R1
JMP NUP9
NUP121:
MOV A,#10H ;新的测量电信号命令
ADD A,@R1
MOV CMN,A
JMP NUP9
NUP13:
JB VC,NUP18
JB NUM,NUP15 ;非UNIT状态,转键入数字
CJNE R2,#0,NUP131 ;数字键零无UNIT
JMP NUP9
NUP131:
JB K7B,NUP14
JB F0,NUP14
SETB RF
SETB KV ;按键操作有效
CLR PNC0 ;符号默认正
MOV A,R3
MOV @R1,A
MOV B,A ;保存小数点位置
CLR A
CALL GPSD
MOV B,A
MOV R0,#DPN
MOVX A,@R0
MOV R0,A
MOV A,B
MOVX @R0,A
NUP14:
JMP NUP9
NUP15:
SETB DR
SETB KV ;按键操作有效
MOV A,CSR
JNZ NUP16
INC CSR
NUP16:
MOV A,CSR
DEC A
ADD A,R0
MOV R0,A
MOV A,R2
MOV @R0,A
INC CSR
MOV A,CSR
CJNE A,#6,$+3
JC NUP17
MOV CSR,#0
NUP17:
ANL STM,#0FCH
MOV RSDT,#3
CLR RN
JMP NUP9
NUP18:
CJNE R2,#4,$+3
JNC NUP9
CJNE R2,#0,NUP19
JNB LP,NUP9
CPL HS
SETB KV
SETB DR
JMP NUP9
NUP19:
SETB KV ;按键操作有效
CLR PNC0 ;符号默认正
MOV CSN,#80H ;退出本次输出命令
CALL CLRMD
MOV R0,#PERC
CLR A
MOVX @R0,A
INC R0
MOVX @R0,A
MOV A,R3
MOV @R1,A
MOV US,A
MOV B,A ;保存小数点位置
CLR A
CALL GPSD
MOV B,A
MOV R0,#DPN
MOVX A,@R0
MOV R0,A
MOV A,B
MOVX @R0,A
;将新UNIT的极值送入显存
MOV A,#10
MOV B,@R1
CALL GPSD
MOV KBV,A ;极小值
MOV A,#9
MOV B,@R1
CALL GPSD
MOV KEV,A ;极大值
CLR FO
SETB UNT
SETB RF
NUP9:
CLR K7B
RET
;----------数字/UNIT键处理子程序-------------
KNUP:
JNB ITP,NUP1
JNB ITM,NUP09
MOV R1,#TMC
MOVX A,@R1
JZ NUP09
CJNE A,#6,NUP01
JMP NUP09
NUP01:
CJNE A,#7,NUP02
JMP NUP09
NUP02:
DEC A
JC NUP03
DEC A
DEC A
NUP03:
MOV R0,#TIRA
JNB MIO,NUP04
MOV R0,#TORA
NUP04:
ADD A,R0
MOV R0,A
MOV A,R2
MOVX @R0,A
SETB DR
SETB KV
MOV R1,#TMC
MOVX A,@R1
INC A
MOVX @R1,A
CJNE A,#13,$+3
JC NUP09
CLR A
MOVX @R1,A
NUP09:
JMP NUP0
NUP1:
JB TPD,NUP0 ;在模拟变送页按键无效
MOV A,PNM
CJNE A,#0,NUP2 ;P1页
MOV C,PA2
MOV PA0,C
MOV C,PE2
MOV PE0,C
MOV C,PE1
MOV PE,C
MOV C,ZC1
MOV DZC,C
MOV C,PNC1
MOV PNC0,C
MOV C,PA1
MOV A,#DPN1
MOV R0,#DPN
MOVX @R0,A
MOV R0,#DSB1
MOV R1,#UNTB1
CALL NUP10
MOV C,PNC0
MOV PNC1,C
MOV C,PE
MOV PE1,C
MOV C,DZC
MOV ZC1,C
JMP NUP0
NUP2:
CJNE A,#1,NUP3 ;P2页
MOV C,PA1
MOV PA0,C
MOV C,PE1
MOV PE0,C
MOV C,PE2
MOV PE,C
MOV C,ZC2
MOV DZC,C
MOV C,PNC2
MOV PNC0,C
MOV C,PA2
MOV A,#DPN2
MOV R0,#DPN
MOVX @R0,A
MOV R0,#DSB2
MOV R1,#UNTB2
CALL NUP10
MOV C,PNC0
MOV PNC2,C
MOV C,PE
MOV PE2,C
MOV C,DZC
MOV ZC2,C
JMP NUP0
NUP3:
NUP0:
RET
;-------清测量显存-----
CLRMD:
MOV R4,#5
CMLP:
MOV @R0,#0
INC R0
DJNZ R4,CMLP
RET
;-------翻页键P-----
;翻页,可增加恢复设定值的延时
KEYP:
JNB ITP,KEYP2
CPL ITM ;变送参数设定修改中
CLR MIO
MOV R1,#TMC
CLR A
MOVX @R1,A
SETB KV
SETB DR
SJMP KPE
KEYP2:
JB TPD,KPE ;在变送页按键无效
JB RN,KP21
MOV A,RSDT
JZ KP22
SETB RN
KP21:
MOV RSDT,#0
KP22:
INC PNM
ANL PNM,#1
SETB RF
SETB KV ;按键操作有效
KPE:
RET
;-----------右移键-----------
;在定值输出页(PNM=2),使光标在设定输出值的各位数字间移动
;在步进输出页(PNM=3),使光标在步进值的4个参数间移动
KEYR:
JNB ITP,KEYR1
JNB ITM,KRE ;非变送参数修改中,直接退出
SETB KV
SETB DR
MOV R1,#TMC
MOVX A,@R1
INC A
MOVX @R1,A
SETB DR
CJNE A,#13,$+3
JC KRE
CLR A
MOVX @R1,A
JMP KRE
KEYR1:
MOV A,PNM
CJNE A,#0,KEYR2
JNB PA1,KRE
MOV A,UNTB1
JMP KR20
KEYR2:
CJNE A,#1,KEYR3
JNB PA2,KRE
MOV A,UNTB2
KR20:
JB VC,KR22
JNB NUM,KRE ;非数字状态,按键无效
ANL STM,#0FCH
MOV RSDT,#3
SETB DR
CLR RN
SETB KV ;按键操作有效
INC CSR
MOV A,CSR
CJNE A,#6,$+3
JC KRE
MOV CSR,#0
JMP KRE
KR22:
INC CIT
ANL CIT,#3
SETB DR
SETB KV ;按键操作有效
JMP KRE
KEYR3:
KRE:
RET
KU00:
JB VC,KU03
JNB NUM,KUE
SETB KV ;按键操作有效
ANL STM,#0FCH
MOV RSDT,#3
CLR RN
MOV A,CSR
JNZ KU01
CPL PO
MOV A,B
CJNE A,#15,KUE
CLR PO ;频率设定极性为正
JMP KUE
KU01:
SETB DR
SETB KV
MOV A,CSR
DEC A
ADD A,R0
MOV R0,A
INC @R0
MOV A,@R0
CJNE A,#10,$+3
JC KUE
MOV @R0,#0
JMP KUE
KU03:
SETB KV ;按键操作有效
MOV US,B
MOV A,CIT
JNZ KU04
MOV R0,#KBV ;修改步进头
CALL INSV
MOV R0,#KBV ;转换为浮点数保存
MOV R1,#FSB
CALL LBLAT
JMP KUE
KU04:
CJNE A,#1,KU05 ;取反台阶极性
CPL SB
SETB DR
JNB LP,KUE
MOV R0,#FCS
CALL SAOJ ;判断步进是否结束
JMP KUE
KU05:
CJNE A,#2,KU06
MOV R0,#KEV ;修改步进尾
CALL INSV
MOV R0,#KEV
MOV R1,#FSE
CALL LBLAT
JMP KUE
KU06:
CJNE A,#3,KUE
SETB DR
INC LAD
ANL LAD,#3
MOV A,LAD
JNZ KUE
MOV LAD,#1
KUE:
RET
KU10:
SETB KV
MOV R1,#TMC
MOVX A,@R1
JNZ KU101
CPL B.0
JMP KU109
KU101:
CJNE A,#6,KU102
CPL B.2
JMP KU109
KU102:
CJNE A,#7,KU103
CPL B.1
JMP KU109
KU103:
DEC A
JC KU104
DEC A
DEC A
KU104:
ADD A,R0
MOV R0,A
MOVX A,@R0
INC A
MOVX @R0,A
CJNE A,#10,$+3
JC KU109
CLR A
MOVX @R0,A
KU109:
RET
;-----------上行键----------
;在定值输出页,设定输出值的数字状态下,在当前位键入数字0或取反数符后,光标自动右移1位
;在步进输出页,修改当前项: 切换台阶比率,取反步进方向,修改步进头和尾
KEYUP:
JNB ITP,KEYU1
JNB ITM,KEYU0
MOV R0,#TIRA
MOV C,IPA
MOV B.0,C
MOV C,IPB
MOV B.1,C
MOV C,DIW
MOV B.2,C
JNB MIO,KU11
MOV R0,#TORA
MOV C,OPA
MOV B.0,C
MOV C,OPB
MOV B.1,C
MOV C,DOW
MOV B.2,C
KU11:
CALL KU10
JB MIO,KU12
MOV C,B.0
MOV IPA,C
MOV C,B.1
MOV IPB,C
MOV C,B.2
MOV DIW,C
JMP KEYU0
KU12:
MOV C,B.0
MOV OPA,C
MOV C,B.1
MOV OPB,C
MOV C,B.2
MOV DOW,C
JMP KEYU0
KEYU1:
MOV A,PNM
CJNE A,#0,KEYU2
JNB PA1,KEYU0
MOV C,PNC1
MOV PO,C
MOV B,UNTB1
MOV R0,#DSB1
CALL KU00
MOV C,PO
MOV PNC1,C
JMP KEYU0
KEYU2:
CJNE A,#1,KEYU3
JNB PA2,KEYU0
MOV C,PNC2
MOV PO,C
MOV B,UNTB2
MOV R0,#DSB2
CALL KU00
MOV C,PO
MOV PNC2,C
KEYU3:
KEYU0:
RET
;-----------校对-暂停/继续键--------------
KEYC:
JNB ITP,KEYC1 ;退出变送参数设定
CLR ITP
SETB RF
SETB KV
JMP KEYC9
KEYC1:
MOV A,PNM
JNB TPD,KEYC2 ;进入变送参数设定
MOV C,PA1
ORL C,PA2
JNC KC10
SETB ITP
SETB RF
SETB KV
KC10:
JMP KEYC9
KEYC2:
CJNE A,#1,KEYC3 ;P2页
MOV C,ZC2
MOV DZC,C
MOV C,PE2
MOV PE,C
MOV C,PNC2
MOV PNC0,C
MOV B,#DSB2 ;P2页为输出?
MOV A,UNTB2
MOV C,PA2
CALL KC30
MOV C,DZC
MOV ZC2,C
MOV C,PNC0
MOV PNC2,C
JMP KEYC9
KEYC3:
CJNE A,#0,KEYC4 ;P1页
MOV C,ZC1
MOV DZC,C
MOV C,PE1
MOV PE,C
MOV C,PNC1
MOV PNC0,C
MOV B,#DSB1 ;P1页为输出?
MOV A,UNTB1
MOV C,PA1
CALL KC30
MOV C,DZC
MOV ZC1,C
MOV C,PNC0
MOV PNC1,C
JMP KEYC9
KC30:
MOV R1,#UNTB ;保存UNIT和显存地址
MOVX @R1,A
MOV R1,#DSBA
MOV A,B
MOVX @R1,A
JC KC31
CALL MOSP ;测量零点校准处理
SETB KV
JMP KEYC9
KC31:
JNB UNT,KC32 ;输出UNIT状态切换定值/步进
CPL VC
SETB KV
SETB RF
JMP KEYC9
KC32:
JB VC,KC33
JNB FO,KEYC9
CPL OL ;定值输出暂停(LULL)
SETB DR
SETB KV
JMP KEYC9
KC33:
JNB LP,KEYC9 ;未启动步进或步进已结束,按C键无效
JB SAO,KEYC9
SETB KV
SETB HS
SETB SA
CLR SAS
CLR CP
CALL CNSH ;计算新的台阶值
JMP KEYC9
KEYC4:
KEYC9:
RET
;-----------数字/UNT 1/MA键--------
;UNIT状态选定UNIT为MA;数字状态输入数字1
KEY1:
MOV R2,#1 ;数字
MOV R3,#2 ;UNIT
CLR F0
CALL KNUP ;数字键处理子程序
RET
;-----------2/V 键-------------
KEY2:
MOV R2,#2
MOV R3,#1
CLR F0
CALL KNUP
RET
;-----------3/MA 键-------------
KEY3:
MOV R2,#3
MOV R3,#3
CLR F0
CALL KNUP
RET
;-----------4/K 键-------------
;数字键选择输出热电偶类型K,E,J,T
KEY4:
MOV R2,#4
MOV R3,#4
SETB F0
MOV C,K4B
MOV KNB,C
CALL KNUP
MOV C,KNB
MOV K4B,C
RET
;-----------5/S 键-------------
KEY5:
MOV R2,#5
MOV R3,#6
SETB F0
MOV C,K5B
MOV KNB,C
CALL KNUP
MOV C,KNB
MOV K5B,C
RET
;-----------6/OHM 键-------------
KEY6:
MOV R2,#6
MOV R3,#8
SETB F0
MOV C,K6B
MOV KNB,C
CALL KNUP
MOV C,KNB
MOV K6B,C
RET
;-----------7/PT100 键-------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -