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

📄 timer_oper.asm

📁 holtek mouse .asm firewave
💻 ASM
字号:
INCLUDE	REG_DEF.INC


PUBLIC		INIT_TIMER

TIMER_CODE	.SECTION	'CODE'

INIT_TIMER:
		MOV		A, 080H
		MOV		TMRC, A

		MOV		A, 105
		MOV		TMR, A

		MOV		A,005H
		MOV		INTC, A

		CLR		TIMER_COUNT

		RET

TIMER_ISR:
		MOV		TIMER_ACC, A

		INC		TIMER_COUNT	; 100 USEC


		SZ		TIMER_COUNT.0
		JMP		NOT_Z_CHECK

		RL		BS
		CLR		BS.0
		RL		FS
		CLR		FS.0

		SZ		WHEEL_BACK	; FORWARD BUT
		SET		BS.0		; F_but_STATE
		SZ		WHEEL_FORW;BACK_BUT	; BACK BUT
		SET		FS.0		; B_but_STATE

		MOV		A, 0FFH
		XOR		A, BS
		SZ		ACC
		JMP		IF_BS_ALL_ZERO
						;==============================
		SET		Z_TEMP.0	; BS bits ALL 1s, 
		SET		STABLE.0	; and BS STABLE
						;==============================
	IF_BS_ALL_ZERO:
		CLR		ACC
		XOR		A, BS
		SZ		ACC
		JMP		IF_FS_ALL_ONE
						;===============================
		CLR		Z_TEMP.0	; BS bits ALL 0s,
		SET		STABLE.0	; and BS STABLE
						;===============================
	IF_FS_ALL_ONE:
		MOV		A, 0FFH
		XOR		A, FS
		SZ		ACC
		JMP		IF_FS_ALL_ZERO
						;================================
		SET		Z_TEMP.1	; FS bits ALL 1s,
		SET		STABLE.1	; and FS STABLE
						;================================
	IF_FS_ALL_ZERO:
		CLR		ACC
		XOR		A, FS
		SZ		ACC
		JMP		IF_STABLE
						;=================================
		CLR		Z_TEMP.1	; FS bits ALL 0s,
		SET		STABLE.1	; and FS STABLE
						;=================================
	IF_STABLE:
		MOV		A, 3		;=================================
		XOR		A, STABLE	; Z_TEMP: 0000 00XX
		SZ		ACC		;		 ||
		JMP		NOT_Z_CHECK	;		 |FS
						;		 BS
	;==== BELOW : CHECK WHEN STABLE	
	NOT_UPDATE_OLDZ:			; STABLE: 0000 00XX
		MOV		A, OLD_Z	;		 ||
		RL		ACC		;		 |FS
		RL		ACC		;		 BS
		OR		A, Z_TEMP	;==================================
		MOV		Z_COMBINE, A
						;==================================
		MOV		A, 1		; Z_COMBINE : 0000 XXXX
		XOR		A, Z_COMBINE	;		   ||||
		SZ		ACC		;		   |||FS
		JMP		CHECK_E		;		   ||BS
						;		   |OLD_FS
		JMP		Z_UP		;		   OLD_BS
						;===================================
	CHECK_E:
		MOV		A, 00EH		; 0000 1110 <-- Z_UP
		XOR		A, Z_COMBINE
		SZ		ACC
		JMP		CHECK_2

		JMP		Z_UP

	CHECK_2:
		MOV		A, 002H		; 0000 0010 <-- Z_DN
		XOR		A, Z_COMBINE
		SZ		ACC
		JMP		CHECK_D

		JMP		Z_DN

	CHECK_D:
		MOV		A, 00DH		; 0000 1101 <-- Z_DN
		XOR		A, Z_COMBINE
		SZ		ACC
		JMP		ALREADY_Z_CHECK

	Z_DN:
		SET		Z_WHEEL
		SET		MOVEMENT.1

		JMP		ALREADY_Z_CHECK		

	Z_UP:
		SET		Z_WHEEL.0
		SET		MOVEMENT.1

	ALREADY_Z_CHECK:			;===================================
		CLR		OLD_Z		; MOVE OLD_Z <-- Z_TEMP
		
		SZ		Z_TEMP.0	; OLD_Z = 0000 00XX
		SET		OLD_Z.0
		SZ		Z_TEMP.1
		SET		OLD_Z.1		;====================================
						
	NOT_Z_CHECK:				;========================================
		MOV		A, TIMER_ACC	; NOT STABLE or NOT ODD TIMER_ISR
		JMP		EXIT_TIMER_ISR	; DO NOTHING
						;========================================

TIMER_VECTOR	.SECTION AT 0008H	'CODE'

		JMP		TIMER_ISR
	EXIT_TIMER_ISR:
		RETI
		

⌨️ 快捷键说明

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