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

📄 zmd.asm

📁 用汇编语言编程
💻 ASM
📖 第 1 页 / 共 2 页
字号:
SI_1	EQU	33H
SI_2	EQU	34H
SI_3	EQU	35H
SI_4	EQU	36H

;定义键状态寄存位
keystate    bit      7fh;有键时为1,无键时为0
	  					
ORG 	0000H
ajmp     main
org       0030h

MAIN:   mov     sp,#60H
        clr     keystate
        
main1: 
		LJMP  KEY
;		jnb      keystate,mainend

mainend:ajmp     main

;------------------------------------------------------KEY------------------------------------------

;键盘子程序:
KEY:    lcall  keytest
        jnb    keystate,kkk
		ajmp    eee
 kkk:   ajmp   keyend
 eee:	
      mov    a,#01h
		mov    dptr,#8fffh
		movx   @dptr,a
		movx   a,@dptr
		anl    a,#0fh
key0:	cjne   a,#01h,key1
      LJMP   DISPLAY1
key1:   cjne   a,#02h,key2
      LJMP DISPLAY2
key2:   cjne   a,#04h,key3
      LJMP DISPLAY3
key3:   cjne   a,#08h,keynext1
      LJMP DISPLAY4
keynext1:mov    a,#02h
		mov    dptr,#8fffh
		movx   @dptr,a
		movx   a,@dptr
		anl    a,#0fh
key4:	cjne   a,#01h,key5		
		LJMP DISPLAY5
key5:   cjne   a,#02h,key6
		LJMP DISPLAY6
key6:   cjne   a,#04h,key7
		LJMP DISPLAY7
key7:   cjne   a,#08h,keynext2
		LJMP DISPLAY8
keynext2:mov    a,#04h
		mov    dptr,#8fffh
		movx   @dptr,a
		movx   a,@dptr
		anl    a,#0fh
key8:	cjne   a,#01h,key9
      LJMP DISPLAY9
key9:   cjne   a,#02h,keyA
      LJMP DISPLAYA
keyA:   cjne   a,#04h,keyB
      LJMP DISPLAYB
keyB:   cjne   a,#08h,keynext3
      LJMP DISPLAYC 
keynext3:mov    a,#08h
		mov    dptr,#8fffh
		movx   @dptr,a
		movx   a,@dptr
		anl    a,#0fh
keyC:	cjne   a,#01h,keyD
      LJMP DISPLAYD
keyD:   cjne   a,#02h,keyE
      LJMP DISPLAYE
keyE:   cjne   a,#04h,keyF
      LJMP DISPLAYF
keyF:   cjne   a,#08h,keynext4
      LJMP DISPLAYG
keynext4:
clr   keystate	

keyend:  LJMP   DISPLAY0
ret
			

;键盘测试程序,返回结果在keystate中
keytest:  mov   a,#0ffh
          mov   dptr,#8fffh
		  movx  @dptr,a
		  movx  a,@dptr
		  anl   a,#0fh
		  jz    keytest0
		  setb  keystate
		  jmp   keytest1
keytest0: clr   keystate
keytest1: ret
;--------------------------------------------------------------KEY结束---------------------------------------------

;-------------------------------------------------------NOKEY时的花样------------------------------------------

;--------------------DISPLAY0----------------------
SHOW:
	MOV R2,#150
SH01:	MOV R4,#0
SH00:	MOV A,R5
	ADD A,R4
	MOV DPTR,#TAB0
	MOVC A,@A+DPTR

   MOV DPTR,#8FFFH
	MOVX @DPTR,A

   MOV A,R4
	MOV DPTR,#DATA0
	MOVC A,@A+DPTR
	MOV DPTR,#9FFFH
	MOVX @DPTR,A
   
   CALL DELAY
	INC R4
	CJNE R4,#8,SH00
	DJNZ R2,SH01
   CLR keystate
	CALL keytest
	JB keystate,SHOWEND
RET
SHOWEND:LJMP MAIN

DISPLAY0:    
         MOV R5,#0
	  D00:CALL SHOW
         INC R5
	      CJNE R5,#7,D00
	CLR keystate
	CALL keytest
	JB keystate,DISPLAY0END
;   CALL DELAY0
   D01:CALL SHOW
	      INC R5
	      CJNE R5,#15,D01
  	CLR keystate
	CALL keytest
	JB keystate,DISPLAY0END 

JMP DISPLAY0
DISPLAY0END:  LJMP MAIN    


;--------------------------------------------------
TAB0:
	DB 0,0,0,0,0,0,0
	DB 01H,02H,04H,08H,10H,20H,40H,80H
	DB 0,0,0,0,0,0,0
DATA0:
   DB 0FH,80H,3FH,38H,38H,79H,76H,39H
;---------------------------------------------------------------------------------------------------------


;-------------------------------------------------------按01键时的花样------------------------------------------

;--------------------DISPLAY1----------------------
DISPLAY1:
	   MOV SI_2,#29H    ;#29H,控制TAB表中的移位
D12:	MOV SI_1,#50    ;#50,控制刷新次数,即停留在没一状态的时间
D11:	MOV SI_3,#08   ;#08控制每次显示的位数
D10:	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#TAB1
 	MOVC A,@A+DPTR

    MOV DPTR,#8FFFH
    MOVX @DPTR,A

	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#DATA1
	MOVC A,@A+DPTR
	MOV  R0,A


   MOV DPTR,#9FFFH
	MOVX @DPTR,A

   LCALL DELAY

   DJNZ SI_3,D10
	DJNZ SI_1,D11

	CALL keytest
	JB keystate,DISPLAY1END
 	DJNZ SI_2,D12
;RET
JMP  DISPLAY1
DISPLAY1END:  LJMP MAIN


;--------------------------------------------------
TAB1:
   DB 00H,00H,00H,00H
	DB 00H,00H,00H,00H
	DB 80H,80H,80H,80H
	DB 40H,40H,40H,40H
	DB 20H,20H,20H,20H
	DB 10H,10H,10H,10H
	DB 08H,08H,08H,08H
	DB 04H,04H,04H,04H
	DB 02H,02H,02H,02H
	DB 01H,01H,01H,01H
	DB 00H,00H,00H,00H
DATA1:
   DB 00H,00H,00H,00H
	DB 00H,00H,00H,00H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 10H,40H,04H,80H
	DB 00H,00H,00H,00H
;---------------------------------------------------------------------------------------------------------

;-------------------------------------------------------按02键时的花样------------------------------------------

;--------------------DISPLAY2----------------------
SHOW2:
	MOV R2,#150
SH21:	MOV R4,#0
SH20:	MOV A,R5
	ADD A,R4
	MOV DPTR,#TAB0
	MOVC A,@A+DPTR

   MOV DPTR,#8FFFH
	MOVX @DPTR,A

   MOV A,R4
	MOV DPTR,#DATA2
	MOVC A,@A+DPTR
	MOV DPTR,#9FFFH
	MOVX @DPTR,A
   
   CALL DELAY
	INC R4
	CJNE R4,#8,SH20
	DJNZ R2,SH21

   CLR keystate
	CALL keytest
	JB keystate,SHOW2END
RET
SHOW2END:LJMP MAIN

DISPLAY2:    
         MOV R5,#0
   
	 D20:CALL SHOW2
        INC R5
	     CJNE R5,#7,D20
	CLR keystate
	CALL keytest
	JB keystate,DISPLAY2END
   D21:CALL SHOW2
	      INC R5
	      CJNE R5,#15,D21
   CLR keystate
	CALL keytest
	JB keystate,DISPLAY2END
JMP DISPLAY2
DISPLAY2END:  LJMP MAIN    
;--------------------------------------------------
DATA2:
   DB 7DH,4FH,4FH,07H,6DH,3FH,4FH,3FH 
;---------------------------------------------------------------------------------------------------------



;-------------------------------------------------------按03键时的花样------------------------------------------

;--------------------DISPLAY1----------------------
DISPLAY3:
	   MOV SI_2,#120    ;#29H,控制TAB表中的移位
D32:	MOV SI_1,#50    ;#50,控制刷新次数,即停留在没一状态的时间
D31:	MOV SI_3,#08   ;#08控制每次显示的位数
D30:	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#TAB3
 	MOVC A,@A+DPTR

    MOV DPTR,#8FFFH
    MOVX @DPTR,A

	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#DATA3
	MOVC A,@A+DPTR
	MOV  R0,A


   MOV DPTR,#9FFFH
	MOVX @DPTR,A

   LCALL DELAY

   DJNZ SI_3,D30
	DJNZ SI_1,D31

	CALL keytest
	JB keystate,DISPLAY3END
 	DJNZ SI_2,D32
;RET
JMP  DISPLAY3
DISPLAY3END:  LJMP MAIN


;--------------------------------------------------
TAB3:
	DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
	DB 80H,80H,80H,80H,80H,80H
	DB 40H,40H,40H,40H,40H,40H
	DB 20H,20H,20H,20H,20H,20H
	DB 10H,10H,10H,10H,10H,10H
	DB 08H,08H,08H,08H,08H,08H
	DB 04H,04H,04H,04H,04H,04H
	DB 02H,02H,02H,02H,02H,02H
	DB 01H,01H,01H,01H,01H,01H
	DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
	DB 01H,01H,01H,01H,01H,01H
	DB 02H,02H,02H,02H,02H,02H
	DB 04H,04H,04H,04H,04H,04H
	DB 08H,08H,08H,08H,08H,08H
	DB 10H,10H,10H,10H,10H,10H
	DB 20H,20H,20H,20H,20H,20H
	DB 40H,40H,40H,40H,40H,40H
	DB 80H,80H,80H,80H,80H,80H
	DB 00H,00H,00H,00H,00H,00H,00H
DATA3:
	DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 10H,20H,01H,02H,04H,80H
	DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 80H,04H,02H,01H,20H,10H
	DB 00H,00H,00H,00H,00H,00H,00H
;---------------------------------------------------------------------------------------------------------

;-------------------------------------------------------按04键时的花样------------------------------------------
;--------------------DISPLAY4----------------------
DISPLAY4:
	   MOV SI_2,#19   ;#29H,控制TAB表中的移位
D42:	MOV SI_1,#100    ;#50,控制刷新次数,即停留在没一状态的时间
D41:	MOV SI_3,#03   ;#08控制每次显示的位数
D40:	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#TAB4
 	MOVC A,@A+DPTR

    MOV DPTR,#8FFFH
    MOVX @DPTR,A

	MOV A,SI_2
	ADD A,SI_3
	MOV DPTR,#DATA4
	MOVC A,@A+DPTR
	MOV  R0,A


   MOV DPTR,#9FFFH
	MOVX @DPTR,A

   LCALL DELAY2

   DJNZ SI_3,D40
	DJNZ SI_1,D41

	CALL keytest
	JB keystate,DISPLAY4END
 	DJNZ SI_2,D42
;RET
JMP  DISPLAY4
DISPLAY4END:  LJMP MAIN


;--------------------------------------------------
TAB4: DB 40H,80H,80H,80H,80H,40H,20H,10H,08H,04H,02H,01H,01H,01H,01H,02H,04H,08H,10H,20H,40H,80H,80H

DATA4:DB 48H,48H,50H,60H,41H,41H,41H,41H,41H,41H,41H,41H,42H,44H,48H,48H,48H,48H,48H,48H,48H,48H,50H

;---------------------------------------------------------------------------------------------------------

;-------------------------------------------------------按05键时的花样------------------------------------------

;--------------------DISPLAY5----------------------
DISPLAY5:

     	MOV	    R3,#01H
D50:	 MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

       MOV  DPTR,#9FFFH
       MOV      A,#01H
       MOVX	@DPTR,A     

	    LCALL   DELAY0

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY5END

       MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

       MOV  DPTR,#9FFFH
       MOV      A,#40H
       MOVX	@DPTR,A     

	    LCALL   DELAY0

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY5END


       MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

       MOV  DPTR,#9FFFH
       MOV      A,#08H
       MOVX	@DPTR,A     

	    LCALL   DELAY0
	
 	    MOV	A,R3
	    JB	ACC.7,DEND5

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY5END

     	MOV	A,R3
        RL	A
    	MOV	R3,A
	   AJMP	D50

DEND5:
JMP  DISPLAY5
DISPLAY5END:  LJMP MAIN
;---------------------------------------------------------------------------------------------------------



;-------------------------------------------------------按06键时的花样------------------------------------------

;--------------------DISPLAY6----------------------
DISPLAY6:

     	MOV	    R3,#80H
D60:	 MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

       MOV  DPTR,#9FFFH
       MOV      A,#63H
       MOVX	@DPTR,A     

	    LCALL   DELAY0

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY6END

       MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

       MOV  DPTR,#9FFFH
       MOV      A,#5CH
       MOVX	@DPTR,A     

	    LCALL   DELAY0
	
 	    MOV	A,R3
	    JB	ACC.0,DEND6

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY6END

     	MOV	A,R3
        RR	A
    	MOV	R3,A
	   AJMP	D60

DEND6:
JMP  DISPLAY6
DISPLAY6END:  LJMP MAIN
;---------------------------------------------------------------------------------------------------------


;-------------------------------------------------------按07键时的花样------------------------------------------

;--------------------DISPLAY7----------------------
DISPLAY7:
     	MOV	R3,#80H
		MOV   R0,#30H
      MOV  @R0,#00H
D70A:	 
      MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

	    MOV	A,@R0
	    MOV	DPTR,#DATA7
	    MOVC	A,@A+DPTR

	    MOV	DPTR,#9FFFH
	    MOVX	@DPTR,A    

	    LCALL   DELAY0
	
 	    MOV	A,R3
	    JB	ACC.0,D70B

		 CLR keystate
       CALL keytest
	    JB keystate,DISPLAY7END

      MOV	A,R3
     	RR	A
    	MOV	R3,A

		MOV A,@R0
		INC A
      INC	R0
		MOV @R0,A

	    AJMP	D70A

D70B:	 
      MOV   	A,R3
	    MOV 	DPTR,#8FFFH
	    MOVX 	@DPTR,A

	    MOV	A,@R0
	    MOV	DPTR,#DATA7
	    MOVC	A,@A+DPTR

	    MOV	DPTR,#9FFFH
	    MOVX	@DPTR,A    

	    LCALL   DELAY0
	
 	    MOV	A,R3
	    JB	ACC.7,DEND7

⌨️ 快捷键说明

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