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

📄 屏幕显示(51).asm

📁 这是一个有关于单片机屏幕显示的的源代码。真的不很不错。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -