📄 shf1.asm
字号:
rlc a
mov r3,a
xch a,r2
rlc a
xch a,r2
mov f0,c
clr c
subb a,r7
mov r1,a
mov a,r2
subb a,r6
jb f0,chf3
jc chf4
chf3: mov r2,a
mov a,r1
mov r3,a
inc r5
chf4: djnz b,chf2
sjmp chf5
chf1: mov r4,#05h
mov r5,#0dch
chf5: ret
;*********************************
ADMSD: MOV 12H,#13H
MOV 11H,#88H ;1388h=5000d 满度
MOV A,@R0 ;结果在(r4r5)中
MOV R6,A ;(r6r7)*(1388h=5000)=(r2r3r4r5)
INC R0
MOV A,@R0
MOV R7,A
INC R0
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
ADLL0: MOV R6,#0FH ;(r2r3r4r5)/(0fffh)->(r4r5)%(r2r3)
MOV R7,#0FFH
clr c
MOV A,R3
subb a,r7
MOV A,R2
subb a,r6
JNC ADLL1
MOV B,#16
adll2: clr c
MOV A,R5
rlc a
MOV R5,A
MOV A,R4
rlc a
MOV R4,A
MOV A,R3
rlc a
MOV R3,A
xch a,r2
rlc a
xch a,r2
MOV F0,C
clr c
subb a,r7
MOV R1,A
MOV A,R2
subb a,r6
JB F0,ADLL3
JC ADLL4
ADLL3: MOV R2,A
MOV A,R1
MOV R3,A
INC R5
adll4: djnz b,adll2
sjmp adll5
ADLL1: MOV R4,#13H
MOV R5,#88H
ADLL5: RET
;**********************************
CXPD: MOV R0,#ZUIDA1 ;超高限,超低限报警判断
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A ;r2,r3最大值
MOV DPTR,#8002h;4002H
movx a,@dptr
MOV R4,A
INC DPTR
movx a,@dptr
MOV R5,A ;r4,r5高限值
MOV A,R3 ;最大值减去高限值
clr c
subb a,r5
MOV R0,A
MOV A,R2
subb a,r4
MOV R1,A
JC CXPD0 ;有借位,则无超高限,转判超低限
SETB CGX
SETB FMQ
Sjmp cxpd1
cxpd0: clr cgx
clr fmq
CXPD1: MOV R0,#ZUIX1
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A ;r2,r3最小值
MOV DPTR,#8004h;4004H
movx a,@dptr
MOV R4,A
INC DPTR
movx a,@dptr
MOV R5,A ;r4,r5低限值
MOV A,R3 ;最小值减去低限值
clr c
subb a,r5
MOV R0,A
MOV A,R2
subb a,r4
MOV R1,A
JNC CXPD2
SETB CDX
SETB FMQ
sjmp cxpd3
cxpd2: clr cdx
clr fmq
CXPD3: RET
;**********************************
BCD_HEX: MOV R0,#10H ;四字节BCD码参数转化为
MOV R1,#00H ;双字节十六进制参数
MOV DPH,#80h;40H
MOV R7,#6
B_HLOOP: MOV DPL,R0
movx a,@dptr
MOV R3,#00H
MOV R4,A
MOV R6,#3
LLL: MOV A,R4
MOV B,#10
MUL AB
MOV R4,A
MOV A,B
xch a,r3
MOV B,#10
MUL AB
ADD A,R3
MOV R3,A
INC R0
MOV DPL,R0
movx a,@dptr
ADD A,R4
MOV R4,A
MOV A,R3
addc a,#0
MOV R3,A
djnz r6,lll
INC R0
MOV DPL,R1
MOV A,R3
movx @dptr,a
INC R1
MOV DPL,R1
MOV A,R4
movx @dptr,a
INC R1
djnz r7,b_hloop
RET
;****************************
HEXBCD: MOV A,@R0 ;r0 is the data first address
MOV R2,A ;a,r0,r2,r3,r5,r6,r7 is used
INC R0 ;(r2r3) to (r5r6)
MOV A,@R0
MOV R3,A
INC R0
clr a
MOV R5,A
MOV R6,A
MOV R7,#16
het1: clr c
MOV A,R3
rlc a
MOV R3,A
MOV A,R2
rlc a
MOV R2,A
MOV A,R6
addc a,r6
da a
MOV R6,A
MOV A,R5
addc a,r5
da a
MOV R5,A
djnz r7,het1
MOV A,R5
anl a,#0f0h
swap a
MOV @R1,A
INC R1
MOV A,R5
anl a,#0fh
MOV @R1,A
INC R1
MOV A,R6
anl a,#0f0h
swap a
MOV @R1,A
INC R1
MOV A,R6
anl a,#0fh
MOV @R1,A
INC R1
RET
;****************************
ALARM1: MOV DPTR,#PC8155 ;超高限报警
MOV A,05H
movx @dptr,a
RET
;*********************************
alarm2: mov dptr,#pc8155 ;超低限报警
mov a,04h
movx @dptr,a
ret
;**********************************
DDISPB: MOV A,R1 ;显示电路初始化子程序
MOV R6,A ;用到的寄存器为a,r4,r5,r6,r1,r7
MOV R5,#4 ;r5,r7 为总体循环控制变量
clr load ;r1 是参数的地址
DDP1: MOV A,R6 ;r6 保护 r1 原始的值
MOV R1,A ;r4 为内部循环控制变量
MOV R4,#08H ;程序运行结束,r1+2->r1,即指向下一参数
MOV A,@R1 ;r1的内容为下一个参数的首地址
ddp2: clr clk ;运行结果是把(r1),(r1+1)的内容送显示电路
clr c
rlc a
MOV DIN,C
SETB CLK
djnz r4,ddp2
MOV R4,#08H
INC R1
MOV A,@R1
ddp3: clr clk
clr c
rlc a
MOV DIN,C
SETB CLK
djnz r4,ddp3
djnz r5,ddp1
SETB LOAD
INC R1
RET
;****************************
DISPLAY: MOV USE5,R1
MOV R1,#XIANH1 ;数码显示子程序
MOV A,R1 ;用到的寄存器为a,r5,r6,r4,r3,r2,r1
MOV R6,A
MOV R4,#1
MOV R3,#8
ddi1: clr load
MOV R2,#1 ;7219 1p
DDI2: MOV R5,#8
MOV A,R4
ddi3: clr clk
rlc a
MOV DIN,C
SETB CLK
djnz r5,ddi3
MOV R5,#8
MOV A,@R1
ddi4: clr clk
rlc a
MOV DIN,C
SETB CLK
djnz r5,ddi4
MOV A,R1
clr c
subb a,#8
MOV R1,A
djnz r2,ddi2
SETB LOAD
INC R6
MOV A,R6
MOV R1,A
INC R4
djnz r3,ddi1
MOV R1,USE5
RET
;*******************************
DELAY: MOV R6,#0FFH
DELAYA: MOV R7,#0FFH ;延时
delayb: djnz r7,delayb
djnz r6,delaya
RET
;*****************************
DELL: MOV R6,#0ffH
DDLL: DJNZ R6,DDLL
RET
;**********************************
dela: mov r2,#04h
dela1: mov r6,#0ffh
dela2: mov r5,#0ffh
dela3: djnz r5,dela3
djnz r6,dela2
djnz r2,dela1
ret
;***********************************
mDelay100mS: MOV R7,#0C8H
mDelay100mS_1: MOV R6,#0ffH
mDelay100mS_2: NOP
NOP
NOP
DJNZ R6,mDelay100mS_2
DJNZ R7,mDelay100mS_1
RET
;************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -