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

📄 main23.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 4 页
字号:
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led2
         lcall sel2
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led3
         lcall sel3
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led4
         lcall sel4
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB P1.7, L_LEDTESTEND
         mov   p0,led5
         lcall sel5
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB P1.7, L_LEDTESTEND
         inc  b
         djnz r1,zj
         ajmp self_check
 delay:  mov r2,#02H
 delay1: mov r3,#0FFH
 delay2: mov r4,#0FFH
 delay3: djnz r4,delay3
         djnz r3,delay2
         djnz r2,delay1
         LCALL  L_FEEDDOG
         ret
showtab: db  01h,02h,04h,08h,10h,20h,40h,80h ;字段码
L_LEDTESTEND:          RET
                       NOP
                       NOP
                       LJMP  L_EEROR
;*******************L_LEDTEST END*****************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;******************L_BEEPTEST*********************************
L_BEEPTEST:         MOV R2,#07FH
L_BEEPTEST1:        CLR P2.3
                    LCALL L_DELAY2MS
                    SETB P2.3
                    LCALL L_DELAY2MS
                    LCALL  L_FEEDDOG
                    DJNZ R2,L_BEEPTEST1
                     MOV R3,#0FFH
L_BEEPTEST2:
                    CLR P2.3
                    LCALL L_DELAY1MS
                    SETB P2.3
                    LCALL L_DELAY1MS
                    LCALL  L_FEEDDOG
                    DJNZ R3,L_BEEPTEST2
                    LCALL SEL8
                    MOV A,P1
                    JNB ACC.7,BEEPEND
                    LCALL SEL7
                    AJMP L_BEEPTEST
 BEEPEND:           RET
L_DELAY1MS:
                 MOV R7,#02H
L_DELAY1MS1:     MOV R6,#0FFH
L_DELAY1MS2:     DJNZ R6,L_DELAY1MS2
                 DJNZ R7,L_DELAY1MS1
                 RET
                 NOP
                   NOP
                   LJMP  L_EEROR
;***********************L_BEEPTEST  END***********************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;***********************L_KEYTEST*****************************
L_KEYTEST:       MOV  LED1,#0
                 MOV  LED2,#72H
                 MOV  LED3,#0F2H
                 MOV  LED4,#0DCH
                 MOV  LED5,#0
                 LCALL  SEL8
                 MOV A,P1
                 JNB ACC.7, L_PLAYKEYEND
                 JNB ACC.0, L_PLAYKEY1
                 JNB ACC.1, L_PLAYKEY2
                 JNB ACC.2, L_PLAYKEY3
                 JNB ACC.3, L_PLAYKEY4
                 LCALL  L_FEEDDOG
                 AJMP L_KEYTEST
L_PLAYKEY1:      MOV  LED5,#0CH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY2:      MOV  LED5,#0B6H
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY3:      MOV  LED5,#9EH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY4:      MOV  LED5,#0CCH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_KEYBEEP:       CLR     P2.3
                 LCALL   L_DELAY65MS
                 SETB    P2.3

L_PLAYKEYEND:        RET
                    NOP
                   NOP
                   LJMP  L_EEROR
;--------------------------------------------------------------
L_DELAY65MS:
                 MOV    R7,#80H
L_DELAY65MS1:    MOV    R6,#0FFH
L_DELAY65MS2:    DJNZ   R6,L_DELAY65MS2
                 DJNZ   R7,L_DELAY65MS1

                 RET
;**********************L_KEYTEST END **************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;********************L_ADTEST**********************************
L_ADTEST:
;*******************初始化程序*********************
 CSH:   MOV  LED1,#080H
        MOV  LED2,#080H
        MOV  LED3,#080H
        MOV  LED4,#080H
        MOV  LED5,#080H
KKK1:   SETB  EX0
        LCALL L_PLAY5LED
        CLR  EX0
        LCALL  SEL8
        MOV A,P1
        JNB ACC.7, L_ADEND
        LCALL  SEL7
        LCALL  L_FEEDDOG
        AJMP KKK1
L_ADEND:   RET
;*******************采样中断子程序******************
PINT0:    CLR    EA
          PUSH   PSW
          MOV    R0,#ADH
AD1:      CLR    P2.0
          CLR    P2.1
          MOV    A,P1
          SETB   P2.1
          JB ACC.4,AD3 ;判断输入是否溢出?OR=1.4=1溢出
          ANL    A,#0FH
          MOV    @R0,A
          INC    R0
          CLR    P2.2
          MOV    A,P1
          SETB   P2.2
          SETB   P2.0
          MOV    @R0,A
AD2:      LCALL   CHULI
AD4:      POP    PSW
          SETB   EA
          RETI
AD3:      LCALL L_KEYBEEP
          MOV LED3,#0E2H
          MOV LED4,#0E2H
          MOV LED5,#0E2H
          LCALL   L_PLAY5LED
          AJMP  AD4
CHULI:  MOV    A,ADH
        ANL    A,#0FH
        MOV    DPTR,#L_TAB
        MOVC   A,@A+DPTR
        MOV    LED3,A
        MOV    A,ADL
        SWAP   A
        ANL    A,#0FH
        MOV    DPTR,#L_TAB
        MOVC   A,@A+DPTR
        MOV    LED4,A
        MOV     A,ADL
        ANL    A,#0FH
        MOV    DPTR,#L_TAB
        MOVC   A,@A+DPTR
        MOV    LED5,A

        RET
         NOP
         NOP
         LJMP  L_EEROR
;*********************L_ADTEST END************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;*****************WATCH DOG TEST****************
L_WDOGTEST:
;*****************DEFINE**************************************
                L_W_AD EQU 2FH ;WATCH DOG ADDRESS
                L_R_AD  EQU 3FH ;RAM ADDRAESS
                CS EQU P3.4
                SCK EQU P3.5
                SI EQU P3.6
                SO EQU P3.7


;***************MAIN*********************************

L_KEY:          LCALL KEY_TEST
                CJNE  A,#1H, L_KEY1
                ACALL  L_READ
                ACALL  L_W_PLAY
                LCALL   L_TESTKEY
                JNB   ACC.7,L_KEY0
                AJMP   L_KEY
L_KEY1:
                CJNE  A,#2H, L_KEY2
                ACALL  L_WRITE
                LCALL   L_TESTKEY
                 JNB   ACC.7,L_KEY0

L_KEY2:          AJMP   L_KEY
L_KEY0 :         RET
;***********WATCH DOG  WRITE PROGRAM***************************
L_WRITE:        CLR  CS
                MOV A,#06H
                ACALL L_W_BETY
                SETB CS
                CLR CS
                MOV A,#02H
                ACALL L_W_BETY
                MOV A,#L_W_AD
                ACALL L_W_BETY
                MOV A,#L_R_AD
                ACALL L_W_BETY
                SETB CS

                RET
;****************END*******************************************
;************ WATCH DOG READ PROGRAM***************************
L_READ:         CLR CS
                MOV A, #3H
                ACALL L_W_BETY
                MOV A,#L_W_AD
                ACALL L_W_BETY
                ACALL L_R_BETY
                SETB CS
                RET
 ;******************END***************************************
 L_TESTWIP:      CLR  CS
                CLR  SCK
                MOV A,#5H
                ACALL L_W_BETY
                ACALL L_R_BETY
                SETB CS
                JB ACC.0,L_TESTWIP
                RET
 ;*****************ZI-PROGRAM*****************************
 L_W_BETY:
                MOV R7,#8H
L_W_BETY1:      ;CLR SCK
                RLC A
                MOV SI,C
                CLR SCK
                SETB SCK
                DJNZ R7,L_W_BETY1
                LCALL  L_FEEDDOG
                RET
          ;*****************************
L_R_BETY:       MOV R7,#8H
L_R_BETY1:      SETB SCK
                CLR  SCK
                MOV C,SO
                RLC  A
                ;CLR  SCK
                DJNZ R7,L_R_BETY1
                RET
                NOP
                   NOP
                   LJMP  L_EEROR
;*******************END********************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
L_EXP1:         LCALL L_KEYBEEP
                RET
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
L_EXP2:         LCALL L_KEYBEEP
                RET
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
                                                                                                                              ;***************DELAY PROGRAM***************************
L_DELAY2MS:
                 MOV R7,#06H
L_DELAY2MS1:     MOV R6,#0FFH
L_DELAY2MS2:     DJNZ R6,L_DELAY2MS2
                 DJNZ R7,L_DELAY2MS1
                 RET
 ;******************END************************************
  ;****************PLAY PROGRAM******************************
L_W_PLAY:
                 MOV R5,A
                 ANL A,#0FH
                 MOV DPTR,#L_TAB
                 MOVC A,@A+DPTR
                 MOV LED5,A
                 MOV A,R5
                 ANL A,#0F0H
                 SWAP A
                 MOVC A,@A+DPTR
                 MOV LED4,A
                 ;==============
L_W_PLAY1:       ACALL L_PLAY4
                 ACALL L_DELAY2MS
                 ACALL L_PLAY5
                 ACALL L_DELAY2MS
                 ACALL SEL8
                 MOV  A,P1                 ; IF K4 PRESS THEN RETURN
                 JB ACC.3,L_W_PLAY1  ;  =======================
                 RET
 ;*******************END*****************************************
 ;****************** PLAY ZI PROGRAM***************************
L_PLAY1:          MOV   P0,LED1
                  CALL SEL1
                  RET
L_PLAY2:          MOV   P0,LED2
                  ACALL SEL2
                  RET
L_PLAY3:          MOV   P0,LED3
                  ACALL SEL3
                  RET
L_PLAY4:          MOV   P0,LED4
                  ACALL SEL4
                  RET
L_PLAY5:          MOV   P0,LED5
                  ACALL SEL5
                  RET

⌨️ 快捷键说明

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