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

📄 test56.asm

📁 4channel 语音播放程序 26个字母播放. 4x12 小扫描按键
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        caje    #0100b  @@scan6_back
        jmp     @@scan7_back
endif
;;******* trigger scan routine ok*****************

ifdef	mrx_3
@@trig_scan_3:
	page6
        mov     a       p3state         ;;clear P3
        mov     p3      a               ;;
        mov     a       p2state
        page3
        or      a       keyid
        mov     p2      a
        mov     a       mrx_3
        mov     p2s     a
        mov     a       #1111b
        mov     p2s     a
        mov     a       keyid
        caje    #0001b  @@scan8_back
        caje    #0010b  @@scan9_back
        caje    #0100b  @@scan10_back
        jmp     @@scan11_back
endif
;;***********************************************************
ifdef  mrx_4 
@@trig_scan_4:
        page6
        mov     a       p2state         ;;clear P2
        mov     p2      a               ;;
        mov     a       p3state
        page3
        or      a       keyid
        mov     p3      a
        mov     a       mrx_4
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       keyid
        caje    #0001b  @@scan12_back
        caje    #0010b  @@scan13_back
        caje    #0100b  @@scan14_back
        jmp     @@scan15_back
endif
;;**************************************************************


        
;;====================================================================
@@trig_chk:
        caje    #0000b  @@clr_debounce
	page1
	mov     scanP1  a                       ;m15:trigger change condition
	page3
	mov	a	#1000b
	and	a	debocr
	caje	#1000b	@@ScanKey_bk
        mov     a       #1000b                  ;m14.3=1,debounce
        or      a       debocr
        and	a	#1110b			;clr power down scan key flag
        mov     debocr  a
	mov	deboc_count	#0		;clear debounce counter
	page2
	mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a
	jmp     @@ScanKey_bk        
        
        
@@clr_debounce:
	page3
        mov     a       debocr			;clear key press
        and     a       #0111b
        mov     debocr  a
	mov	deboc_count	#0
	
	mov     a       mrx
        caje    #1111b  @@chk_direct_key
        

ifdef   mrx_2
	page2
	mov	a	skblock
	caje	#0001b	@@change_Scan_block2
ifdef   mrx_3
	caje	#0010b	@@change_Scan_block3
ifdef   mrx_4
	caje	#0011b	@@change_Scan_block4
endif	
endif
endif

ifdef	@_key_type_@
	page2
	mov	a	skblock
	caje	#0100b	@@change_Scan_Mixkey
endif	

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  block1======================================
;;===============================================
	page3
        mov      a       keyid
        caje	#0001b 	@@change_scanP21
	caje	#0010b	@@change_scanP22
	caje	#0100b	@@change_scanP23

ifdef   mrx_2
	page2
	mov	skblock	#0001b	
	page3
	mov	keyid	#0001b
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	
	
	jmp     @@ScanKey_bk
endif		
ifdef	@_key_type_@
	
	page3
	mov	keyid	#0101b
	page2
	mov	skblock	#0100b	
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	
	jmp     @@ScanKey_bk
endif
	page2
	mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a
	
	
	page3
	mov	keyid	#0001b
	jmp     @@ScanKey_bk
	
@@change_scanP21:	
	;mov	a	#0010b
	mov	keyid	#0010b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	jmp     @@ScanKey_bk
	
@@change_scanP22:	
	;mov	a	#0100b
	mov	keyid	#0100b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	jmp     @@ScanKey_bk	

@@change_scanP23:	
	;mov	a	#1000b
	mov	keyid	#1000b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	jmp     @@ScanKey_bk	     
;;=====================================================   
;;;  block2      ======================================
;;=====================================================     
ifdef   mrx_2        
@@change_Scan_block2:      
        page3
        mov     a	keyid
        
        caje	#0001b	@@change_scanP31 	
	caje	#0010b	@@change_scanP32
	caje	#0100b	@@change_scanP33
ifdef   mrx_3
	page3	
	mov	keyid	#0001b
	page2
	mov	skblock	#0010b		;set scan block3
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	jmp     @@ScanKey_bk  
endif

ifdef	@_key_type_@
	page3
	mov	keyid	#0101b
	page2
	mov	skblock	#0100b
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	jmp     @@ScanKey_bk
endif
	page3
	mov	keyid	#0001b
	page2
	mov	skblock	#0000b		  	
        mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag 	a
	jmp     @@ScanKey_bk  
	
@@change_scanP31:	
	mov	keyid	#0010b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP32:	
	mov	keyid	#0100b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP33:	
	mov	keyid	#1000b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk                
endif        
;;*************************************************
;;;  block3  ======================================
;;=================================================
ifdef   mrx_3        
@@change_Scan_block3:        
        page3
        mov     a	keyid
        caje	#0001b	@@change_scanP21P6 	
	caje	#0010b	@@change_scanP22P6
	caje	#0100b	@@change_scanP23P6
ifdef   mrx_4
	
	page3
	mov	keyid	#0001b
	page2
	mov	skblock	#0011b		;set scan block3
	
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
	
	jmp     @@ScanKey_bk  
endif
	page2
	mov	skblock	#0000b	
	
	mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a	  	
        
        page3
	mov	keyid	#0001b
	jmp     @@ScanKey_bk  
	
@@change_scanP21P6:	
	mov	keyid	#0010b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP22P6:	
	mov	keyid	#0100b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP23P6:	
	mov	keyid	#1000b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk                
endif        
;;*************************************************
;;;  block4  ======================================
;;=================================================
ifdef   mrx_4        
@@change_Scan_block4:        
        page3
        mov     a	keyid
        caje	#0001b	@@change_scanP31P6 	
	caje	#0010b	@@change_scanP32P6
	caje	#0100b	@@change_scanP33P6

	page2
	mov	skblock	#0000b		  	
       	mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a
        page3
	mov	keyid	#0001b
	jmp     @@ScanKey_bk  
;endif	
@@change_scanP31P6:	
	mov	keyid	#0010b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP32P6:	
	mov	keyid	#0100b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@change_scanP33P6:	
	mov	keyid	#1000b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk                
endif        
;;*****************************************************
ifdef	@_key_type_@
@@change_Scan_Mixkey:
	page3
        mov     a	keyid
        caje	#0101b	@@change_mixP3 	
	caje	#0011b	@@change_mixP6
	
	page2
	mov	skblock	#0000b		  	
        mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a
        page3
	mov	keyid	#0001b
	jmp     @@ScanKey_bk  
	
@@change_mixP3:
	mov	keyid	#0011b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk	
        
@@change_mixP6:	
	mov	keyid	#0110b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
endif	
	

;;---------------------------------------------------------------
@@chk_direct_key:
	page3
        mov     a       keyid
	caje    #0001b  @@changeP2
        caje    #0010b  @@changeP3
        caje    #0100b  @@changeP6    
        
        mov	keyid	#0001b
        
        page2
	mov	a	delay_flag
	and	a	#0111b
	mov	delay_flag	a
        jmp     @@ScanKey_bk 
@@changeP2:
	mov	keyid	#0010b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@changeP3:
	mov	keyid	#0100b
	page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
@@changeP6:        
        mov	keyid	#1000b
        page2
	mov	a	delay_flag
	and	a	#1000b
	caje	#1000b 	scankey
        jmp     @@ScanKey_bk
;;*****************************************************************        
            
@@Check_Debounce:
	page3
        mov     a       deboc_count
        caje    deboc	@@tr_cg_ok     
     	jmp	@@Check_bounce_back
    	
;;===============================================================     

@@tr_cg_ok:     
     	page3
        mov     a       debocr                  ;; deboc.2 -> 8mS
        and     a       #0111b                  ;;clr bounce flag
        mov     debocr  a
	mov	deboc_count	#0		;clear debounce counter
	page1
        mov     a       #0001b
        and     a       scanP1
        caje    #0001b  @@p1ok
        mov     a       #0010b
        and     a       scanP1
        caje    #0010b  @@p1ok
        mov     a       #0100b
        and     a       scanP1
        caje    #0100b  @@p1ok
        mov     a       #1000b
@@p1ok: 
	mov     scanP1  a

ifdef   mrx_2
	page2
        mov     a       skblock
        caje    #0001b  @@tr_cg_ok_2
ifdef	mrx_3
	caje	#0010b 	@@tr_cg_ok_3
ifdef	mrx_4
	caje	#0011b 	@@tr_cg_ok_4        
endif
endif
endif
ifdef	@_key_type_@
	page2
        mov     a       skblock
        caje    #0100b  @@tr_cg_ok_mixkey
endif
	
@@tr_cg_ok_1:	
	page3
        mov     a       keyid
	page1
        caje    #0001b  @@update_mrx_0
        caje    #0010b  @@update_mrx_1
        caje    #0100b  @@update_mrx_2
@@update_mrx_3:
        mov     a       tr13_16
        xor     a       scanP1
        mov     tr13_16 a
        jmp     @@change
@@update_mrx_2:
        mov     a       tr9_12
        xor     a       scanP1
        mov     tr9_12  a
        jmp     @@change
@@update_mrx_1:
        mov     a       tr5_8
        xor     a       scanP1
        mov     tr5_8   a
        jmp     @@change
@@update_mrx_0:
        mov     a       tr1_4
        xor     a       scanP1
        mov     tr1_4   a
;;====================================

⌨️ 快捷键说明

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