📄 shf1.asm
字号:
execcommand_wp2: mov a,@r0
movx @dptr,a
inc r0
djnz r5,execcommand_wp2
execcommand_w02: clr ch375hm_sta
clr ch375hm_sta
clr ch375hm_sta
setb ch375hm_sta
execcommandwait2: jb ch375hm_int,$
mov dptr,#ch375hm_index
mov a,#3fh
movx @dptr,a
mov dptr,#ch375hm_data
movx a,@dptr
mov r7,a
mov dptr,#ch375hm_index
clr a
movx @dptr,a
mov dptr,#ch375hm_data
clr a
movx @dptr,a
jnb ch375hm_int,$
ret
;********************************************
baojing: jnb cgx,cdxpd ;判断超高限报警
mov dptr,#pc8155
mov a,#05h
movx @dptr,a
sjmp st1 ;超高限报警
cdxpd: jnb cdx,st
mov dptr,#pc8155
mov a,#03h
movx @dptr,a
sjmp st1 ;超低限报警
st: mov dptr,#pc8155
mov a,#00h
movx @dptr,a
st1: clr cdx
clr cgx
ret
;*****************************************
adcy: mov r0,#30h ;a/d采样数据放入adzhi所指向的地址里
MOV A,#10001110B ;第一路a/d
lcall adconve
mov r0,#32h
MOV A,#11001110B ;第二路a/d
lcall adconve
ret
;*********************************
clrx: mov r0,#use1
mov r6,#8
clr a
clruse: mov @r0,a
inc r0
djnz r6,clruse
mov r0,#xianh1 ;按下stop键后,显示00000000
mov r6,#8
clr a
clrxianhuan: mov @r0,a
inc r0
djnz r6,clrxianhuan
lcall display
ret
;*********************************
adconve: clr sdin
clr adcs
clr sclk
mov r7,#8
clr c
adloop1: rlc a ;adloop1 is send control word
mov sdin,c
setb sclk
clr sclk
djnz r7,adloop1
; jnb sstrb,$
mov r7,#8
clr sdin
adcycle1: setb sclk
nop
nop
nop
clr sclk
mov c,dout
rlc a
djnz r7,adcycle1
mov @r0,a
inc r0 ;r0+1
mov r7,#8
adcycle2: setb sclk
clr sclk
mov c,dout
rlc a
djnz r7,adcycle2
setb adcs
mov @r0,a
swap a ;每次采16位,最低4位无效,将最低4位移至最高位,只取低12位
mov @r0,a ;采样结果30h放12位数据的高四位,31h放12位数据低八位
dec r0
mov a,@r0
swap a
inc r0
xchd a,@r0
xch a,@r0
dec r0
mov @r0,a
inc r0
inc r0
ret
;*****************************************
baocun: mov r7,#40
mov a,#80h
orl a,ramh
mov dph,a
mov dpl,raml
mov r0,#30h
songshu: mov a,@r0
movx @dptr,a
inc r0
inc dptr
djnz r7,songshu
mov ramh,dph
mov raml,dpl
ret
;**********************************
pjz: mov r0,#max11 ;分别求出两路最大值,最小值的平均值
mov a,@r0 ;最大值平均值存入22h23h中,最小值平均值存入24h25h中
mov r3,a
mov r0,#max21
mov a,@r0
add a,r3
mov r3,a
mov r0,#max10
mov a,@r0
mov r2,a
mov r0,#max20
mov a,@r0
addc a,r2
mov r2,a
clr c
mov a,r2
rrc a
mov r2,a
mov a,r3
rrc a
mov r3,a
mov 22h,r2
mov 23h,r3
mov r0,#min11
mov a,@r0
mov r5,a
mov r0,#min21
mov a,@r0
add a,r5
mov r5,a
mov r0,#min10
mov a,@r0
mov r4,a
mov r0,#min20
mov a,@r0
addc a,r4
mov r4,a
clr c
mov a,r4
clr c
mov a,r4
rrc a
mov r4,a
mov a,r5
rrc a
mov r5,a
mov 24h,r4
mov 25h,r5
ret
;**********************************
keyset: lcall rdkey ;取得一键值存入A中
cjne a,#80h,set0 ;开始
lcall kaishi
ljmp set00
set0: cjne a,#40h,set2 ;设置
lcall csset
JNB GCLK,SET1
lcall setclk
set1: mov r6,#8
mov r0,#xianh1 ;清显缓
clr a
set3: mov @r0,a
inc r0
djnz r6,set3
lcall display
lcall delay
ljmp keyset
set2: cjne a,#01h,keyset
lcall stop
ljmp clr11
SET00: RET
;**********************************
RDKEY: MOV DPTR,#ZT8155 ;8155 设置
MOV A,#0CH ;PA intput(key)
movx @dptr,a ;PC OUT(ALARM)不用中断
MOV DPTR,#PA8155
Movx a,@dptr
cpl a
JZ RDKEY
lcall delay
JZ RDKEY
RET
;**********************************
kaishi: lcall wxh
lcall display
lcall rdclk
lcall tongx
RET
;**********************************
stop: lcall rdclk
lcall tongx
RET
;**********************************
RDCLK: mov dptr,#400ah;#200ah
mov a,#70h
movx @dptr,a
mov dptr,#400bh;200bh
mov a,#10110010b
movx @dptr,a
MOV DPTR,#4000h;2000H
movx a,@dptr
mov R6,A
ANL A,#0FH
MOV DPTR,#402DH
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#402Ch
movx @dptr,a
MOV DPTR,#4002h
movx a,@dptr
mov r6,a
anl a,#0fh
mov dptr,#4027h;2027h
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#4026h;2026h
movx @dptr,a
MOV DPTR,#4004h;2004H
movx a,@dptr
mov r6,a
anl a,#0fh
mov dptr,#4025h;2025h
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#4024h;2024h
movx @dptr,a
MOV DPTR,#4007h;2007H
movx a,@dptr
mov r6,a
anl a,#0fh
mov dptr,#4023h;2023h
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#4022h;2022h
movx @dptr,a
MOV DPTR,#4008h;2008H
movx a,@dptr
mov r6,a
anl a,#0fh
mov dptr,#4021h;2021h
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#4020h;2020h
movx @dptr,a
MOV DPTR,#4009h;2009H
movx a,@dptr
mov r6,a
anl a,#0fh
mov dptr,#401fh;201fh
movx @dptr,a
mov a,r6
swap a
anl a,#0fh
mov dptr,#401eh;201eh
movx @dptr,a
mov dptr,#400ah;200ah
mov a,#2dh
movx @dptr,a
mov dptr,#400bh;200bh
mov a,#00110010b
movx @dptr,a
RET
;**********************************
TONGX: ;MOV R7,#64
;MOV R0,#BUFF0
;clr ti
; TONGX0: MOV A,@R0
; INC R0
;MOV SBUF,A
;JNB TI,$
;clr ti
;djnz r7,tongx0
RET
;**********************************
SETCLK: MOV DPTR,#400ah; ;时钟电路设置子程序
MOV A,#70h
Movx @dptr,a ;分频器复位
MOV DPTR,#400bh;
MOV A,#10110010B
Movx @dptr,a ;SET=1
MOV DPTR,#4001h;
MOV A,#00H
Movx @dptr,a ;设秒闹00
MOV DPTR,#4003h;
MOV A,#0FFH
movx @dptr,a ;设分闹FF
MOV DPTR,#4005h;
MOV A,#0FFh
movx @dptr,a ;设时闹,每小时一次
MOV DPTR,#402DH ;读秒
movx a,@dptr
MOV B,A
MOV DPTR,#402cH
movx a,@dptr
swap a
orl a,b
MOV DPTR,#4000h;
Movx @dptr,a ;设秒
MOV DPTR,#4027h ;读分
movx a,@dptr
MOV B,A
MOV DPTR,#4026h;2026H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -