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

📄 sysdef.inc

📁 基于HS108设计的红外水位检测仪
💻 INC
📖 第 1 页 / 共 5 页
字号:

		ior addr+3
		add a, @.B3.imm
		rlc pr1
		jbc pr1, 1
		add a, 1
		iow addr+3
	.ENDIF

	;IND
	.IF access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		add		a, @.B0.imm
		call	WriteIND

		rlc		pr1
		inc		pr0
		jbs		r3, zflag
		jmp		addmid_read1
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
addmid_read1:
		call	ReadIND
		add 	a, @.B1.imm
		rlc 	pr1
		jbc 	pr1, 1
		add 	a, 1
		call	WriteIND
		
		jbc r3, zflag
		bs  pr1, 0

		inc		pr0
		jbs		r3, zflag
		jmp		addmid_read2
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
addmid_read2:
		call	ReadIND
		add 	a, @.B2.imm
		rlc 	pr1
		jbc 	pr1, 1
		add 	a, 1
		call	WriteIND

		jbc r3, zflag
		bs  pr1, 0

		inc		pr0
		jbs		r3, zflag
		jmp		addmid_read3
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
addmid_read3:
		call	ReadIND
		add 	a, @.B3.imm
		rlc 	pr1
		jbc 	pr1, 1
		add 	a, 1
		call	WriteIND
	.ENDIF
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	SUBMIB addr,imm,access
	;RAM
	.IF access = 0
		mov	a, @imm
		sub	addr, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		sub	a, @imm
		sub	a, @0
		iow	addr
	.ENDIF
	
	;IND
	.IF access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		sub		a, @imm
		sub		a, @0
		call	WriteIND
	.ENDIF
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	SUBMIW addr,imm,access
.LOCAL	submiw_read
	; RAM
	.IF access = 0
		mov		a, @.B0.imm
		sub		addr, a
		jbs		r3, cflag
		dec		addr+1
		mov		a, @.B1.imm
		sub		addr+1, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF
	
	; IO
	.IF access = 2
		ior		addr
		sub		a, @.B0.imm
		rlc		pr1
		sub		a, @0
		iow		addr
		
		ior		addr+1
		sub		a, @.B1.imm
		jbs		pr1, 0
		add		a, @1
		sub		a, @0
		iow		addr+1
	.ENDIF

	;IND
	.IF access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		call	ReadIND
		sub		a, @.B0.imm
		rlc		pr1
		sub		a, @0
		call	WriteIND

		inc		pr0
		jbs		r3, zflag
		jmp		submiw_read
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
submiw_read:		
		sub		a, @.B1.imm
		jbs		pr1, 0
		add		a, @1
		sub		a, @0
		call	WriteIND
	.ENDIF
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	SUBMID addr,imm,access
.LOCAL	SUBMID_BYTE2	
.LOCAL	SUBMID_BYTE3
.LOCAL	submid_read1
.LOCAL	submid_read2
.LOCAL	submid_read3
	;RAM
	.IF access = 0
		mov	A, @.B0.imm
		sub	addr, a

		rlc	pr1
		mov	a, @.B1.imm
		sub addr+1, a			

		jbc pr1,0
		jmp SUBMID_BYTE2
		
		mov	addr+1, addr+1
		jbc r3,zflag
		bc  r3,cflag
		dec addr+1

SUBMID_BYTE2:	
		rlc	pr1
		mov	a, @.B2.imm
		sub	addr+2, a
	
		jbc pr1,0
		jmp SUBMID_BYTE3
		
		mov	addr+2, addr+2
		jbc r3,zflag
		bc  r3,cflag
		dec addr+2

SUBMID_BYTE3:	
		jbs	r3, cflag
		dec	addr+3
		mov	a, @.B3.imm
		sub	addr+3, a
	.ENDIF

	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF
	
	; IO
	.IF access = 2
		ior addr
		sub	a, @.B0.imm
		rlc	pr1
		sub	a, @0
		iow addr
		ior addr+1
		sub a, @.B1.imm
		rlc pr1
		jbs pr1, 1
		add a, @0xFF
		iow addr+1
		
		jbs r3, cflag
		bc  pr1, 0

		ior addr+2
		sub a, @.B2.imm
		rlc pr1
		jbc pr1, 1
		add a, @0xFF
		iow addr+2

		jbs r3, cflag
		bc  pr1, 0

		ior addr+3
		sub a, @.B3.imm
		rlc pr1
		jbc pr1, 1
		add a, @0xFF
		iow addr+3
	.ENDIF

	;IND
	.IF access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		sub		a, @.B0.imm
		rlc		pr1
		sub		a, @0
		call	WriteIND

		inc		pr0
		jbs		r3, zflag
		jmp		submid_read1
		inc		pr0+1
		jnc		r3, zflag
		inc		pr0+2
submid_read1:
		call	ReadIND
		sub 	a, @.B1.imm
		rlc 	pr1
		jbs 	pr1, 1
		add 	a, @0xFF
		call 	WriteIND
		
		jbs 	r3, cflag
		bc  	pr1, 0

		inc		pr0
		jbs		r3, zflag
		jmp		submid_read2
		inc		pr0+1
		jnc		r3, zflag
		inc		pr0+2
submid_read2:
		call	ReadIND
		sub 	a, @.B2.imm
		rlc 	pr1
		jbs 	pr1, 1
		add 	a, @0xFF
		call 	WriteIND

		jbs r3, cflag
		bc  pr1, 0

		inc		pr0
		jbs		r3, zflag
		jmp		submid_read3
		inc		pr0+1
		jnc		r3, zflag
		inc		pr0+2
submid_read3:
		call	ReadIND
		sub 	a, @.B3.imm
		rlc 	pr1
		jbs 	pr1, 1
		add 	a, @0xFF
		call 	WriteIND
	.ENDIF
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ORMIB addr,imm,access
	;RAM
	.IF access = 0
		mov	a, @imm
		or	addr, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		or	a, @imm
		iow	addr
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		or		a, @imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ORMIW addr,imm,access
.LOCAL	ormiw_read
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		or	addr, a
		mov	a, @.HIGH.imm
		or	addr+1, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		or	a, @.B0.imm
		iow	addr
		ior	addr+1
		or	a, @.HIGH.imm
		iow	addr+1
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		or		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		ormiw_read
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
ormiw_read:
		call	ReadIND
		or		a, @.HIGH.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ORMID addr,imm,access
.LOCAL	ormid_read1
.LOCAL	ormid_read2
.LOCAL	ormid_read3
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		or	addr, a
		mov	a, @.B1.imm
		or	addr+1, a
		mov	a, @.B2.imm
		or	addr+2, a
		mov	a, @.B3.imm
		or	addr+3, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		or	a, @.B0.imm
		iow	addr
		ior	addr+1
		or	a, @.B1.imm
		iow	addr+1
		ior	addr+2
		or	a, @.B2.imm
		iow	addr+2
		ior	addr+3
		or	a, @.B3.imm
		iow	addr+3
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		or		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		ormid_read1
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
ormid_read1:
		call	ReadIND
		or		a, @.B1.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		ormid_read2
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
ormid_read2:
		call	ReadIND
		or		a, @.B2.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		ormid_read3
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
ormid_read3:
		call	ReadIND
		or		a, @.B3.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	XORMIB addr,imm,access
	;RAM
	.IF access = 0
		mov	a, @imm
		xor	addr, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		xor	a, @imm
		iow	addr
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		xor		a, @imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	XORMIW addr,imm,access
.LOCAL	xormiw_read
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		xor	addr, a
		mov	a, @.HIGH.imm
		xor	addr+1, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		xor	a, @.B0.imm
		iow	addr
		ior	addr+1
		xor	a, @.HIGH.imm
		iow	addr+1
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		xor		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		xormiw_read
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
xormiw_read:
		call	ReadIND
		xor		a, @.HIGH.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	XORMID addr,imm,access
.LOCAL	xormid_read1
.LOCAL	xormid_read2
.LOCAL	xormid_read3
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		xor	addr, a
		mov	a, @.B1.imm
		xor	addr+1, a
		mov	a, @.B2.imm
		xor	addr+2, a
		mov	a, @.B3.imm
		xor	addr+3, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		xor	a, @.B0.imm
		iow	addr
		ior	addr+1
		xor	a, @.B1.imm
		iow	addr+1
		ior	addr+2
		xor	a, @.B2.imm
		iow	addr+2
		ior	addr+3
		xor	a, @.B3.imm
		iow	addr+3
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		xor		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		xormid_read1
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
xormid_read1:
		call	ReadIND
		xor		a, @.B1.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		xormid_read2
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
xormid_read2:
		call	ReadIND
		xor		a, @.B2.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		xormid_read3
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
xormid_read3:
		call	ReadIND
		xor		a, @.B3.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ANDMIB addr,imm,access
	;RAM
	.IF access = 0
		mov	a, @imm
		and	addr, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		and	a, @imm
		iow	addr
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		and		a, @imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ANDMIW addr,imm,access
.LOCAL	andmiw_read
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		and	addr, a
		mov	a, @.HIGH.imm
		and	addr+1, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		and	a, @.B0.imm
		iow	addr
		ior	addr+1
		and	a, @.HIGH.imm
		iow	addr+1
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		and		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		andmiw_read
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
andmiw_read:
		call	ReadIND
		and		a, @.HIGH.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	ANDMID addr,imm,access
.LOCAL	andmiw_read1
.LOCAL	andmiw_read2
.LOCAL	andmiw_read3
	;RAM
	.IF access = 0
		mov	a, @.B0.imm
		and	addr, a
		mov	a, @.B1.imm
		and	addr+1, a
		mov	a, @.B2.imm
		and	addr+2, a
		mov	a, @.B3.imm
		and	addr+3, a
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		and	a, @.B0.imm
		iow	addr
		ior	addr+1
		and	a, @.B1.imm
		iow	addr+1
		ior	addr+2
		and	a, @.B2.imm
		iow	addr+2
		ior	addr+3
		and	a, @.B3.imm
		iow	addr+3
	.ENDIF
	
	;IND
	.IF	access = 3
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		call	ReadIND
		and		a, @.B0.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		andmiw_read1
		inc		pr0+1
		jbc		r3,zflag
		inc		pr0+2
andmiw_read1:
		call	ReadIND
		and		a, @.B1.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		andmiw_read2
		inc		pr0+1
		jbc		r3,zflag
		inc		pr0+2
andmiw_read2:
		call	ReadIND
		and		a, @.B2.imm
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		andmiw_read3
		inc		pr0+1
		jbc		r3,zflag
		inc		pr0+2
andmiw_read3:
		call	ReadIND
		and		a, @.B3.imm
		call	WriteIND
	.ENDIF	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	LSHMIB addr,imm,access
.LOCAL	shlmib_end
.LOCAL	shlmib_loop

	mov	a, @imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	shlmib_end

	;RAM
	.IF access = 0

⌨️ 快捷键说明

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