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

📄 demo_key.asm

📁 这是我写的一个超强的键盘程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        MOVC A,@A+DPTR 
        MOV P0,A
        INC R3
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        CJNE R3,#11H,M82
        MOV P2,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD8
;---------P9 LED_DEMO1------------------ 
  MOD9: MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
    M91:MOV A,#0EFH
        MOV R0,#08H
    M92:MOV P1,A
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        RL A
        DJNZ R0,M92
        JMP M91
;---------P10 LED_DEMO2----------------        
  MOD10:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
    MA1:MOV A,#7FH
        MOV R0,#08H
    MA2:MOV P1,A
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        RR A
        DJNZ R0,MA2
        JMP MA1
;---------P11 LED_DEMO3----------  
  MOD11:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0e7h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0dbH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0bdh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#7eH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#7eh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0bdH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#0dbh
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0e7H
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        MOV P1,#0FFH
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        mov p1,#00h
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JMP MOD11
;----------P12 KEY_DEMO------------  
  MOD12:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
   m12: lcall key_r   
        cjne a,#00h,bp
        setb p2.7
        jmp m12
   bp:  clr p2.7 
        lcall  delay
        jmp m12
;----------P13 ADD_DEMO---------
  MOD13:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#00H
   M131:MOV A,R0
        PUSH ACC
        ANL A,#0F0H
        SWAP A
        MOV DPTR,#LED_CODE
        MOVC A,@A+DPTR
        MOV P0,A
        POP ACC
        ANL A,#0FH
        MOVC A,@A+DPTR
        MOV P2,A
   M132:JB P3.0,$
        LCALL DELAY
        JB P3.0,M132
        JNB P1.0,$
        INC R0
        JMP M131
;---------P14 DEC_DEMO-----------        
  MOD14:MOV A,MD
        LCALL DISP0
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        JB P3.0,$
        MOV R0,#0FFH
   M141:MOV A,R0
        PUSH ACC
        ANL A,#0F0H
        SWAP A
        MOV DPTR,#LED_CODE
        MOVC A,@A+DPTR
        MOV P0,A
        POP ACC
        ANL A,#0FH
        MOVC A,@A+DPTR
        MOV P2,A
   M142:JB P3.0,$
        LCALL DELAY
        JB P3.0,M142
        JNB P3.0,$
        DEC R0
        JMP M141
;---------P15,key_DEMO----------- 
 MOD15:;MOV A,MD
	;LCALL DISP0
	;MOV P0,#0FFH
      
      
      setb rs1
      clr rs0
	LCALL DELAa
	MOV SND_BUF,#10100100B    ;7289清除指令
	LCALL  SEND
	SETB CS
	MOV  SND_BUF,#10111111B   ;测试LED
	LCALL  SEND
	SETB CS
	LCALL DELAa
      MOV SND_BUF,#10100100B    ;7289清除指令
	LCALL  SEND
	SETB CS
      MOV R0,#00H
      MOV R1,#8                 ;8-1位显示'7-0'
      MOV SND_BUF,#11001000B
DIS7_0:MOV  R7,SND_BUF
	LCALL   SEND
      INC R7
      MOV SND_BUF,R0
      LCALL SEND
	INC R0
      MOV SND_BUF,R7
      DJNZ R1,DIS7_0
	SETB CS
	LCALL DELAa
      MOV R0,#08H
      MOV R1,#8                 ;8-1位显示'F-8'
      MOV SND_BUF,#11001000B
DISF_8:MOV  R7,SND_BUF
	LCALL   SEND
      INC R7
      MOV SND_BUF,R0
      LCALL SEND
	INC R0
      MOV SND_BUF,R7
      DJNZ R1,DISF_8
	SETB CS
	LCALL DELAa
      SETB ET0
      MOV TH0,#00H
      MOV TL0,#0FH
      ;SETB TR0
K_DEMO:JB KEY,$             ;键盘演示,读键
       MOV  SND_BUF,#00010101B   ;读键值
	LCALL SEND
	LCALL RECIV
	SETB CS

	MOV SND_BUF,#10100100B    ;清屏指令
	LCALL  SEND
	SETB CS
	MOV SND_BUF,#10010111B    ;D8显示‘P’
	LCALL  SEND
	MOV  SND_BUF,#01100111B   ;'P'
	LCALL  SEND
	SETB   CS
	MOV SND_BUF,#10001000B    ;‘P’闪烁
	LCALL  SEND
	MOV  SND_BUF,#01111111B    
	LCALL  SEND
	SETB   CS
     	MOV SND_BUF,#10010000B    ;D1显示‘H.’
	LCALL  SEND
	MOV  SND_BUF,#10110111B   ;'H.'
	LCALL  SEND
	SETB   CS
	MOV SND_BUF,#11001001B    ;D2显示键值低半位
	LCALL  SEND
	MOV SND_BUF,REC_BUF
	LCALL SEND
	SETB CS
	MOV SND_BUF,#11001010B    ;D3显示键值高半位
	LCALL  SEND
	MOV  A,REC_BUF
	ANL A,#0F0H
	SWAP A
	MOV SND_BUF,A
	LCALL SEND
	SETB CS
	JNB KEY,$
      AJMP K_DEMO





SEND: MOV  BIT_N,#8
	CLR CS
	LCALL   DEL50
S_LP:	MOV A,SND_BUF
	RLC  A
	MOV  SND_BUF,A
	MOV DIO,C
	NOP
	NOP
	SETB CLK
	LCALL   DEL10
	CLR  CLK
	LCALL  DEL10
	DJNZ   BIT_N,S_LP	
	CLR   DIO
	RET

RECIV:MOV  BIT_N,#8
	SETB  DIO
R_LP:	SETB CLK
	LCALL DEL10
	MOV C,DIO
	MOV A,REC_BUF
	RLC  A
	MOV  REC_BUF,A
	CLR  CLK
	LCALL DEL10
	DJNZ   BIT_N,R_LP
	CLR DIO
	RET
DEL50:MOV DEL,#50
	DJNZ DEL,$
	RET
DEL10:MOV DEL,#10
	DJNZ DEL,$
	RET
	

DELAa:MOV 4AH,#20
DEL1S:MOV 4BH,#0FFH
 D1S1:MOV 4CH,#0FFH
      DJNZ 4CH,$
      DJNZ 4BH,D1S1
	DJNZ 4AH,DEL1S
	RET

;---------timer0------------
TIMER0:mov th0,#00h
      mov tl0,#0fh
      push acc
      push psw
      setb rs0
      setb rs1
      inc R3
      cjne R3,#30,end_t0
      MOV R3,#00H
      INC R0
      MOV P1,R0
      CJNE R0,#15,DIP
      MOV R0,#00H
DIP:  MOV R1,#8                 ;8-0位显示'f-0'
      MOV SND_BUF,#11001000B
DISF_0:PUSH SND_BUF
	LCALL   SEND
      MOV SND_BUF,R0
      LCALL SEND
	POP SND_BUF
      MOV A,SND_BUF
      INC A
      MOV SND_BUF,A
      DJNZ R1,DISF_0
	SETB CS
end_t0:pop psw
       pop acc
       reti
 
 ;----------------rx----------
 rx_int: push acc
        push psw
        jnb ri,end_rx
        clr ri
        mov a,sbuf
        mov sbuf,a
        jnb ti,$
        clr ti
end_rx: pop psw
        pop acc
        reti      
 DISP0: PUSH ACC
        MOV P0,#8CH            ;"P"   
        MOV DPTR,#LED_CODE
        MOVC A,@A+DPTR
        MOV P2,A
        POP ACC
        RET
 DISP1:;DA A
       PUSH ACC
       ANL A,#0FH
       MOV DPTR,#LED_CODE
       MOVC A,@A+DPTR
       MOV P2,A
       POP ACC
       ANL A,#0F0H
       SWAP A
       MOVC A,@A+DPTR
       MOV P0,A
       RET       
 DELay: MOV 3ah,#0F0H
   DL1: MOV 3bh,#0F0H
        DJNZ 3bh,$
        DJNZ 3ah,DL1
        RET
;--------------------------------------------
 KEY_r: MOV A,P3             ;jianpian
        ANL A,#0FH
        MOV KEY_NUM,A
        LCALL DELAY
        MOV A,P3
        ANL A,#0FH
        CJNE A,KEY_NUM,KEY_r
        CPL A
        ANL A,#0FH
        MOV KEY_NUM,A
        RET
        
        
        ORG 0A00H 
LED_CODE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H     ;"0-F"
        DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH           
        
        END

⌨️ 快捷键说明

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