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

📄 main7.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                   SETB RS1
                   SETB RS0
                   MOV R1,#10H
L_TESTKEYC:

                   LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST00
                   LCALL   L_PLAY5LED

                   DJNZ   R1,L_TESTKEYC
                   CLR RS1
                   CLR RS0
                   MOV @R0,#0H
                   SETB RS1
                   SETB RS0
                   MOV R1,#10H
L_TESTKEYC1:
                   LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST00
                   LCALL   L_PLAY5LED
                   DJNZ   R1,L_TESTKEYC1
                   CLR RS1
                   CLR RS0
                   AJMP    L_TESTKEYD
LKEY_TEST00:        CLR RS1
                    CLR RS0
                    MOV     R5,#2H
                    MOV     @R0,B
                    MOV    35H,A
LKEY_TEST01:        LCALL   L_DELAY2MS
                   DJNZ    R5,LKEY_TEST01
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,L_TESTKEYD
NOKEY0A:           LCALL   SEL8
NOKEY0:            MOV     A,P1
                   LCALL   L_PLAY5LED
                   CJNE    A,#0FFH,NOKEY0A
                   MOV     R5,#2H
NOKEY0B:           LCALL   L_DELAY2MS
                   DJNZ    R5,NOKEY0B
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,NOKEY0A
                   MOV  A,35H
                   RET
;***********************L_TESTKEY0 END**************88
;************************L_TESTKEY1  PLAY INPUT**************888
L_TESTKEY1:        LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST10
                   LCALL   L_PLAYINPUT
                   AJMP    L_TESTKEY1
LKEY_TEST10:       MOV     R5,#2H
                   MOV    35H,A
LKEY_TEST11:       LCALL   L_DELAY2MS
                   DJNZ    R5,LKEY_TEST11
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,L_TESTKEY1
NOKEY1A:            LCALL   SEL8
NOKEY1:           MOV     A,P1
                   LCALL   L_PLAYINPUT
                   CJNE    A,#0FFH,NOKEY1A
                   MOV     R5,#2H
NOKEY1B:           LCALL   L_DELAY2MS
                   DJNZ    R5,NOKEY1B
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,NOKEY1A
                    MOV  A,35H
                    RET
;***********************L_TESTKEY1   END**************88
 ;************************L_TESTKEY2 PLAY USER **************888
L_TESTKEY2:         LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST20
                   LCALL   L_PLAYUSER
                   AJMP    L_TESTKEY2
LKEY_TEST20:        MOV     R5,#2H
                    MOV    35H,A
LKEY_TEST21:        LCALL   L_DELAY2MS
                   DJNZ    R5,LKEY_TEST21
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,L_TESTKEY2
NOKEY2A:            LCALL   SEL8
NOKEY2:           MOV     A,P1
                   LCALL   L_PLAYUSER
                   CJNE    A,#0FFH,NOKEY2A
                   MOV     R5,#2H
NOKEY2B:           LCALL   L_DELAY2MS
                   DJNZ    R5,NOKEY2B
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,NOKEY2A
                   MOV  A,35H
                    RET
;***********************L_TESTKEY2   END**************88

;***************L_PLAYERRO**********************
L_PLAYERRO:     MOV LED1,#0H
                MOV LED2,#0F2H
                MOV LED3,#62H
                MOV LED4,#62H
                MOV LED5,#7EH
                LCALL L_PLAY5LED
                RET

;*****************L_PLAYERRO END***************8888888
;******************L_PLAYUSER********************************
L_PLAYUSER:     MOV LED1,#0H
                MOV LED2,#7CH
                MOV LED3,#0DAH
                MOV LED4,#0F2H
                MOV LED5,#62H
                LCALL L_PLAY5LED
                RET
;************ L_PLAYUSER END ********************************
;******************L_PLAYINPUT********************************
L_PLAYINPUT:    MOV LED1,#0CH
                MOV LED2,#6EH
                MOV LED3,#0E6H
                MOV LED4,#07CH
                MOV LED5,#0EH
                LCALL L_PLAY5LED
                RET
;************ L_PLAYINPUT END ********************************


 ;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
 ;*******************L_LEDTEST********************************
L_LEDTEST:            NOP
                    RET
;*******************L_LEDTEST END*****************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;******************L_BEEPTEST***********************************
L_BEEPTEST:           NOP
                    RET
;***********************L_BEEPTEST  END**********************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;***********************L_KEYTEST******************************
L_KEYTEST:         MOV  LED1,#0
                 MOV  LED2,#0
                 MOV  LED3,#0
                 MOV  LED4,#0
                 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
                 AJMP L_KEYTEST
L_PLAYKEY1:      MOV  LED5,#0CH
                 LCALL L_KEYBEEP
                 LCALL L_PLAY5
                 AJMP  L_KEYTEST
L_PLAYKEY2:      MOV  LED5,#0B6H
                 LCALL L_KEYBEEP
                 LCALL L_PLAY5
                 AJMP  L_KEYTEST
L_PLAYKEY3:      MOV  LED5,#9EH
                 LCALL L_KEYBEEP
                 LCALL L_PLAY5
                 AJMP  L_KEYTEST
L_PLAYKEY4:      MOV  LED5,#0CCH
                 LCALL L_KEYBEEP
                 LCALL L_PLAY5
                 AJMP  L_KEYTEST
L_KEYBEEP:       CLR     P2.3
                 LCALL   L_DELAY2MS
                 SETB    P2.3
                 LCALL   L_DELAY2MS
L_PLAYKEYEND:        RET

;**********************L_KEYTEST END ****************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;********************L_ADTEST********************************
L_ADTEST:
                 MOV    R0,#ADH
L_AD1:           CLR    P2.0
                 CLR    P2.1
                 MOV    A,P1
                 SETB   P2.1
                 MOV    @R0,A
                 INC    R0
                 CLR    P2.2
                 MOV    A,P1
                 SETB   P2.2
                 SETB   P2.0
                 MOV    @R0,A
L_AD2:

                     RET
;*********************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:          ACALL 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***************************************
 ;*****************ZI-PROGRAM*****************************
 L_W_BETY:
                MOV R7,#8H
L_W_BETY1:      RLC A
                MOV SI,C
                CLR SCK
                SETB SCK
                DJNZ R7,L_W_BETY1
                RET
          ;*****************************
L_R_BETY:       MOV R7,#8H
L_R_BETY1:      SETB SCK
                CLR  SCK
                MOV C,SO
                RLC  A
                DJNZ R7,L_R_BETY1
                RET
;*******************END********************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;***************DELAY PROGRAM***************************
L_DELAY2MS:
                 MOV R7,#08H
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
 ;******************END********************************
 ;*************SEL PROGRAM***********************
sel1:              clr   p2.5
                   clr   p2.6
                   clr   p2.7
                   ret
sel2:              clr   p2.5
                   clr   p2.6
                   setb  p2.7
                   ret
sel3:              clr   p2.5
                   setb  p2.6
                   clr   p2.7
                   ret
sel4:              clr   p2.5
                   setb  p2.6
                   setb  p2.7
                   ret
sel5:              setb  p2.5
                   clr   p2.6
                   clr   p2.7
                   ret
sel7:              clr p2.7
                   setb p2.6
                   setb p2.5
                   ret
sel8:              setb p2.7
                   setb p2.6
                   setb p2.5

                   ret
 ;************************END******************************
;************************ KEY_TEST0**********************
KEY_TEST0:        LCALL   L_TESTKEY0
                   ACALL   CHULITESTKEY
                   RET
;************************ KEY_TEST2**********************
KEY_TEST2:        LCALL   L_TESTKEY2
                   ACALL   CHULITESTKEY
                   RET
;************************ KEY_TEST1**********************
KEY_TEST1:        LCALL   L_TESTKEY1
                   ACALL   CHULITESTKEY
                   RET
 ;***********************KEY TEST***********************
 KEY_TEST:
                   LCALL   L_TESTKEY
CHULITESTKEY:      ANL    A,#0FH
KEY_TEST9:         JNB    ACC.0,KEY_TEST01
                   JNB    ACC.1,KEY_TEST02
                   JNB    ACC.2,KEY_TEST03
                   JNB    ACC.3,KEY_TEST04
                   AJMP   KEY_TEST
KEY_TEST01:         MOV A,#1H
                   RET
KEY_TEST02:         MOV A,#2H
                   RET
KEY_TEST03:         MOV A,#3H
                   RET
KEY_TEST04:         MOV A,#4H
                    RET

;************************END**************************************
;************************L_PLAY5__************************************
L_PLAY5__:
                MOV LED1,#80H
                MOV LED2,#80H
                MOV LED3,#80H
                MOV LED4,#80H
                MOV LED5,#80H
L_PLAY5LED:     ACALL L_PLAY1
                ACALL L_DELAY2MS
                ACALL L_PLAY2
                ACALL L_DELAY2MS
                ACALL L_PLAY3
                ACALL L_DELAY2MS
                ACALL L_PLAY4
                ACALL L_DELAY2MS
                ACALL L_PLAY5
                ACALL L_DELAY2MS
                RET
;***********************END********************************************
L_TAB:
        DB 7EH,0CH,0B6H,9EH,0CCH,0DAH,0FAH,0EH
        DB 0FEH,0DEH,0EEH,0F8H,74H,0BCH,0F2H,0E2H
 ;**************************************************************

⌨️ 快捷键说明

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