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

📄 gw.ns

📁 这是应用SAM7X256做LonWorks网关的代码
💻 NS
📖 第 1 页 / 共 2 页
字号:
	CALL	_add16
	CALL	_memset
	PUSHS	#0
	PUSH	[DSP][-6]
	PUSHD	#%fblockData
	PUSHS	#7
	CALL	_push1
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	POP	[0][1]
	POP	[0][0]
	PUSH	[DSP][-5]
	PUSHD	#%PersistentFblockStatus
	POPD	[3]
	PUSH	[3][TOS]
	DROP	TOS
	AND	#2
	SBRNZ	*+4
	BRF	%clearFblockStatus+52
	PUSHD	#%fblockData
	PUSH	[DSP][-7]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][2]
	AND	#0DF
	OR	#20
	POP	[2][2]
	PUSH	[DSP][-5]
	PUSHD	#%PersistentFblockStatus
	POPD	[3]
	PUSH	[3][TOS]
	DROP	TOS
	AND	#4
	SBRNZ	*+4
	BRF	%clearFblockStatus+71
	PUSHD	#%fblockData
	PUSH	[DSP][-7]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][4]
	AND	#0DF
	OR	#20
	POP	[2][4]
	PUSH	[DSP][-1]
	AND	#1
	AND	#1
	PUSHD	#%fblockData
	PUSH	[DSP][-8]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0FE
	OR
	POP	[2][3]
	PUSH	[DSP][-1]
	SHR
	SHR
	AND	#1
	AND	#1
	SHL
	SHL
	PUSHD	#%fblockData
	PUSH	[DSP][-8]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0FB
	OR
	POP	[2][3]
	DEALLOC	#7
	NOP

	SEG	CODE
	ORG
%initAllFblockData	APEXP ; Function body
	ALLOC	#1
	NOP
	PUSHS	#0
	DROP	NEXT
	PUSHS	#1
	PUSH	NEXT
	CALL	_less8
	SBRNZ	*+4
	BRF	%initAllFblockData+28
	PUSH	TOS
	CALLF	%clearFblockStatus
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0FE
	OR	#1
	POP	[2][3]
	PUSH	TOS
	INC
	DROP	NEXT
	BRF	%initAllFblockData+4
	DEALLOC	#1
	NOP

	SEG	CODE
	ORG
%setPersistentFblockStatus	APEXP ; Function body
	PUSH	[DSP][-1]
	SBRNZ	*+4
	BRF	%setPersistentFblockStatus+16
	PUSH	NEXT
	PUSHD	#%PersistentFblockStatus
	PUSH	[DSP][-2]
	CALL	_add_8_16f
	POPD	[2]
	PUSH	[2][0]
	OR
	PUSHD	[2]
	CALL	_eeprom_far_write
	BRF	%setPersistentFblockStatus+25
	PUSH	NEXT
	NOT
	PUSHD	#%PersistentFblockStatus
	PUSH	[DSP][-2]
	CALL	_add_8_16f
	POPD	[2]
	PUSH	[2][0]
	AND
	PUSHD	[2]
	CALL	_eeprom_far_write
	DEALLOC	#3
	NOP

	SEG	CODE
	ORG
%updateNode_Status	APEXP ; Function body
	ALLOC	#5
	NOP
	PUSHD	#%fblockData+2
	POP	[DSP][-4]
	POP	[DSP][-4]
	PUSHS	#4
	POP	[DSP][-2]
	PUSHS	#0
	POP	[DSP][-1]
	PUSH	[DSP][-1]
	PUSH	[DSP][-1]
	CALL	_less8s
	SBRNZ	*+4
	BRF	%updateNode_Status+22
	PUSHS	#0
	PUSH	[DSP][-4]
	PUSH	[DSP][-4]
	PUSH	[DSP][-3]
	CALL	_adds_8_16
	POPD	[0]
	POP	[0][0]
	PUSH	NEXT
	INC
	POP	[DSP][-1]
	BRF	%updateNode_Status+0B
	PUSHS	#1
	DROP	NEXT
	PUSHS	#1
	PUSH	NEXT
	CALL	_less8s
	SBRNZ	*+4
	BRF	%updateNode_Status+66
	ALLOC	#2
	PUSHD	#%fblockData
	PUSH	[DSP][-3]
	PUSHS	#6
	CALL	_mul8ls
	CALL	_add16
	PUSHS	#2
	CALL	_add_8_16f
	POP	[DSP][-1]
	POP	[DSP][-1]
	PUSHS	#0
	POP	[DSP][-3]
	PUSH	[DSP][-3]
	PUSH	[DSP][-3]
	CALL	_less8s
	SBRNZ	*+4
	BRF	%updateNode_Status+5E
	PUSH	NEXT
	PUSH	NEXT
	PUSH	[DSP][-4]
	CALL	_adds_8_16
	POPD	[0]
	PUSH	[0][0]
	PUSH	[DSP][-6]
	PUSH	[DSP][-6]
	PUSH	[DSP][-5]
	CALL	_adds_8_16
	POPD	[2]
	PUSH	[2][0]
	OR
	POP	[2][0]
	PUSH	[DSP][-2]
	INC
	POP	[DSP][-3]
	BRF	%updateNode_Status+3D
	DROP	TOS
	DROP	TOS
	PUSH	TOS
	INC
	DROP	NEXT
	BRF	%updateNode_Status+24
	DEALLOC	#5
	NOP

	SEG	CODE
	ORG
%setFblockDisable	APEXP ; Function body
	PUSH	NEXT
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][2]
	CALL	_r_shift8_5
	AND	#1
	XOR
	SBRNZ	*+4
	BRF	%setFblockDisable+32
	PUSH	NEXT
	AND	#1
	CALL	_l_shift8_5
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][2]
	AND	#0DF
	OR
	POP	[2][2]
	PUSH	NEXT
	PUSHS	#2
	PUSH	[DSP][-1]
	CALLF	%setPersistentFblockStatus
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setFblockOverride	APEXP ; Function body
	PUSH	NEXT
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][4]
	CALL	_r_shift8_5
	AND	#1
	XOR
	SBRNZ	*+4
	BRF	%setFblockOverride+32
	PUSH	NEXT
	AND	#1
	CALL	_l_shift8_5
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][4]
	AND	#0DF
	OR
	POP	[2][4]
	PUSH	NEXT
	PUSHS	#4
	PUSH	[DSP][-1]
	CALLF	%setPersistentFblockStatus
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setFblockInAlarm	APEXP ; Function body
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][4]
	AND	#0BF
	OR	#40
	POP	[2][4]
	CALLF	%updateNode_Status
	DEALLOC	#1
	NOP

	SEG	CODE
	ORG
%setFblockOutOfLimits	APEXP ; Function body
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][2]
	AND	#0EF
	OR	#10
	POP	[2][2]
	CALLF	%updateNode_Status
	DEALLOC	#1
	NOP

	SEG	CODE
	ORG
%setFblockManualControlBit	APEXP ; Function body
	PUSH	NEXT
	CALL	_l_shift8_7
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][4]
	AND	#7F
	OR
	POP	[2][4]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%getFblockManualControlBit	APEXP ; Function body
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][4]
	CALL	_r_shift8_7
	BRF	%getFblockManualControlBit+11
	DROP	NEXT
	RET

	SEG	CODE
	ORG
%setCommFailedState	APEXP ; Function body
	PUSH	NEXT
	AND	#1
	CALL	_l_shift8_3
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0F7
	OR
	POP	[2][3]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setLockedOutBit	APEXP ; Function body
	PUSH	NEXT
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][3]
	AND	#1
	XOR
	SBRNZ	*+4
	BRF	%setLockedOutBit+2B
	PUSH	NEXT
	AND	#1
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0FE
	OR
	POP	[2][3]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setFblockFailedSelfTest	APEXP ; Function body
	PUSH	NEXT
	AND	#1
	SHL
	SHL
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0FB
	OR
	POP	[2][3]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setFblockOverrange	APEXP ; Function body
	PUSH	NEXT
	CALL	_l_shift8_7
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#7F
	OR
	POP	[2][3]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%setFblockUnderrange	APEXP ; Function body
	PUSH	NEXT
	AND	#1
	CALL	_l_shift8_6
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[2]
	PUSH	[2][3]
	AND	#0BF
	OR
	POP	[2][3]
	CALLF	%updateNode_Status
	DEALLOC	#2
	NOP

	SEG	CODE
	ORG
%fblockNormal	APEXP ; Function body
	PUSHS	#0
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][2]
	CALL	_r_shift8_5
	AND	#1
	SBRZ	*+4
	BRF	%fblockNormal+27
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[3]
	PUSH	[3][3]
	SHR
	SHR
	AND	#1
	SBRNZ	%fblockNormal+27
	INC
	BRF	%fblockNormal+2A
	DROP	NEXT
	RET

	SEG	CODE
	ORG
%fblockNormalNotLockedOut	APEXP ; Function body
	ALLOC	#2
	NOP
	PUSHD	#%fblockData
	PUSH	[DSP][-3]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POP	[DSP][-1]
	POP	[DSP][-1]
	PUSHS	#0
	PUSH	[DSP][-1]
	PUSH	[DSP][-1]
	POPD	[0]
	PUSH	[0][2]
	CALL	_r_shift8_5
	AND	#1
	SBRZ	*+4
	BRF	%fblockNormalNotLockedOut+31
	PUSH	[DSP][-1]
	PUSH	[DSP][-1]
	POPD	[0]
	PUSH	[0][3]
	SHR
	SHR
	AND	#1
	SBRZ	*+4
	BRF	%fblockNormalNotLockedOut+31
	PUSH	[DSP][-1]
	PUSH	[DSP][-1]
	POPD	[0]
	PUSH	[0][3]
	AND	#1
	SBRNZ	%fblockNormalNotLockedOut+31
	INC
	BRF	%fblockNormalNotLockedOut+34
	POP	[DSP][-2]
	DEALLOC	#2

	SEG	CODE
	ORG
%fblockEnabled	APEXP ; Function body
	PUSHS	#0
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][2]
	CALL	_r_shift8_5
	AND	#1
	SBRZ	*+4
	BRF	%fblockEnabled+27
	PUSHD	#%fblockData
	PUSH	[DSP][-2]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[3]
	PUSH	[3][4]
	CALL	_r_shift8_5
	AND	#1
	SBRNZ	%fblockEnabled+27
	INC
	BRF	%fblockEnabled+2A
	DROP	NEXT
	RET

	SEG	CODE
	ORG
%fblockDisabled	APEXP ; Function body
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][2]
	CALL	_r_shift8_5
	AND	#1
	BRF	%fblockDisabled+13
	DROP	NEXT
	RET

	SEG	CODE
	ORG
%fblockInOverride	APEXP ; Function body
	PUSHD	#%fblockData
	PUSH	[DSP][-1]
	PUSHS	#6
	CALL	_mul8l
	CALL	_add16
	POPD	[0]
	PUSH	[0][4]
	CALL	_r_shift8_5
	AND	#1
	BRF	%fblockInOverride+13
	DROP	NEXT
	RET

	SEG	CODE
	ORG
fblockDirectors EXPORT
	DATA.B	PTR %NodeObjectDirector-1

	SEG	CODE
	ORG
%fblock_index_map EXPORT
	DATA.B	0
%%FBNVNodeObject%nviRequest	ALTNM	%nviRequest
	DATA.B	0
%%FBNVNodeObject%nviImpTempF	ALTNM	%nviTemp
	DATA.B	0
%%FBNVNodeObject%nviImpRegVal	ALTNM	%nviLevel
	DATA.B	0
%%FBNVNodeObject%nviImpSwitch	ALTNM	%nviPumpSts
	DATA.B	0
%%FBNVNodeObject%nviImpSwitch1	ALTNM	%nviHeatSts
	DATA.B	0
%%FBNVNodeObject%nvoStatus	ALTNM	%nvoStatus
	DATA.B	0
%%FBNVNodeObject%nviImpSwitch2	ALTNM	%nvoPumpCtl
	DATA.B	0
%%FBNVNodeObject%nviImpSwitch3	ALTNM	%nvoHeatCtl

	SEG	CODE
	ORG
APINIT	EXPORT ; Init start & special event code
	PUSHD	#26BE
	CALL	delay
APINITV	EXPORT
	BRF	0FD00
WINK	EXPORT ; When-unit body
	RET
	NOP
RESET0	EXPORT ; Network debugger reset event
	CALLF	_larva_reset
RESET	EXPORT ; When-unit body
	CALLF	%initAllFblockData
	PUSH	#22
	CALLF	%executeOnEachFblock
	RET
	NOP
OFFLINE	EXPORT ; When-unit body
	PUSH	#20
	CALLF	%executeOnEachFblock
	RET
	NOP
ONLINE	EXPORT ; When-unit body
	PUSH	#21
	CALLF	%executeOnEachFblock
	RET
	NOP

	SEG	CODE
	ORG
DBGSIG	EXPORT
	DATA.B	0,0
TNVFIX ; NV Fixed table
	DATA.B	23,PTR %nviRequest
	DATA.B	4,PTR %nviTemp
	DATA.B	6,PTR %nviLevel
	DATA.B	2,PTR %nviPumpSts
	DATA.B	2,PTR %nviHeatSts
	DATA.B	86,PTR %nvoStatus
	DATA.B	2,PTR %nvoPumpCtl
	DATA.B	2,PTR %nvoHeatCtl

TEVT	EXPORT ; Event table
	DATA.B	PTR APINIT-2
	DATA.B	WINK-APINIT+1,RESET0-APINIT+1
	DATA.B	OFFLINE-APINIT+1,ONLINE-APINIT+1
	DATA.B	0,1
	DATA.B	0C0,PTR WHEN1-1

	SEG	SIDATA
	ORG
SIDATA	EXPORT ; SI Data
	DATA.B	000,057,8,0,0
	DATA.B	8E,5C
	DATA.B	8E,3F
	DATA.B	8E,88
	DATA.B	8E,5F
	DATA.B	8E,5F
	DATA.B	0CE,5D
	DATA.B	8E,5F
	DATA.B	8E,5F
	DATA.B	26,33,2E,33,40,30,4E,6F
	DATA.B	64,65,4F,62,6A,65,63,74
	DATA.B	0
	DATA.B	10
	DATA.B	40,30,7C,31,0
	DATA.B	10
	DATA.B	40,30,23,31,0
	DATA.B	10
	DATA.B	40,30,23,32,0
	DATA.B	10
	DATA.B	40,30,23,33,0
	DATA.B	10
	DATA.B	40,30,23,34,0
	DATA.B	10
	DATA.B	40,30,7C,32,0
	DATA.B	10
	DATA.B	40,30,23,35,0
	DATA.B	10
	DATA.B	40,30,23,36,0
	DATA.B	_new_binding_constraints|_query_stats|NALIAS

; Resource usage information
	RESOURCE	NADDR	0F
	RESOURCE	NDOM	2
	RESOURCE	NRCVTX	7
	RESOURCE	NNIB	2
	RESOURCE	NAIB	3
	RESOURCE	SNIB	42
	RESOURCE	SNOB	2A
	RESOURCE	SAIB	16
	RESOURCE	SAOB	14
	RESOURCE	NNVS	8
	RESOURCE	ALIAS	0C
	RESOURCE	RAMT	1
	RESOURCE	MINIT	1
	RESOURCE	LARVA	1

; End of generated code

⌨️ 快捷键说明

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