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

📄 keypad.asm

📁 程序为达盛实验箱所带
💻 ASM
字号:
; *****************************************************************************    
; 文件名:	keyboard.asm 
	;.mmregs
	.global _InitC5402 
	.global _WRITE_READ_keyboard
	.include MMRegs_sdt.h
_InitC5402:
	NOP
	LD #0, DP ; reset data–page pointer
	STM #0, CLKMD ; software setting of DSP clock
	STM #0, CLKMD ; (to divider mode before setting)	
;	STM #0x1007, CLKMD  ; set C5402 DSP clock to 20MHz=10MHzx2	
 STM #0x4007, CLKMD	; set C5402 DSP clock to 50MHz=10MHzx5	
* STM #0x9007, CLKMD    ; set C5402 DSP clock to 100MHz
; (based on DSK crystal at 10MHz)
******* Configure C5402 System Registers *******
	STM #0x2000, SWWSR ; 2 wait cycle for IO space &
; 0 wait cycle for data&prog spaces
	STM #0x0000,BSCR ; set wait states for bank switch:
; 64k mem bank, extra 0 cycle between
; consecutive prog/data read
	STM #0x1800,ST0 ; ST0 at default setting
	STM #0x2900,ST1 ; ST1 at default setting(note:INTX=1)
;	STM #0x3fe1,PMST	; MP/MC=0 mode & OVLY=1, vectors at FF80h
	STM #0x00A0,PMST ; MC mode & OVLY=1, vectors at 0080h
******* Set up Timer Control Registers *******
	STM #0x0010, TCR ; stop on–chip timer0
	STM #0x0010, TCR1 ; stop on–chip timer1
; Timer0 is used as main loop timer
;	STM #2499, PRD ; timer0 rate=CPUCLK/1/(PRD+1)
; =40M/2500=16KHz
* STM #6249, PRD ; if CPU at 100M/6250=16KHz  	
******* Finish DSP Initialization *******
	STM #0x0000, IMR ; disable peripheral interrupts
	STM #0xFFFF, IFR ; clear the intrupts’ flag
	;STM 2000H,SP
	RET ; return to main
	NOP
	NOP
***************************************************************************** 	
BIT_keyboard_c0:
	nop
	BIT *ar3, 15-0; test bit 15
	nop
	nop
	nop
	bc c0_r0,ntc
c0_r0_return:
	BIT *ar3, 15-1; test bit 14
	nop
	nop
	nop
	bc c0_r1,ntc
c0_r1_return:	
	BIT *ar3, 15-2; test bit 13
	nop
	nop
	nop
	bc c0_r2,ntc
c0_r2_return:
	BIT *ar3, 15-3; test bit 12
	nop
	nop
	nop
	bc c0_r3,ntc
c0_r3_return:	
	ret  
*****************************************************************************
BIT_keyboard_c1:
	nop
	nop
	BIT *ar3, 15-0; test bit 15
	nop
	nop
	NOP
	bc c1_r0,ntc
c1_r0_return:
	BIT *ar3, 15-1; test bit 14
	nop
	nop
	NOP
	bc c1_r1,ntc	
c1_r1_return:
	BIT *ar3, 15-2; test bit 13
	nop
	nop
	NOP
	bc c1_r2,ntc	
c1_r2_return:
	BIT *ar3, 15-3; test bit 12
	nop
	nop
	NOP
	bc c1_r3,ntc	
c1_r3_return:
	ret  
*****************************************************************************
BIT_keyboard_c2:
	nop
	nop
	BIT *ar3, 15-0; test bit 15
	nop
	nop
	NOP
	bc c2_r0,ntc	
c2_r0_return:
	BIT *ar3, 15-1; test bit 14
	nop
	nop
	NOP
	bc c2_r1,ntc	
c2_r1_return:
	BIT *ar3, 15-2; test bit 13
	nop
	nop
	NOP
	bc c2_r2,ntc	
c2_r2_return:
	BIT *ar3, 15-3; test bit 12
	nop
	nop
	NOP
	bc c2_r3,ntc	
c2_r3_return:
	ret  
*****************************************************************************
BIT_keyboard_c3:
	nop
	nop
	BIT *ar3, 15-0; test bit 15
	nop
	nop
	NOP
	bc c3_r0,ntc	
c3_r0_return:
	BIT *ar3, 15-1; test bit 14
	nop
	nop
	NOP
	bc c3_r1,ntc	
c3_r1_return:
	BIT *ar3, 15-2; test bit 13
	nop
	nop
	NOP
	bc c3_r2,ntc	
c3_r2_return:
	BIT *ar3, 15-3; test bit 12
	nop
	nop
	NOP
	bc c3_r3,ntc	
c3_r3_return:
	ret  
*****************************************************************************	
c0_r0: 
	nop
	nop
	st	#0000h,*ar2    ;key 0
	nop
	nop
	b c0_r0_return	
c0_r1:
	nop
	nop
	st	#0001h,*ar2    ;key 1
	nop
	nop
	b c0_r1_return	
c0_r2:
	nop
	nop
	st	#0002h,*ar2    ;key 2
	nop
	nop
	b c0_r2_return 
c0_r3:
	nop
	nop
	st	#0003h,*ar2    ;key 3
	nop
	nop
	b c0_r3_return
c1_r0: 
	nop
	nop
	st	#0004h,*ar2    ;key 4
	nop
	nop
	b c1_r0_return	
c1_r1:
	nop
	nop
	st	#0005h,*ar2    ;key 5
	nop
	nop
	b c1_r1_return
c1_r2:
	nop
	nop
	st	#0006h,*ar2    ;key 6
	nop
	nop
	b c1_r2_return	 
c1_r3:
	nop
	nop
	st	#0007h,*ar2    ;key 7
	nop
	nop
	b c1_r3_return
c2_r0: 
	nop
	nop
	st	#0008h,*ar2    ;key 8
	nop
	nop
	b c2_r0_return
c2_r1:
	nop
	nop
	st	#0009h,*ar2    ;key 9
	nop
	nop
	b c2_r1_return	
c2_r2:
	nop
	nop
	st	#000ah,*ar2    ;key a
	nop
	nop
	b c2_r2_return 
c2_r3:
	nop
	nop
	st	#000bh,*ar2    ;key b
	nop
	nop
	b c2_r3_return
c3_r0: 
	nop
	nop
	st	#000ch,*ar2    ;key c
	nop
	nop
	b c3_r0_return	
c3_r1:
	nop
	nop
	st	#000dh,*ar2    ;key d
	nop
	nop
	b c3_r1_return
c3_r2:
	nop
	nop
	st	#000eh,*ar2    ;key e
	nop
	nop
	b c3_r2_return 
c3_r3:
	nop
	nop
	st	#000fh,*ar2    ;key f
	nop
	nop
	b c3_r3_return
*****************************************************************************	
_WRITE_READ_keyboard:
	nop
	nop
	stm  1000h,ar0
	stm  1001h,ar3
	stm  1002h,ar2    ;key value in 1002h
	NOP
	NOP
	st   #000eh,*ar0
	NOP
	NOP
	NOP
	portw	*ar0,0006H
	nop
	nop
	nop
	portr	0004H,*ar3 
	NOP
	NOP
	NOP
	call BIT_keyboard_c0
	NOP
	NOP
	st   #000dh,*ar0
	NOP
	NOP
	NOP
	portw	*ar0,0006H
	nop
	nop
	nop
	portr	0004H,*ar3
	NOP
	NOP
	NOP 
	call BIT_keyboard_c1
	NOP
	NOP
	st   #000bh,*ar0
	NOP
	NOP
	NOP
	portw	*ar0,0006H
	nop
	nop
	nop
	portr	0004H,*ar3 
	NOP
	NOP
	NOP
	call BIT_keyboard_c2
	NOP
	NOP
	
	st   #0007h,*ar0
	NOP
	NOP
	NOP
	portw	*ar0,0006H
	nop
	nop
	nop
	portr	0004H,*ar3 
	NOP
	NOP
	NOP
	call BIT_keyboard_c3
	NOP
	NOP
    ret
    nop
    nop
   .end	
	
     
	

⌨️ 快捷键说明

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