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

📄 ckcl.asm

📁 本资源包含了单片机键盘、a/d、频率测试等源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
         org 0000h

         AVSET1 EQU   P1.5
         CMPIN  EQU   P1.6
         ALERT  EQU   P1.4
         ADDJUST EQU  02H 
         AVTB   DATA  40H    ;BACK OF AVT
         AVI    DATA  4BH     ;ADDR OF DISP EXIST COMPRESS BCD
         AVL    DATA  4AH
         DISPD  DATA  30H     ;ADDR OF DISP EXIST AS BCD
         HI8    DATA  6AH     ;ADDRESS OF D/A DATA
         LOW4   DATA  6BH
         SHIFT  DATA  70H     ;"SHIFT" KEY FLAG
         AVB    DATA  60H    ;   ADDRESS OF AV1 BIN MODE
         AVT    DATA  50H    ;THE OFFSET ADDRESS OF" 4096 OR 4096*61"
         DISPD2 DATA  72H     ;THE BACKUP OF DISPD

         ajmp start

         org 0100h

start:  MOV SHIFT,#00H     ;SHIFT KEY SET TO BE NO WORKING
        CLR P1.4
        LCALL CON1        ;CLEAR DISPD RAM
        LCALL B_DISPD
        LCALL SET_DEFT
        JNB CMPIN,CON      ;Vi>100mV TO "CON"
        LCALL SAMPSET      ;set AV1=61
        LJMP  MAIN


CON:     LCALL DISP_1

MAIN:    LCALL KEY

         mov dptr,#plo
         MOV A,58H
         MOV B,#03H
         MUL AB
         jmp @a+dptr

j11:     MOV A,#00H
         CJNE A,SHIFT,ADD_1
         LCALL DISP_M
         mov DISPD,#01h
         LCALL DISP
         ljmp dd

ADD_1:   LCALL ADD1DISP
         LCALL DISPB
         LCALL INCRESE  ;"+1"AND DO D/A WORK
         LCALL BCD_BIN
         LCALL AVTB_AVT
         LCALL BHDIV
         LCALL OUTH8L4
         LCALL DACONV
         LCALL CON1
         LJMP DD


j12:     MOV A,#00H
         CJNE A,SHIFT,DEC_1
         LCALL DISP_M
         MOV DISPD,#02h
         LCALL DISP
         ljmp dd

DEC_1:   LCALL DEC1DISP
         LCALL DISPB
         LCALL DECRESE  ;"-1"AND DO D/A WORK
         LCALL BCD_BIN
         LCALL AVTB_AVT
         LCALL BHDIV
         LCALL OUTH8L4
         LCALL DACONV

         LJMP DD

j13:     MOV A,#00H
         CJNE A,SHIFT,DI3
         LCALL DISP_M
         mov DISPD,#03h
         LCALL DISP
DI3:      ljmp dd

j14:     MOV A,#00H
         CJNE A,SHIFT,DI4
        LCALL DISP_M
        mov DISPD,#04h
         LCALL DISP
DI4:     ljmp dd

j15:     MOV A,#00H
         CJNE A,SHIFT,DI5
         LCALL DISP_M
         mov DISPD,#05h
         LCALL DISP
DI5:     ljmp dd

j16:     MOV A,#00H
         CJNE A,SHIFT,DI6

         LCALL DISP_M
         mov DISPD,#06h
         LCALL Disp
DI6:     ljmp dd

j21:     MOV A,#00H
         CJNE A,SHIFT,DI21

         LCALL DISP_M
         mov DISPD,#07h
         LCALL Disp
DI21:    ljmp dD

j22:     MOV A,#00H
         CJNE A,SHIFT,DI22

         LCALL DISP_M
         mov DISPD,#08h
         LCALL Disp
DI22:    ljmp dd

j23:     MOV A,#00H
         CJNE A,SHIFT,DI23
         
         LCALL DISP_M
         mov DISPD,#09h
         LCALL Disp
DI23:     ljmp dd

j24:     MOV A,#00H
         CJNE A,SHIFT,DI24

         LCALL DISP_M
         mov DISPD,#00h
         LCALL Disp
DI24:    ljmp dd

j25:     INC SHIFT     ;"SHIFT KEY"
         MOV A,#02H
         CJNE A,SHIFT,ED25
         MOV SHIFT,#00H
ED25:    ljmp dd

j26:     LCALL B_DISPD
         LCALL READ_D   ;READ KEY CODE "ENTER KEY FOUCTION"
         LCALL CMP_90
         LCALL BCD_BIN
         LCALL AVTB_AVT
         LCALL BHDIV
         LCALL OUTH8L4
         LCALL DACONV
         LCALL CON1
         LJMP DD


ADD1DISP:LCALL IF1000
         JC ADD1END
         MOV R3,#3       
         MOV R1,#DISPD2
         MOV A,@R1
RE:      ADD A,#1
         MOV B,A
         MOV R4,#0AH
         SUBB A,R4
         JNZ  AEND
         MOV  @R1,#00H
         INC R1
         MOV A,@R1
         DJNZ R3,RE
         MOV @R1,#01H
         AJMP ADD1END
AEND:    MOV A,B
         MOV @R1,A
ADD1END: RET

DEC1DISP:LCALL IF1
         JC  DEC1END
         CLR C
         MOV R1,#DISPD2
         MOV A,@R1
         SUBB A,#1
         JNC DEND
         MOV @R1,#09H
         INC R1
         MOV A,@R1
         SUBB A,#00H
         JNC DEND
         MOV @R1,#09H
         INC R1
         MOV A,@R1
         SUBB A,#00H
         JNC DEND
         MOV @R1,#09H
         INC R1
         MOV A, @R1
         SUBB A,#00H
DEND:    MOV @R1,A
DEC1END:   RET

IF1:    MOV A,#00H    ; "IF DATA=1 Y/N=C:1/0  "
        CJNE A,AVI,IFJ
        MOV A,#01H
        CJNE A,AVL,IFJ
        SETB C
        AJMP IFEND
IFJ:    CLR C
IFEND:  RET

IF1000: MOV A,#10H
        CJNE A,AVI,IFBJ
        SETB C
        AJMP IFBEND
IFBJ:   CLR  C
IFBEND: RET

INCRESE:CLR C
        MOV A,#10H
        CJNE A,AVI,CT1
        SETB ALERT        ;SHOW ALERT LED
        AJMP ED1
CT1:    CLR ALERT
        MOV R3,AVL
        MOV A,#01H
        ADDC A,R3
        DA A
        MOV AVL,A
        MOV A,#00H
        MOV R3,AVI
        ADDC A,R3
        DA A
        MOV AVI,A
ED1:    RET

DECRESE:CLR C
        MOV A,#00H    ; "-1 "
        CJNE A,AVI,CT2
        MOV A,#01H
        CJNE A,AVL,CT2
        SETB ALERT        ;SHOW ALERT LED
        LJMP ED2
CT2:    MOV A,AVL
        ADD A,#99H
        MOV AVL,A
        CJNE A,#99,ED2
        MOV A,AVI
        ADD A,#99H
        MOV AVI,A
ED2:    RET


CMP_90:  MOV A,AVI
         JNZ  C9END1
         MOV A,AVL
         CLR C
         SUBB A,#90
         JNC  C9END1           ;AV>90  THEN GO
         CLR  AVSET1           ;AV1=1
         MOV  R0,#AVT         ;AVT IS THE HEAD ADDR OF
         MOV R1,#AVTB         ;4096 OR 4096*61   3 BYTE
         MOV  @R0,#0DH
         MOV  @R1,#0DH
         INC R0
         INC R1
         MOV @R0,#80H
         MOV @R1,#80H
         INC R0
         INC R1
         MOV @R0,#00H
         MOV @R1,#00H
         AJMP C9END
C9END1:  SETB AVSET1              ;AV1=61
         MOV R0, #AVT
         MOV R1, #AVTB
         MOV @R0,#12H
         MOV @R1,#12H
         INC R0
         INC R1
         MOV @R0,#0F4H
         MOV @R1,#0F4H
         INC R0
         INC R1
         MOV @R0,#00H
         MOV @R1,#00H
C9END:   RET

BCD_BIN: MOV R0,#DISPD2
         INC R0
         INC R0
         INC R0

         MOV R2,#3
         MOV R3,#0
         MOV A,@R0
         MOV R4,A
BBLOOP:  MOV A,R4
         MOV B,#10
         MUL AB
         MOV R4,A
         MOV A,#10
         XCH A,B
         XCH A,R3
         MUL AB
         ADD A,R3
         XCH A,R4
         DEC R0
         ADD A,@R0
         XCH A,R4
         ADDC A,#0
         MOV R3,A
         DJNZ R2,BBLOOP
         MOV AVB,R4  ;BIN DATA ADDRESS
         MOV R1,#AVB
         INC R1
         MOV A,R3
         MOV @R1,A
         MOV R1,#00H
         MOV R3,#00H
         MOV R4,#00H
         RET

dd:      ajmp MAIN


key:     clr p3.3
         mov a,#00h
         mov sbuf,a
kl0:     jnb ti,kl0
         clr ti
kl1:     jnb p1.0,pk1
         jb p1.1,kl1
pk1:     LCALL d10ms
         jnb p1.0,pk2
         jb p1.1,kl1
pk2:     mov r7,#06h
         mov r6,#07fh
         mov r3,#00h
         mov a,r6
kl5:     mov sbuf,a
kl2:     jnb ti,kl2
         clr ti
         jnb p1.0,pk0
         jb p1.1,net
         mov r4,#06h
         ajmp pk3
pk0:     mov r4,#00h
pk3:     mov a,#00h
         mov sbuf,a
kl3:     jnb ti,kl3
         clr ti
kl4:     jnb p1.0,kl4
         jnb p1.1,kl4
         mov a,r4
         add a,r3
         mov 58h,a
         ret

net:     mov a,r6
         rr a
         mov r6,a
         inc r3
         djnz r7,kl5
         ret

disp:   SETB p3.3
step1:  mov scon,#00h
show:   mov r7,#05h
        MOV R1,#DISPD
        INC R1
        INC R1
        INC R1
        MOV A,#00H
        MOV @R1,A
        mov r0,#DISPD
loop1:  mov a,@r0
dir0:   mov dptr,#desg
        movc a,@a+dptr
        mov 20h,a
dir1:   mov sbuf,a
wait:   jbc ti,loop2
        sjmp wait
loop2:  inc r0
        clr ti
        djnz r7,loop1
        CLR p3.3
        ret

dispB:   SETB p3.3
stepB1:  mov scon,#00h
showB:   mov r7,#05h
        MOV R1,#DISPD2
        INC R1
        INC R1
        INC R1
        MOV A,#00H
        MOV @R1,A
        mov r0,#DISPD2
loopB1: mov a,@r0
dirB0:  mov dptr,#desg
        movc a,@a+dptr
        mov 20h,a
dirB1:   mov sbuf,a
waitB:   jbc ti,loopB2
        sjmp waitB
loopB2:  inc r0
        clr ti
        djnz r7,loopB1
        CLR p3.3
        ret


d10ms:   mov r7,#15h
dl:      mov r6,#0ffh
dl6:     djnz r6,dl6
         djnz r7,dl
         ret
AA:      MOV SBUF,A
AA1:     JNB TI,AA1
         CLR TI
         RET


plo: ljmp j11
     ljmp j12
     ljmp j13
     ljmp j14
     ljmp j15
     ljmp j16
     ljmp j21
     ljmp j22
     ljmp j23
     ljmp j24
     ljmp j25
     ljmp j26

set_deft:CLR AVSET1
         MOV HI8,#0FFH
         MOV LOW4,#0FH
         LCALL DACONV
         RET

DACONV: MOV DPTR,#7FFFH   ;D/A CONVERT
        MOV A,HI8
        MOVX @DPTR,A
        MOV A,LOW4
        MOV DPTR,#3FFFH
        MOVX @DPTR,A
        MOV DPTR,#1FFFH
        MOVX @DPTR,A
         RET

SAMPSET: SETB AVSET1        ;JUDGE  Vi<100mV
         MOV AVI,#00H
         MOV AVL,#61H
         mov scon,#00h
         LCALL DISP61
         RET

DISP61:  SETB P3.3
         mov scon,#00h
         MOV R7,#05H
         MOV R0,#00H
         MOV DPTR,#TAB1
  DL0:   MOV A,R0
         MOVC A,@A+DPTR

⌨️ 快捷键说明

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