📄 shf1.asm
字号:
movx a,@dptr
swap a
orl a,b
MOV DPTR,#4002h;2002H
Movx @dptr,a ;设分
MOV DPTR,#4025h;2025H ;读时
movx a,@dptr
MOV B,A
MOV DPTR,#4024h;2024H
movx a,@dptr
swap a
orl a,b
MOV DPTR,#4004h;2004H
Movx @dptr,a ;设时
MOV DPTR,#4022h;2022H ;读日
Movx a,@dptr
swap a
MOV B,A
INC DPTR
movx a,@dptr
orl a,b
MOV DPTR,#4007h;2007H
movx @dptr,a ;设日
MOV DPTR,#4020h;2020H ;读月
Movx a,@dptr
swap a
MOV B,A
INC DPTR
movx a,@dptr
orl a,b
MOV DPTR,#4008h;2008H
movx @dptr,a ;设月
MOV DPTR,#401eh;201eH
movx a,@dptr
swap a
MOV B,A
INC DPTR
movx a,@dptr
orl a,b
MOV DPTR,#4009h;2009H
Movx @dptr,a
MOV DPTR,#400ah;200AH
MOV A,#2DH ;选时基,32.768kHZ
Movx @dptr,a
MOV DPTR,#400ch;200CH
Movx a,@dptr
MOV DPTR,#400dh;200DH
Movx a,@dptr
MOV DPTR,#400bh;200BH
MOV A,#00110010B ;设中断允许位,BCD,24小时制
Movx @dptr,a ;SET=0,时钟开始运行
RET
;**********************************
CSSET: MOV XIANH1,#0EH ;设置之前显示原来的值
MOV XIANH2,#0AH
MOV XIANH3,#0AH
MOV XIANH4,#01H
MOV DPTR,#4010h;2010H
movx a,@dptr
MOV XIANH5,A
INC DPTR
movx a,@dptr
MOV XIANH6,A
INC DPTR
movx a,@dptr
MOV XIANH7,A
INC DPTR
movx a,@dptr
MOV XIANH8,A
MOV USE1,#XIANH5 ;当前光标位置
MOV R0,#XIANH5
MOV A,@R0
MOV USE2,A ;当前光标对应的值
MOV R0,#XIANH4
MOV A,@R0
MOV USE3,A ;当前参数的序号
csset0: lcall display ; 默认显示第一个参数
lcall delay
lcall rdkey
cjne a,#10h,csset1 ;增加
lcall zengj
ljmp csset0
csset1: cjne a,#08h,csset2 ;减小
LCALL JIANX
ljmp csset0
csset2: cjne a,#20h,csset3 ;左移
lcall zuoy
ljmp csset0
csset3: cjne a,#04h,csset4 ;右移
lcall youy
ljmp csset0
csset4: cjne a,#02h,csset5 ;确定
lcall quer
ljmp csset0
csset5: cjne a,#40h,csset0 ;设置后退出
RET
;*********************************
ZENGJ: MOV A,USE2
INC ACC
clr c
cjne a,#09h,zengj0
sjmp zengj1
ZENGJ0: JC ZENGJ1
MOV A,#00H
ZENGJ1: MOV USE2,A
MOV R0,USE1
MOV @R0,A
RET
;*********************************
JIANX: MOV A,USE2
DEC ACC
clr c
CJNE A,#0FFH,JIANX1
MOV A,#09H
SJMP JIANX1
JIANX1: MOV USE2,A
MOV R0,USE1
MOV @R0,A
ret
;*********************************
ZUOY: MOV A,USE1
cjne a,#xianh5,zuoy0
sjmp zuoy1
ZUOY0: DEC A
ZUOY1: MOV USE1,A
RET
;*********************************
YOUY: MOV A,USE1
cjne a,#xianh8,youy0
sjmp youy1
YOUY0: INC A
YOUY1: MOV USE1,A
RET
;*********************************
QUER: MOV A,USE3 ;按下确认键显示下一个参数提示符
MOV B,#4
MUL AB
ADD A,#0CH
MOV DPL,A
MOV DPH,#40h;20H
MOV A,XIANH5
movx @dptr,a
INC DPTR
MOV A,XIANH6
Movx @dptr,a
INC DPTR
MOV A,XIANH7
movx @dptr,a
INC DPTR
MOV A,XIANH8
movx @dptr,a
MOV A,USE3
clr c
subb a,#04h
JC QUER0
SETB GCLK
MOV A,USE3
cjne a,#06h,quer0
MOV USE3,#01H
sjmp quer1
QUER0: INC USE3
QUER1: MOV A,USE3
MOV XIANH4,A
MOV B,#4
MUL AB
ADD A,#0CH
MOV DPL,A
MOV DPH,#40h;20H
movx a,@dptr
MOV XIANH5,A
INC DPTR
movx a,@dptr
MOV XIANH6,A
INC DPTR
Movx a,@dptr
MOV XIANH7,A
INC DPTR
Movx a,@dptr
MOV XIANH8,A
RET
;*********************************
SJCL1: mov r0,#30h ;找出第一路最大最小值
mov a,@r0
mov r2,a
inc r0
mov a,@r0
mov r3,a
clr c
mov a,r3
subb a,max11
mov a,r2
subb a,max10
jc bjmin1
mov max10,r2
mov max11,r3
sjmp sjcl111
bjmin1: clr c
mov a,min11
subb a,r3
mov a,min10
subb a,r2
jc sjcl111
mov min10,r2
mov min11,r3
sjcl111: ret
;*******************************
SJCL2: mov r0,#32h ;找出第二路最大最小值
mov a,@r0
mov r2,a
inc r0
mov a,@r0
mov r3,a
clr c
mov a,max21
mov a,r2
subb a,max20
jc bjmin2
mov max20,r2
mov max21,r3
sjmp sjcl222
bjmin2: clr c
mov a,min21
subb a,r3
mov a,min20
subb a,r2
jc sjcl222
mov min20,r2
mov min21,r3
sjcl222: ret
;*********************************
communi: reti
;*********************************
SHUAXIN: PUSH ACC
mov dptr,#400ch;200ch
movx a,@dptr
JNB ACC.4,SHX
SETB BIAOZ
SHX: POP ACC
reti
;*********************************
ZDCY: MOV TH0,#0ffH ;t0 1ms,置采样标志为1,采样结束
MOV TL0,#0feH
setb caiy
reti
;**********************************
WXH: MOV R0,#ZUIDA1 ;最大最小值送显缓
MOV R1,#XIANH1
lcall hexbcd ;最大值
lcall hexbcd ;最小值
orl xianh1,#80h
orl xianh5,#80h
RET
;**********************************
CSYD: MOV R0,#10H
MOV R1,#10H
MOV R7,#24
CSYD1: MOV DPH,#40h;20H
MOV DPL,R1
movx a,@dptr
MOV DPH,#80h;40H
MOV DPL,R0
movx @dptr,a
INC R0
INC R1
djnz r7,csyd1
RET
;***********************************
AD_MSD: MOV R0,#22h ;最大值数据存放始地址
lcall admsd ;将A/D数据转化为密实度
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
LCALL CHF
MOV A,R4
MOV ZUIDA1,A
MOV A,R5
MOV ZUIDA2,A
mov r0,#24h
lcall admsd
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
LCALL CHF
MOV A,R4
MOV ZUIX1,A
MOV A,R5
MOV ZUIX2,A
RET
;**********************************
chf: MOV DPTR,#8000H ;乘修正值S,得最大最小值
MOVX A,@DPTR ;结果在(r4r5)中
mov 12h,A
MOV DPTR,#8001H
MOVX A,@DPTR
mov 11h,A
mov a,r7
mov b,11h
mul ab
mov r5,a
mov r4,b
mov a,r6
mov b,11h
mul ab
add a,r4
mov r4,a
mov a,b
addc a,#0
mov r3,a
mov a,r7
mov b,12h
mul ab
add a,r4
mov r4,a
mov a,r3
addc a,b
mov r3,a
clr a
addc a,#0
mov r2,a
mov a,r6
mov b,12h
mul ab
add a,r3
mov r3,a
mov a,b
addc a,r2
mov r2,a
chf0: mov r6,#03h ;(r2r3r4r5)/(03e8h=1000)->(r4r5)%(r2r3)
mov r7,#0e8h
clr c
mov a,r3
subb a,r7
mov a,r2
subb a,r6
jnc chf1
mov b,#16
chf2: clr c
mov a,r5
rlc a
mov r5,a
mov a,r4
rlc a
mov r4,a
mov a,r3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -