⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xh.asm

📁 汇编代码 是ASM的代码
💻 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 + -