📄 xh.asm
字号:
;inter ram define
statu equ 20h
fhz equ 22h
fun equ 23h
anginc equ 24h
width equ 25h
ht1 equ 26h
ht2 equ 27h
ht3 equ 28h
ltime1 equ 29h
times equ 30h
chi equ 31h
divda equ 40h
divca equ 43h
;bit addr define
rst equ 0h
fg1 equ 1h
fg2 equ 2h
f01 equ 3h
f1 equ 4h
f10 equ 5h
f100 equ 6h
f1k equ 7h
wrky equ 8h
enky equ 9h
dtime equ 0ah
dot1 equ 0b2h ;p3.2
ledg equ 0b1h ;p3.1
wrkey equ 0b5h ;p3.5
enkey equ 0b7h ;p3.7
csda equ 0b0h ;p3.0
cseg at 0000H
LJMP start
cseg at 000BH
LJMP TIME0
cseg at 0030H
start: mov sp,#50h
mov statu,#0feh
mov r4,statu
call disled
clr enky
clr wrky
sjmp fun2
efunw1: inc r5
mov fun,r5
cjne r5,#0f4h,fun21
fun2: mov r5,#0f0h
mov fun,r5
fun21: call disply1
call rwrkey
jb wrky,efunw1
call renkey
jb enky,nfune1 ;is 4
sjmp fun21
nfune1: mov a,fun ;function num
cjne a,#0f2h,efune1
setb fg1
clr fg2
mov r4,statu
call disled
ajmp puls1
efunw2: inc chi
mov a,chi
cjne a,#1,pf11
sjmp pf1
pf11: cjne a,#2,pf12
sjmp pf2
pf12: cjne a,#3,pf13
; sjmp pf3
;f13: cjne a,#4,pf14
; sjmp pf4
;f14: cjne a,#5,pf15
mov chi,#0
sjmp pf5
pf13: sjmp efune1
pf1: orl statu,#0f8h
anl statu,#0efh
sjmp fune12
pf2: orl statu,#0f8h
anl statu,#0dfh
sjmp fune12
pf3: orl statu,#0f8h
anl statu,#0f7h
sjmp fune12
pf4: orl statu,#0f8h
anl statu,#07fh
sjmp fune12
pf5: orl statu,#0f8h
anl statu,#0f7h
sjmp fune12
efune1: acall pfun
mov r4,statu
acall disled
anl statu,#0f7h
mov chi,#0
fune12: mov r4,statu
call disled
call rwrkey
jb wrky,efunw2
call renkey
jb enky,efune2
sjmp fune12
efunw31: mov fhz,r5
sjmp efune21
efunw3: inc r5
mov a,r5
cjne a,#99,efunw31
efune2: mov r5,#01h
mov fhz,r5
efune21: call disply2
call rwrkey
jb wrky,efunw3
call renkey
jb enky,efune3
sjmp efune21
efune3: mov a,fun
cjne a,#0f0h,nsin
ajmp sin
nsin: cjne a,#0f1h,nang
ajmp ang
nang: cjne a,#0f3h,nqan
ajmp qan
nqan: ajmp start
sin: acall qdiv
mov tmod,#01h
mov a,ht3
mov tl0,a
mov a,ht2
mov th0,a
mov a,ht1
mov times,a
clr dtime
stars: setb ea
setb et0
mov r3,#0 ;sin start point
setb tr0
sstr: mov dptr,#stable
mov a,r3
movc a,@a+dptr
clr csda
mov p1,a
setb csda
wsin: jb dtime,bcs01
jnb enkey,starts
jnb wrkey,starts
sjmp wsin
bcs01: clr dtime
inc r3
cjne r3,#50,sstr
mov r3,#0
sjmp sstr
starts: ajmp start
efunw4: inc r5
cjne r5,#6,ninc
ang: mov r5,#1
ninc: mov anginc,r5
acall disply2
acall rwrkey
jb wrky,efunw4
acall renkey
jb enky,efune4
sjmp ninc
efune4: mov r5,fhz
acall disply2
acall qdiv
mov tmod,#01h
mov a,ht3
mov tl0,a
mov a,ht2
mov th0,a
mov a,ht1
mov times,a
clr dtime
stara: setb ea
setb et0
mov r3,#0 ;sin start point
setb tr0
astr: mov a,r3
mov b,anginc
mul ab
clr csda
mov p1,a
setb csda
clr dtime
wang: jb dtime,bca01
jnb enkey,starta
jnb wrkey,starta
sjmp wang
sstrr: ajmp astr
bca01: clr dtime
inc r3
cjne r3,#50,sstrr
mov r3,#0
sjmp astr
starta: ajmp start
efunw5: inc r5
cjne r5,#99,nqann
qan: mov r5,#50 ;pulse width
nqann: mov width,r5
acall disply2
acall rwrkey
jb wrky,efunw5
acall renkey
jb enky,efune5
sjmp nqann
efune5: mov r5,fhz
acall disply2
mov a,width
clr c
rrc a
mov width,a
acall qdiv
mov tmod,#01h
mov a,ht1
mov tl0,a
mov a,ht2
mov th0,a
mov a,ht3
mov times,a
clr dtime
starq: setb ea
setb et0
mov r3,#0 ;sin start point
setb tr0
qstrh: mov a,#0ffh
clr csda
mov p1,a
setb csda ;time out flag
wqan1: jb dtime,bcq01
jnb enkey,startq
jnb wrkey,startq
sjmp wqan1
bcq01: clr dtime
inc r3
mov a,r3
clr c
subb a,width
jc qstrh
qstrl: mov a,#0
clr csda
mov p1,a
setb csda
wqan2: jb dtime,bcq02
jnb enkey,startq
jnb wrkey,startq
sjmp wqan2
bcq02: clr dtime
inc r3
cjne r3,#50,qstrl
mov r3,#0
sjmp qstrh
startq: mov a,#0
clr csda
mov p1,a
setb csda
ajmp start
puls1: acall delay
acall delay
mov a,#0ffh
clr csda
mov p1,a
setb csda
puls: acall rwrkey
jb wrky,startq
acall renkey
jb enky,startq
sjmp puls
qdiv: mov 43h,#0
mov 44h,#0
mov 45h,#0
mov a,statu
anl a,#0f8h
cjne a,#0f0h,nf01h
mov 40h,#03h
mov 41h,#0dh
mov 42h,#40h
sjmp f1h ;0.1hz
nf01h: cjne a,#0e8h,nf1h
mov 40h,#00h
mov 41h,#4eh
mov 42h,#20h
sjmp f1h ;1hz
nf1h: cjne a,#0d8h,nf10h
mov 40h,#00h
mov 41h,#07h
mov 42h,#0d0h
sjmp f1h ;10hz
nf10h: cjne a,#0b8h,nf100h
mov 40h,#00h
mov 41h,#00h
mov 42h,#0c8h
sjmp f1h ;100hz
nf100h: cjne a,#78h,nf1kh
mov 40h,#00h
mov 41h,#00h
mov 42h,#14h
sjmp f1h ;1khz
nf1kh: ajmp start
f1h: mov r6,fhz ;;;100
mov r0,#40h
mov r1,#43h
acall div1
mov r1,#43h
mov ht3,@r1
inc r1
mov a,@r1
cht2: cpl a
mov ht2,a
inc r1
mov a,@r1
cjne a,#0,cht1
mov ht1,@r1
sjmp ht11
cht1: cpl a
mov ht1,a
ht11: ret
div1: cjne r6,#0,div4
sjmp div0
div4: mov a,@r0
mov b,r6
div ab
mov r5,#16
inc r1
inc r1
mov @r1,a
dec r1
dec r1
mov @r0,b
mov r7,#3
lcall rlcn
div2: mov a,@r0
mov b,r6
div ab
mov @r0,b
cjne a,#0,div6
clr c
sjmp div3
div6: setb c
div3: mov r7,#3
mov a,r0
push acc
mov a,r1
mov r0,a
lcall rlcn
pop acc
mov r0,a
mov r7,#3
lcall rlcn
djnz r5,div2
ret
rlcn: mov a,r7
rlcn1: mov r2,a
push psw
add a,r0
mov r0,a
pop psw
rlcn2: dec r0
mov a,@r0
rlc a
mov @r0,a
djnz r2,rlcn2
ret
div0: mov a,#0ffh
mov @r1,a
inc r1
mov @r1,a
inc r1
mov @r1,a
ret
disled: mov a,r4
clr dot1
mov p1,a
setb dot1
ret
disply1: mov a,r5
clr ledg
mov p1,a
setb ledg
ret
disply2: push b
mov a,r5
anl a,#0f0h
rr a
rr a
rr a
rr a
mov b,a
cjne a,#0,dd10c2
sjmp dd10c1
dd10c2: mov a,#0
dd10c: add a,#16h
da a
djnz b,dd10c
dd10c1: mov b,a
mov a,r5
anl a,#0fh
add a,#0
da a
add a,b
da a
clr ledg
mov p1,a
setb ledg
pop b
ret
da10: mov b,r5
anl b,#0fh
mov a,r5
sjmp da101
disply: mov a,r5
anl a,#0fh
clr c
subb a,#0ah
jc da10
mov b,a
mov a,r5
add a,#10h
da101: anl a,#0f0h
add a,b
clr ledg
mov p1,a
setb ledg
ret
delay: mov r6,#250 ;5ms
delay1: mov r7,#100
delay2: djnz r7,delay2
djnz r6,delay1
ret
rwrkey: jnb wrkey,wtkey
sjmp wrkyn
wtkey: acall delay
jnb wrkey,wrkyy1
wrkyn: clr wrky
ret
wrkyy1: acall delay
jnb wrkey,wrkyy1
setb wrky
ret
renkey: jnb enkey,ewtkey
sjmp enkyn
ewtkey: acall delay
jnb enkey,enkyy1
enkyn: clr enky
ret
enkyy1: acall delay
jnb enkey,enkyy1
setb enky
ret
time0: cpl p3.3
cpl p3.4
push acc
mov a,ht1
mov tl0,a
mov a,ht2
mov th0,a
mov a,times
cjne a,#0,qtim0
mov a,ht3
mov times,a
clr tf0
setb dtime
pop acc
reti
qtim0: dec times
clr tf0
pop acc
reti
pfun: mov a,fun
cjne a,#0f0h,pfun0
setb fg1
setb fg2
ret
pfun0: cjne a,#0f1h,pfun1
clr fg1
setb fg2
ret
pfun1: cjne a,#0f2h,pfun2
setb fg1
clr fg2
ret
pfun2: clr fg1
clr fg2
ret
stable: db 128,144,159,175,189,203,215,226,236,243,249,253,255,255,253
db 249,243,236,226,215,203,189,175,160,144,128,112,96,81,66,52
db 40,29,20,12,6,2,0,0,2,6,12,19,29,40,52,66,80,95,111
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -