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

📄 电机节电器.asm

📁 我写的电机节电器源码
💻 ASM
字号:
   org 0000h
  ljmp main
    org 0003h
  ljmp inti0
    org 000bh
  ljmp intt0
    org 001bh
  ljmp intt1

 runflag equ f0
 keyhold equ 20h.1
 realvalue equ 62h
 keyvalue equ 60h
 key3s equ 20h.3
 over  equ 20h.8
 tlcs equ p2.0
 tlclk equ p2.1
 tldo equ p2.2
 x25cs equ p2.7
 x25so equ p2.6
 x25sck equ p2.4
 x25si equ p2.5


    org 0030h
main: mov sp,#100
      mov p1,#00h
      mov p0,#00h
      mov 25h,#40
      clr p3.7
      clr p3.6
      clr p3.5
      mov keyvalue,#00
      setb p3.2
      lcall readset
      clr ea
      mov tmod,#01h
      mov th0,#0c5h
      mov tl0,#068h
      setb it0
      setb ex0
      setb tr0
      setb et0
      setb ea
      mov a,3ah
      jz sleep
      lcall run
sleep: jnb tf0,sleep
      ljmp sleep

inti0:push acc
      push psw
      setb rs0
      clr rs1
      lcall delay12
      jb p3.2,return0
      mov p1,#0ffh
      clr ex0
      clr p3.2
      jb p1.0,l1
stop: clr et1
      clr f0
      mov 2ah,#00
      mov 2bh,#00
      mov 2eh,#00
      lcall return
      anl p3,#1fh
      reti



return0:clr keyhold
        clr key3s
        mov 28h,#00
        lcall return
         reti


l1:   jb p1.1,l2
runky:lcall run
      lcall return
      reti
l2:   jb p1.2,l3
mon:  mov 3dh,realvalue
      mov 3eh,#00h
      mov keyvalue,#00h
      mov 54h,#00
      mov 5ah,#00
      lcall return
      reti
l3:   jb p1.3,l4
up:   mov a,keyvalue
      jz return0
      setb keyhold
      lcall dpt
      mov 3dh,@r0
      inc r0
      mov 3eh,@r0
      mov r6,3dh
      mov r7,3eh
inch: lcall add16
        mov a,keyvalue
        cjne a,#1,incj1
        sjmp lowp
 incj1: cjne a,#2,incj2
        sjmp lowp
 incj2: cjne a,#5,incj3
        sjmp lowp
 incj3: cjne a,#3,incj4
        sjmp highp
 incj4: cjne a,#4,par5
        sjmp highp
  lowp: mov a,r6
        subb a,#200
        jnc trans1
        mov r6,#200
        mov r7,#00
 trans1:mov 3eh,r7
        mov 3dh,r6
        jb p1.3,incha
        jnb 20h.3,$
        lcall delay100
        ljmp inch
highp:mov a,r7
      subb a,#03h
      jnc trans1
      mov a,r6
      subb a,#0e8h
      jnc trans1
 par5:mov r6,#01
      mov r7,#00
      mov keyvalue,#06
      mov 54h,keyvalue
      ljmp trans1
 incha:clr keyhold
       clr key3s
       mov 28h,#00
       lcall return
       reti

return1:ljmp return0

l4:   jb p1.4,l5
down: mov a,keyvalue
      jz return1
      setb keyhold
      lcall dpt
      mov 3dh,@r0
      inc r0
      mov 3eh,@r0
      mov r6,3dh
      mov r7,3eh
sinch:lcall sub16
      mov a,keyvalue
      cjne a,#1,decj1
      sjmp slowp
decj1:cjne a,#2,decj2
      sjmp slowp
decj2:cjne a,#5,decj3
      sjmp slowp
decj3:cjne a,#3,decj4
      sjmp shighp
decj4:cjne a,#4,spar5
      sjmp shighp
slowp:cjne r6,#00,trans4
      mov r6,#00
      mov r7,#00
trans4:mov 3eh,r7
       mov 3dh,r6
       jb p1.3,sincha
       jnb 20h.3,$
       lcall delay100
       ljmp sinch
shighp:cjne r7,#03h,trans4
      cjne r6,#0e8h,trans4
      mov r7,#03h
      mov r6,#0e8h
      ljmp trans4
 spar5:mov r6,#00
      mov r7,#00
      mov 54h,keyvalue
      ljmp trans4
 sincha:clr keyhold
       clr key3s
       mov 28h,#00
       lcall return
       reti

l5:   jb p1.5,l6
setkey:mov a,keyvalue
       jz return1
       lcall dpt
       mov @r0,3dh
       inc r0
       mov @r0,3eh
       lcall writset
       lcall return
       reti
l6:jb p1.6,keyerr

prog:  inc keyvalue
       mov a,keyvalue
       xrl a,#07
       jnz inc1
       mov keyvalue,#01
 inc1: lcall dpt
       mov 3dh,@r0
       inc r0
       mov 3eh,@r0
       mov 5ah,#2fh
       mov 54h,keyvalue
       lcall return
       reti

keyerr:mov keyvalue,#00
return:push psw
       push acc
       setb p3.2
       setb ex0
       mov p1,#00h
       ret




intt0:push acc
      push psw
      setb rs1
      clr rs0
      clr x25cs
      setb x25cs
      inc 29h
      mov a,29h
      cjne a,#80,t0enter
      mov 29h,#00
      lcall disp
t0enter: jnb keyhold,filt10
      inc 28h
      clr c
      mov a,28h
      subb a,#150
      jnc filt
      setb key3s
      sjmp filt
filt10:clr key3s
 filt:lcall inputa
      mov r0,25h
      mov @r0,a
      inc r0
      mov a,r0
      anl a,#4fh
      mov r0,a
      mov 25h,r0
      mov r1,#40h
      mov r2,#0
      mov r3,#0
loop: mov a,@r1
      add a,r3
      mov r3,a
      clr a
      addc a,r2
      mov r2,a
      inc r1
      cjne r1,#50h,loop
      mov r1,#00
      clr c
filt2:mov a,r2
      rrc a
      mov r2,a
      mov a,r3
      rrc a
      mov r3,a
      clr c
      inc r1
      cjne r1,#4,filt2
      mov realvalue,r3
      mov a,keyvalue
      jnz mdisp
      mov 3dh,realvalue
      mov 3eh,#00
mdisp:jnb f0,back
      mov a,30h
      subb a,realvalue
      jnc loop1
      mov a,32h
      subb a,realvalue
      jnc loop2
      mov a,2eh
      cjne a,#0feh,loop3
      ljmp back
      nop
      nop
      nop
loop1:mov a,2eh
      cjne a,#55h,loop4
      ljmp back
loop2:mov a,2eh
      cjne a,#18h,loop5
      ljmp back
loop3:mov 2eh,#0feh
      lcall opent1
       ljmp back
loop4:mov 2eh,#55h
      lcall opent1
      ljmp back
loop5:mov 2eh,#18h
      lcall opent1
      nop
      nop
      nop
      nop
      nop
back:push psw
     push acc
     clr et0
     clr ea
     mov th0,#0c5h
     mov tl0,#068h
     setb et0
     setb tr0
     setb ea
     reti
opent1:clr ea
       clr et1
       mov th1,#3ch
       mov tl1,#0b0h
       setb et1
       setb tr1
       setb ea
       mov 2ah,#00
       mov 2bh,#00
       ret


intt1:push psw
      push acc
      setb rs0
      setb rs1
      clr ea
      inc r5
second:cjne r5,#20,sec1
       add a,2ah
       mov a,#1
       mov 2ah,a
       mov a,2bh
       addc a,#0
       mov 2bh,a
 start:mov a,2eh
       cjne a,#66h,xschang
       mov r7,2bh
       mov r6,2ah
       mov r5,35h
       mov r4,34h
       lcall cmp16
       jnb 20h.8,sec1
       setb f0
       lcall reintt1
       anl p3,#0bfh
       reti

 sec1: clr ea
       pop acc
       pop psw
       clr et1
       mov th1,#3ch
       mov tl1,#0b0h
       setb et1
       setb tr1
       setb ea
       reti





xschang:mov a,2eh
        cjne a,#55h,next1
        mov r7,2bh
        mov r6,2ah
        mov r5,37h
        mov r4,36h
        lcall cmp16
        jnb 20h.8,sec1
        clr et1
        lcall reintt1
        anl p3,#7fh
        reti





 next1: mov a,2eh
        cjne a,#18h,next2
        mov r7,2bh
        mov r6,2ah
        mov r5,37h
        mov r4,36h
        lcall cmp16
        jnb 20h.8,sec1
        lcall reintt1
        anl p3,#0bfh
         reti

next2: mov a,2eh
       cjne a,#0feh,err5
       mov a,2ah
       cjne a,38h,sec1
 err5: lcall reintt1
       clr f0
       anl p3,#1fh
       reti

reintt1:pop acc
        pop psw
        clr et1
        mov 2eh,#00
        mov 2ah,#00
        mov 2bh,#00
        setb ea
        ret


dpt:  clr c
       mov a,60h
       dec a
       rl a
       add a,#30h
       mov r0,a
       ret

delay12: mov r4,#20
     d1: mov r3,#300
     d2: djnz r3,d2
         djnz r4,d1
         ret

run:  clr ea
      clr et1
      mov 2eh,#66h
      orl tmod,#10h
      mov th1,#3ch
      mov tl1,#0b0h
      setb et1
      setb tr1
      anl p3,#7fh
      setb ea
      ret

delay100:mov r4,#200
      d3:mov r3,#250
      d4:djnz r3,d4
         djnz r4,d3
         ret

 add16:mov a,r6
       add a,#01
       mov r6,a
       mov a,r7
       addc a,#0
       mov r7,a
       ret

sub16: mov a,r6
       clr c
       subb a,#01
       mov r6,a
       mov a,r7
       subb a,#0
       mov r7,a
       ret

cmp16:clr c
      mov a,r7
      subb a,r5
      jc cmpnext
      mov a,r6
      subb a,r4
      jc cmpnext
      setb over
      ret
cmpnext:clr over
        ret

disp:mov 50h,#00
     mov 51h,#00
     mov 52h,#00
     mov 53h,#00
disp10:mov a,3eh
       jz disp13
       clr c
       mov a,3dh
       subb a,#200
       jc disp12
       mov 3dh,a
disp11: mov a,52h
     add a,#2
     mov 52h,a
     mov a,53
     addc a,#00
     mov 53h,a
disp12:dec 3eh
     mov a,3dh
     add a,#56
     mov 3dh,a
     clr c
     mov a,52h
     add a,#2
     mov 52h,a
     mov a,53h
     addc a,#00
     mov 53h,a
    sjmp disp10
disp13:mov b,#100
     mov a,3dh
     div ab
     add a,52h
     mov 52h,a
     mov a,53h
     addc a,#00
     mov 53h,a
     mov a,#10
     xch a,b
     div ab
     mov 51h,a
     mov 50h,b
     mov b,#10
     mov a,52h
     div ab
     mov 53h,a
     mov 52h,b
     mov r0,#50h
     mov r1,#55h
 cod:mov a,@r0
     mov dptr,#tab
     movc a,@a+dptr
     mov @r1,a
     inc r0
     inc r1
     cjne r0,#55h,cod
 sout:mov scon,#00h
      mov r0,#55h
output:mov a,@r0
      mov sbuf,a
      jnb ti,$
      clr ti
      inc r0
      cjne r0,#5bh,output
      ret

inputa:setb tldo
       clr tlclk
       setb tlcs
       clr tlcs
       mov r4,#50
       mov r3,#08
       setb tlclk
       nop
       clr tlclk
       nop
       setb tlclk
       nop
inputa1:clr tlclk
        mov c,tldo
        rlc a
        setb tlclk
        djnz r3,inputa1
inputa2:djnz r4,inputa2
        setb tlcs
        ret


readset:mov r0,#00h
        mov r1,#30h
     read:mov a,#03h
          mov r7,#08h
          clr x25sck
          clr x25cs
          acall transfe
          mov a,@r0
          mov r7,#08h
          acall transfe
          mov r7,#08h
    rece1:nop
          mov c,x25so
          rlc a
          setb x25sck
          clr x25sck
          nop
          djnz r7,rece1
          rr a
          mov @r1,a
          inc r0
          inc r1
          cjne r1,#3bh,read
          ret


writset:mov r0,#00h
        mov r1,#30h
 write: clr x25sck
        clr x25si
        setb x25cs
        setb x25so
        mov a,#06h
        mov r7,#08h
        clr x25sck
        clr x25cs
        acall transfe
        setb x25cs
 delay1:mov r4,#10
   del1:mov r3,#50
   del2:djnz r3,del2
        djnz r4,del1
        mov a,#02h
        mov a,#08h
        clr x25sck
        clr x25cs
        acall transfe
        mov a,@r0
        mov r7,#08h
        acall transfe
        mov a,@r1
        mov r7,#08h
        acall transfe
        setb x25cs
 delay3:mov r4,#20
   del3:mov r3,#150
   del4:djnz r3,del4
        djnz r4,del3
        inc r0
        inc r1
        cjne r1,#3bh,write
        ret

  transfe:nop
          mov c,acc.7
          mov x25si,c
          setb x25sck
          rl a
          clr x25sck
          djnz r7,transfe
          clr x25si
          ret

tab:db 7eh,24h,3bh,5bh,4dh,57h,77h,4ah,7fh,4fh

end




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -