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

📄 sysdef.inc

📁 基于HS108设计的红外水位检测仪
💻 INC
📖 第 1 页 / 共 5 页
字号:
shlmib_loop:
		bc	r3, cflag
		rlc	addr
	
		djz	pr1
		jmp	shlmib_loop
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr0, a
shlmib_loop:
		bc	r3, cflag
		rlc	pr0
	
		djz	pr1
		jmp	shlmib_loop
		mov	a, pr0
		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
		mov		pr1+1, a
shlmib_loop:
		bc	r3, cflag
		rlc	pr1+1
	
		djz	pr1
		jmp	shlmib_loop
		mov	a, pr1+1
		call	WriteIND
	.ENDIF	
shlmib_end:
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	LSHMIW addr,imm,access
.LOCAL	shlmiw_clear
.LOCAL	shlmiw_end
.LOCAL	shlmiw_loop
.LOCAL	shlmiw_read
.LOCAL	shlmiw_write1
.LOCAL	shlmiw_write2

	mov	a, @.B1.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	shlmiw_clear

	mov	a, @.B0.imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	shlmiw_end

	;RAM
	.IF access = 0
shlmiw_loop:
		bc	r3, cflag
		rlc	addr
		rlc	addr+1
	
		djz	pr1
		jmp	shlmiw_loop
		jmp	shlmiw_end
	
shlmiw_clear:
		clr addr
		clr	addr+1
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr1+2, a
		ior addr+1
		mov	pr1+3, a
shlmiw_loop:
		bc	r3, cflag
		rlc	pr1+2
		rlc	pr1+3
	
		djz	pr1
		jmp	shlmiw_loop
		mov	a, pr1+2
		iow	addr
		mov	a, pr1+3
		iow	addr+1
		jmp	shlmiw_end

shlmiw_clear:
		mov	a, @0
		iow addr
		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
		mov		pr1+2, a
		inc		pr0
		jbs		r3, zflag
		jmp		shlmiw_read
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmiw_read:
		call	ReadIND
		mov		pr1+3, a
shlmiw_loop:
		bc	r3, cflag
		rlc	pr1+2
		rlc	pr1+3
	
		djz	pr1
		jmp	shlmiw_loop
		
		mov		a, pr1+3
		call	WriteIND
		mov		pr0, pr0
		jbs		r3, zflag
		jmp		shlmiw_write1
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
shlmiw_write1:
		dec		pr0
		mov		a, pr1+2
		call	WriteIND
		jmp		shlmiw_end

shlmiw_clear:
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		mov		a, @0
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		shlmiw_write2
		inc		pr0+1
		jnc		r3, zflag
		inc		pr0+2
shlmiw_write2:
		call	WriteIND		
	.ENDIF	
shlmiw_end:
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	LSHMID addr,imm,access
.LOCAL	shlmid_clear
.LOCAL	shlmid_end
.LOCAL	shlmid_loop
.LOCAL	shlmid_read1
.LOCAL	shlmid_read2
.LOCAL	shlmid_read3
.LOCAL	shlmid_write1
.LOCAL	shlmid_write2
.LOCAL	shlmid_write3
.LOCAL	shlmid_clear1
.LOCAL	shlmid_clear2
.LOCAL	shlmid_clear3

	mov	a, @.B3.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	shlmid_clear

	mov	a, @.B2.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	shlmid_clear

	mov	a, @.B1.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	shlmid_clear

	mov	a, @.B0.imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	shlmid_end

	;RAM
	.IF access = 0
shlmid_loop:
		bc	r3, cflag
		rlc	addr
		rlc	addr+1
		rlc	addr+2
		rlc	addr+3
	
		djz	pr1
		jmp	shlmid_loop
		jmp	shlmid_end
	
shlmid_clear:
		clr addr
		clr	addr+1
		clr	addr+2
		clr	addr+3
	.ENDIF
	
	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr1+1, a
		ior addr+1
		mov	pr1+2, a
		ior addr+2
		mov	pr1+3, a
		ior addr+3
		mov	pr1+4, a
		
shlmid_loop:
		bc	r3, cflag
		rlc	pr1+1
		rlc	pr1+2
		rlc	pr1+3
		rlc	pr1+4
	
		djz	pr1
		jmp	shlmid_loop
		
		mov	a, pr1+1
		iow	addr
		mov	a, pr1+2
		iow	addr+1
		mov	a, pr1+3
		iow	addr+2
		mov	a, pr1+4
		iow	addr+3
		jmp	shlmid_end

shlmid_clear:
		mov	a, @0
		iow addr
		iow	addr+1
		iow	addr+2
		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
		mov		pr1+1, a
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_read1
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_read1:
		call	ReadIND
		mov		pr1+2, a
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_read2
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_read2:
		call	ReadIND
		mov		pr1+3, a
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_read3
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_read3:
		call	ReadIND
		mov		pr1+4, a

shlmid_loop:
		bc	r3, cflag
		rlc	pr1+1
		rlc	pr1+2
		rlc	pr1+3
		rlc	pr1+4
	
		djz	pr1
		jmp	shlmid_loop
		
		mov		a, pr1+4
		call	WriteIND
		mov		pr0, pr0
		jbs		r3, zflag
		jmp		shlmid_write1
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
shlmid_write1:
		dec		pr0
		mov		a, pr1+3
		call	WriteIND
		jbs		r3, zflag
		jmp		shlmid_write2
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
shlmid_write2:
		dec		pr0
		mov		a, pr1+2
		call	WriteIND
		jbs		r3, zflag
		jmp		shlmid_write3
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
shlmid_write3:
		dec		pr0
		mov		a, pr1+1
		call	WriteIND
		jmp		shlmid_end

shlmid_clear:
		mov		a, @.B0.(addr)
		mov		pr0, a
		mov		a, @.B1.(addr)
		mov		pr0+1, a
		mov		a, @.B2.(addr)
		mov		pr0+2, a
		mov		a, @0
		call	WriteIND
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_clear1
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_clear1:
		call	WriteIND		
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_clear2
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_clear2:
		call	WriteIND		
		inc		pr0
		jbs		r3, zflag
		jmp		shlmid_clear3
		inc		pr0+1
		jbc		r3, zflag
		inc		pr0+2
shlmid_clear3:
		call	WriteIND		
	.ENDIF	
shlmid_end:
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	RSHIMIB addr,imm,access
.LOCAL	rshimib_end
.LOCAL	rshimib_loop
	mov	a, @imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	rshimib_end
	
	;RAM
	.IF	access = 0
	rshimib_loop:
		bc	r3, cflag
		jbc	addr, 7
		bs	r3, cflag
		rrc	addr
	
		djz	pr1
		jmp	rshimib_loop
	.ENDIF

	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr0, a
	rshimib_loop:
		bc	r3, cflag
		jbc	addr, 7
		bs	r3, cflag
		rrc	pr0

		djz	pr1
		jmp	rshimib_loop
		
		mov	a, pr0
		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
		mov		pr1+1, a
	rshimib_loop:
		bc	r3, cflag
		jbc	addr, 7
		bs	r3, cflag
		rrc	pr0
	
		djz	pr1
		jmp	rshimib_loop
		mov	a, pr1+1
		call	WriteIND
	.ENDIF	
rshimib_end:	
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	RSHIMIW addr,imm,access
.LOCAL	rshimiw_clear
.LOCAL	rshimiw_loop
.LOCAL	rshimiw_end
.LOCAL	rshimiw_symbol
.LOCAL	rshimiw_write
.LOCAL	rshimiw_read
.LOCAL	rshimiw_read1
.LOCAL	rshimiw_clear1
.LOCAL	rshimiw_clear2
	mov	a, @.B1.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	rshimiw_clear

	mov	a, @.B0.imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	rshimiw_end

	;RAM
	.IF	access = 0
	rshimiw_loop:
		bc	r3, cflag
		jbc	addr+1, 7
		bs	r3, cflag
		rrc	addr+1
		rrc	addr
	
		djz	pr1
		jmp	rshimiw_loop
		jmp	rshimiw_end
		
	rshimiw_clear:
		jbc	addr+1, 7
		jmp	rshimiw_symbol
		clr addr
		clr	addr+1		
		jmp	rshimiw_end
	rshimiw_symbol:
		mov	a, @0xff
		mov	addr, a
		mov	addr+1, a
	.ENDIF

	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr1+1, a
		ior	addr+1
		mov	pr1+2, a
	rshimiw_loop:
		bc	r3, cflag
		jbc	pr1+2, 7
		bs	r3, cflag
		rrc	pr1+2
		rrc	pr1+1

		djz	pr1
		jmp	rshimiw_loop
		
		mov	a, pr1+1
		iow	addr
		mov	a, pr1+2
		iow	addr+1
		jmp	rshimiw_end

	rshimiw_clear:
		ior	addr+1
		mov	pr1+2, a
		jbc	pr1+2, 7
		jmp	rshimiw_symbol
		mov	a, @0
		iow	addr
		iow	addr+1
		jmp	rshimiw_end
	rshimiw_symbol:
		mov	a, @0xff
		iow	addr
		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
		mov		pr1+1, a
		inc		pr0
		jbs		r3, zflag
		jmp		rshimiw_read
		inc		pr0+1
		jbc		r3,zflag
		inc		pr0+2
	rshimiw_read:	
		call	ReadIND
		mov		pr1+2, a
	rshimiw_loop:
		bc		r3, cflag
		jbc		pr1+2, 7
		bs		r3, cflag
		rrc		pr1+2
		rrc		pr1+1
            	
		djz		pr1
		jmp		rshimiw_loop

		mov		a, pr1+2
		call	WriteIND
		mov		pr0, pr0
		jbs		r3, zflag
		jmp		rshimiw_write
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
	rshimiw_write:
		dec		pr0
		mov		a, pr1+1
		call	WriteIND
		jmp	rshimiw_end

	rshimiw_clear:
		mov	a, @B0.(addr)
		mov	pr0, a
		mov	a, @B1.(addr)
		mov	pr0+1, a
		mov	a, @B2.(addr)
		mov	pr0+2, a
		
		inc	pr0
		jbs	r3, zflag
		jmp	rshimiw_read1
		inc	pr0+1
		jbc	r3, zflag
		inc	pr0+2
	rshimiw_read1:
		call	ReadIND
		mov	pr1+1, a
		jbc	pr1+1, 7
		jmp	rshimiw_symbol
		mov	a, @0
		call	WriteIND
		mov		pr0, pr0
		jbs		r3, zflag
		jmp		rshimiw_clear1
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
	rshimiw_clear1:
		dec		pr0
		call	WriteIND
		jmp	rshimiw_end
	rshimiw_symbol:
		mov	a, @0xff
		call	WriteIND
		mov		pr0, pr0
		jbs		r3, zflag
		jmp		rshimiw_clear2
		mov		pr0+1, pr0+1
		jbc		r3, zflag
		dec		pr0+2
		dec		pr0+1
	rshimiw_clear2:
		dec		pr0
		call	WriteIND
	.ENDIF	
rshimiw_end:
.ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO	RSHIMID addr,imm,access
.LOCAL	rshimid_clear
.LOCAL	rshimid_clear1
.LOCAL	rshimid_clear2
.LOCAL	rshimid_clear3
.LOCAL	rshimid_clear4
.LOCAL	rshimid_end
.LOCAL	rshimid_loop
.LOCAL	rshimid_symbol
.LOCAL	rshimid_symbol1
.LOCAL	rshimid_symbol2
.LOCAL	rshimid_symbol3
.LOCAL	rshimid_read1
.LOCAL	rshimid_read2
.LOCAL	rshimid_read3
.LOCAL	rshimid_write1
.LOCAL	rshimid_write2
.LOCAL	rshimid_write3

	mov	a, @.B3.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	rshimid_clear

	mov	a, @.B2.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	rshimid_clear

	mov	a, @.B1.imm
	mov	pr1, a
	mov	pr1, pr1
	jbs	r3, zflag
	jmp	rshimid_clear

	mov	a, @.B0.imm
	mov	pr1, a
	mov	pr1, pr1
	jbc	r3, zflag
	jmp	rshimid_end

	;RAM
	.IF	access = 0
	rshimid_loop:
		bc	r3, cflag
		jbc	addr+3, 7
		bs	r3, cflag
		rrc	addr+3
		rrc	addr+2
		rrc	addr+1
		rrc	addr
	
		djz	pr1
		jmp	rshimid_loop
		jmp	rshimid_end
		
	rshimid_clear:
		jbc	addr+3, 7
		jmp	rshimid_symbol
		clr addr
		clr	addr+1		
		clr	addr+2
		clr	addr+3
		jmp	rshimid_end
	rshimid_symbol:
		mov	a, @0xff
		mov	addr, a
		mov	addr+1, a
		mov	addr+2, a
		mov	addr+3, a
	.ENDIF

	;ROM
	.IF access = 1
		ERROR "Can't write to ROM data"
	.ENDIF

	; IO
	.IF access = 2
		ior	addr
		mov	pr1+1, a
		ior	addr+1
		mov	pr1+2, a
		ior	addr+2
		mov	pr1+3, a
		ior	addr+3
		mov	pr1+4, a
	rshimid_loop:
		bc	r3, cflag
		jbc	pr1+4, 7
		bs	r3, cflag
		rrc	pr1+4
		rrc	pr1+3
		rrc	pr1+2
		rrc	pr1+1

		djz	pr1
		jmp	rshimid_loop
		
		mov	a, pr1+1
		iow	addr
		mov	a, pr1+2
		iow	addr+1
		mov	a, pr1+3
		iow	addr+2
		mov	a, pr1+4
		iow	addr+3
		jmp	rshimid_end

	rshimid_clear:
		ior	addr+3
		mov	pr1+2, a
		jbc	pr1+2, 7
		jmp	rshimid_symbol
		mov	a, @0
		iow	addr
		iow	addr+1
		iow	addr+2
		iow	addr+3
		jmp	rshimid_end
	rshimid_symbol:
		mov	a, @0xff
		iow	addr
		iow	addr+1
		iow	addr+2
		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
		mov		pr1+1, a
		inc		pr0
		jbs		r3, zflag
		jmp		rshimid_read1
		inc		pr0+1
		jbc		r3, zflag
	rshimid_read1:
		call	ReadIND
		mov		pr1+2, a
		inc		pr0
		jbs		r3, zflag
		jmp		rshimid_read2
		inc		pr0+1
		jbc		r3, zflag
	rshimid_read2:
		call	ReadIND
		mov		pr1+3, a
		inc		pr0
		jbs		r3, zflag
		jmp		rshimid_read3
		inc		pr0+1
		jbc		r3, zflag
	rshimid_read3:
		call	ReadIND
		mov		pr1+4, a
	rshimid_loop:
		bc		r3, cflag
		jbc		pr1+2, 7
		bs		r3, cflag
		rrc		pr1+4
		rrc		pr1+3
		rrc		pr1+2
		rrc		pr1+1
            	
		djz		pr1
		jmp		rshimid_loop

⌨️ 快捷键说明

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