📄 ylcd128e.asm
字号:
LCALL DATA_FILLi ;填充显示数字
JB OVERBIT,OVERI ;ad取样过载
SETB SPIKE
lcall scan
AJMP mainY
OVERI: CLR SPIKE ;电流过载显示
CLR OVERBIT
mov Dly_Time,#2
lcall Delayb
SETB SPIKE
AJMP mainY
;********************************************************
CCOMM:
push psw
push acc
MOV PSW,#08H
MOV A,#0ebH ;ebh
CLR TI
MOV SBUF,A
mov ram63,a
jnb ti,$
MOV A,YY_BACK0 ;y_h
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,YY_BACK1 ;y_m
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,YY_BACK2 ;y_l
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,i_back0 ;i_h
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,i_back1 ;i_m
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,i_back2 ;i_l
CLR TI
MOV SBUF,A
add a,ram63
mov ram63,a
jnb ti,$
MOV A,ram63 ;sum
CLR TI
MOV SBUF,A
jnb ti,$
clr ti
ccomend: POP ACC
POP PSW
ret
;************************************************************************************************************
add_iii: ;电流清零 正数---减法,负数加法
mov a,60h
jb acc.7,sub_iii
MOV R0,#ram32 ;当前值低位
MOV A,@R0
CLR C
subb A,62H
MOV @R0,A
DEC R0
MOV A,@R0
subb A,61h ;N= NAMBER X 100H
MOV @R0,A
DEC R0
MOV A,@R0
subb A,60h
MOV @R0,A
RET
sub_iii: MOV R0,#ram32 ;当前值低位 ;负数补偿
MOV A,@R0
CLR C
ADD A,62h
MOV @R0,A
DEC R0
MOV A,@R0
ADDC A,61h ;N= NAMBER X 100H
MOV @R0,A
DEC R0
MOV A,@R0
ADDC A,#0
MOV @R0,A
RET
;****************************************************************************************
datmov: ;r0--r1; bcd---deci to 51h--55h
mov r1,#ram50+1
mov r2,#02
datmov1: mov a,@r0
anl a,#0fh
mov @r1,a
inc r0
inc r1
datmov2: mov a,@r0
anl a,#0f0h
swap a
mov @r1,a
inc r1
mov a,@r0
anl a,#0fh
mov @r1,a
inc r1
inc r0
djnz r2,datmov2
ret
;****************************************************************
;*******************************************************************************
copyad: ;保存显示结果二进制
push 00h
push 01h
push 02h
push acc
mov r0,#adhexh ;34-36H
mov r1,#SAVE01 ;37-39H
mov r2,#03h
copya: mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r2,copya
pop acc
pop 02h
pop 01h
pop 00h
ret
;*********************************************************************
;*********************************************************************
SCAN: clr key01 ;key01-02 this drive;key0-key4 this function
setb key02
LCALL DEL10
MOV A,P3 ;p3.3--p3.7
ORL A,#07H
CPL A
JZ SCANd1
JB KEY_DELAY,SCAN01 ;0-4号键压下转
LCALL DEL10
SETB KEY_DELAY
SJMP SCAN
scand1: setb key01 ;
clr key02
LCALL DEL10
MOV A,P3 ;p3.3--p3.7
ORL A,#07H
CPL A
JZ SCANd2
JB KEY_DELAY,SCAN02 ;5-7 号键压下转
LCALL DEL10
SETB KEY_DELAY
SJMP scand1
scand2: clr KEY_DELAY
ret
SCAN02: JNB SETHAO,SCAN02A
LCALL SPIKEA
RET
SCAN02A: ajmp scan02b
SCAN01: clr KEY_DELAY
JNB ACC.3,SCAN1
LCALL SPIKEA
ljmp disp0 ; ;显示清零/显示复原
SCAN1: JNB ACC.5,SCAN2
LCALL SPIKEA
scab1b: lcall del140ms
lcall del140ms
clr key01
setb key02
MOV A,P3
ORL A,#30h
CPL A
cjne a,#30h,scan1c
ljmp cl_last ;"清除"+"保存"--清保存数据的最后一组
scan1c: LJMP SAVROM ;“保存” 显示数据到ROM;
SCAN2: JNB ACC.4,SCAN3
LCALL DEL10
JB P3.4,SCAEND
LCALL SPIKEA
lJMP CLEAER ; 清除多项
SCAEND: RET
SCAN3: JNB ACC.6,SCAN4
LCALL SPIKEA
SETB BITHAO
LJMP BIAOHAO ;输入表号(5位十进制数)
SCAN4: JNB ACC.7,SCAEND
scan5: LCALL DEL10
JNB ACC.7,SCAEND
LCALL SPIKEA
LJMP calibA ;计量校准
DISP_CAL0: LCALL SPIKEA
lcall waitkey
LJMP DISP_CAL
SCAN02b: clr KEY_DELAY
jb SETHAO,SCAN22 ;进入计量画面不显示电池
JNB ACC.3,SCAN21 ;L -MOV
LCALL DEL140MS
LCALL DEL140MS
MOV A,P3
ORL A,#0E7h ;R- MOV ;L -MOV
CPL A
cjne a,#18h,SCAEND
TESTBB: LCALL SPIKEA
cpl disp_batery ;电池测量显示/关闭 ------双键操作
clr WAIT_DY
mov x,#00 ;
mov y,#00
lcall clear_1h ;清除1行程序(x,y外值)
ret
SCAN21: JNB ACC.4,SCAN22 ;R- MOV
LCALL DEL140MS
LCALL DEL140MS
MOV A,P3
ORL A,#0E7h ;R- MOV ;L -MOV
CPL A
cjne a,#18h,SCAEND
sjmp TESTBB
SCAN22: JNB ACC.5,SCAN23
LCALL DEL140MS ;+
LCALL DEL140MS
MOV A,P3
ORL A,#9fh
CPL A
cjne a,#60h,SCAN2D ;+ -
SJMP SCAN24
SCAN23: JNB ACC.6,SCAN2D
LCALL DEL140MS ;-
LCALL DEL140MS
MOV A,P3
ORL A,#9fh
CPL A
cjne a,#60h,SCAN2D ;+ -
SJMP SCAN24
SCAN2D: RET
;***********************************
;ADC取样保存值的提取
SCAN24: LCALL SPIKEA ;进行电流清零
MOV A,5dh ;判断是否零位,( 大于32个字)非零位不清零
JB ACC.7,zero_IIB ;负数转移
zero_IId: mov a,5eh
clr c
cjne a,#64h,zero_IIc ;
zero_IIc: jnc SCAN2D ;大于100个字无效
MOV A,5dH
ANL A,#80H
MOV 60H,A ;保存零位值 有极性
MOV 61H,5eH
MOV 62H,5fH
MOV DPH,#07H ;写电流零值
MOV DPL,#0F4H
mov r0,#60H
mov r3,#3
LCALL WRIT_C
LCALL WAITKEY ;等待放键
RET
zero_IIB: mov a,5fh
cpl a
mov 5fh,a
mov a,5eh
cpl a
mov 5eh,a
sjmp zero_IId
;************************************************************************************************************
swichon: LCALL SPIKEA
lcall waitkey
LCALL DEL10
inc calb
mov a,calb
cjne a,#01,cal_swich1
setb set_calib ;计量设置开关
sjmp dis_have
cal_swich1: cjne a,#02,cal_swich2
setb set_calib ;计量设置开关
ajmp dis_lock
cal_swich2: mov calb,#0
clr set_calib ;计量设置开关
cal_nohave: Lcall FullCLEAR ;显示无自动补偿功能返回
mov map_no,#11 ;
lcall dis_map
mov Dly_Time,#15
call Delayb
mov calb,#00
MOV DPH,#07
MOV DPL,#0f2H
mov r0,#calb
mov r3,#1
lcall WRIT_C ;连续写R3字节
ajmp goout
dis_have: ;显示有自动补偿功能返回
Lcall FullCLEAR
mov map_no,#12 ;
lcall dis_map
mov Dly_Time,#15 ;3s
call Delayb
mov calb,#01
MOV DPH,#07
MOV DPL,#0f2H
mov r0,#calb
mov r3,#1
lcall WRIT_C ;连续写R3字节
ajmp goout
dis_lock: ;显示计量锁定功能返回
Lcall FullCLEAR
mov map_no,#13 ;
lcall dis_map
mov Dly_Time,#15 ;3s
lcall Delayb
mov calb,#02
MOV DPH,#07
MOV DPL,#0f2H
mov r0,#calb
mov r3,#1
lcall WRIT_C ;连续写R3字节
ajmp goout
;********************************************************************************
DISP_CAL: LCALL SPIKEA
mov A,calb ;校准和"+" ---显示计量状态
CJNE A,#01,DISP_CAL11
AJMP dis_have
DISP_CAL11: CJNE A,#02,DISP_CAL22
AJMP dis_lock
DISP_CAL22: MOV CALB,#00
AJMP cal_swich2
;************************************************************************
calibA: Lcall FullCLEAR
mov map_no,#06 ;校准选择:
lcall dis_map
calibaa: clr key02
setb key01
LCALL DEL10
MOV A,P3
ORL A,#87H
CPL A
jz calibaa
jb acc.6,calibab ;"-" 计量校准
jb acc.4,DISP_CAL ;">" 显示设置
jb acc.5,swichon0 ;"+" 修改设置
sjmp calibaa
swichon0: ljmp swichon
CALIBDD: LJMP cal_swich1 ;显示补偿 状态后返回
calibab: LCALL SPIKEA
mov a,CALB ;校准有效吗?
CJNE A,#01H,CALIBDD
Lcall FullCLEAR
mov map_no,#05 ;请输入标准压力
lcall dis_map
clr pol
lcall data_filly
lcall fill_danw ;填压力单位
lcall waitkey
;******************闪烁显示输入数据 51h--55h ******************************************
MOV y,#03 ;起始坐标
MOV x,#30h
mov r0,#51h ;data addrass
mov r3,#00 ;闪烁记数
dis_calib: lcall flansh_sing ;单字写 地址不变
lcall calib_key ;扫描键盘 +-
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -