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

📄 ncrt0.a30

📁 瑞萨的DOME板LIN主从节点程序调试通过可以使用
💻 A30
字号:
;*************************************************************************** ;
; C COMPILER for R8C/Tiny, M16C/60,30,20,10
; Copyright(C) 1999(2000-2004). Renesas Technology Corp.
; and Renesas Solutions Corp., All rights reserved.
;
;
; ncrt0.a30 : NC30 startup program
;
; This program is applicable when using the basic I/O library
;       
; $Date: 2005/11/08 11:25:56 $
; $Revision: 1.35 $
;***************************************************************************

;--------------------------------------------------------------------
; set size of monitor area for FoUSB
;--------------------------------------------------------------------
.if	_KD_
.if	_Firmware_space == 0
FoUSB_MON	.equ	600H	; for default
.else
FoUSB_MON	.equ	_Firmware_space
.endif
.endif
;---------------------------------------------------------------------
; HEEP SIZE definition
;---------------------------------------------------------------------
.if	__HEAP__ == 1 
HEAPSIZE	.equ	0H
.else

.if	__HEAPSIZE__ == 0
HEAPSIZE	.equ	300H
.else
HEAPSIZE	.equ	__HEAPSIZE__
.endif

.endif

;---------------------------------------------------------------------
; STACK SIZE definition
;---------------------------------------------------------------------
.if	__USTACKSIZE__ == 0
.if	__R8C__ != 1
STACKSIZE	.equ	300h
.else
STACKSIZE	.equ	80h
.endif
.else
STACKSIZE	.equ	__USTACKSIZE__
.endif

;---------------------------------------------------------------------
; INTERRUPT STACK SIZE definition
;---------------------------------------------------------------------
.if	__ISTACKSIZE__ == 0
.if	__R8C__ != 1
ISTACKSIZE	.equ	300h
.else
ISTACKSIZE	.equ	80h
.endif
.else
ISTACKSIZE	.equ	__ISTACKSIZE__
.endif

;---------------------------------------------------------------------
; INTERRUPT VECTOR ADDRESS  definition
;---------------------------------------------------------------------
.if	__R8C__ != 1
.if	_KD_ == 1
	; for FoUSB's monitor area
	; 64 is variable vector's number
	; 4 is each vector's size
VECTOR_ADR 	.equ	0ff900h - (64*4)
SVECTOR_ADR 	.equ	0ffe00h
.else
VECTOR_ADR 	.equ	0ffd00h
SVECTOR_ADR 	.equ	0ffe00h
.endif // _KD_
.else
VECTOR_ADR 	.equ	0fedch
.endif

;---------------------------------------------------------------------
; Section allocation
;---------------------------------------------------------------------
	.list OFF
	.include sect30.inc
	.list ON

;---------------------------------------------------------------------
; SBDATA area definition
;---------------------------------------------------------------------
	.glb	__SB__
__SB__	.equ	data_SE_top

;====================================================================
; Initialize Macro declaration
;---------------------------------------------------------------------
N_BZERO	.macro	TOP_ ,SECT_
	mov.b	#00H, R0L
	mov.w	#(TOP_ & 0FFFFH), A1
	mov.w	#sizeof SECT_ , R3
	sstr.b	
	.endm

N_BCOPY .macro	FROM_,TO_,SECT_
	mov.w	#(FROM_ & 0FFFFH),A0
	mov.b	#(FROM_ >>16),R1H
	mov.w	#TO_ ,A1
	mov.w	#sizeof SECT_ , R3
	smovf.b
	.endm

BZERO	.macro	TOP_,SECT_
	push.w	#sizeof SECT_ >> 16
	push.w	#sizeof SECT_  & 0ffffh
	pusha	TOP_ >>16
	pusha	TOP_ & 0ffffh
	.stk	8
	.glb	_bzero	
	.call	_bzero,G
	jsr.a	_bzero
	.endm

BCOPY	.macro	FROM_ ,TO_ ,SECT_
	push.w	#sizeof SECT_  >> 16
	push.w	#sizeof SECT_  & 0ffffh
	pusha	TO_ >>16
	pusha	TO_  & 0ffffh
	pusha	FROM_ >>16
	pusha	FROM_  & 0ffffh
	.stk	12
	.glb	_bcopy
	.call   _bcopy,G
	jsr.a	_bcopy
	.endm

.if	__R8C__ != 1
;
; for M16C/60,30,20,10 series
;
;		.glb	__BankSelect
;__BankSelect	.equ	0BH

;---------------------------------------------------------------
; special page definition
;---------------------------------------------------------------
;       macro define for special page
;
;Format:
;	SPECIAL	number
;

SPECIAL	.macro	NUM
	.org	0FFFFEH-(NUM*2)
	.glb	__SPECIAL_@NUM
	.word	__SPECIAL_@NUM  & 0FFFFH
.endm
;====================================================================
; Interrupt section start
;---------------------------------------------------------------------
	.insf	start,S,0
	.glb	start
	.section	interrupt
start:
;---------------------------------------------------------------------
; after reset,this program will start
;---------------------------------------------------------------------
	ldc	#istack_top,	isp	;set istack pointer
	mov.b	#02h,0ah
	mov.b	#00h,04h		;set processer mode 
	mov.b	#00h,0ah
	ldc	#0080h,	flg
	ldc	#stack_top,	sp	;set stack pointer 
	ldc	#data_SE_top,	sb	;set sb register 
	ldintb	#VECTOR_ADR

;====================================================================
; NEAR area initialize.
;--------------------------------------------------------------------
; bss zero clear
;--------------------------------------------------------------------
	N_BZERO	bss_SE_top,bss_SE
	N_BZERO	bss_SO_top,bss_SO
	N_BZERO	bss_NE_top,bss_NE
	N_BZERO	bss_NO_top,bss_NO

;---------------------------------------------------------------------
; initialize data section
;---------------------------------------------------------------------
	N_BCOPY data_SEI_top,data_SE_top,data_SE
	N_BCOPY	data_SOI_top,data_SO_top,data_SO
	N_BCOPY	data_NEI_top,data_NE_top,data_NE
	N_BCOPY	data_NOI_top,data_NO_top,data_NO

;====================================================================
; FAR area initialize.
;---------------------------------------------------------------------
; bss zero clear
;---------------------------------------------------------------------
	BZERO	bss_FE_top,bss_FE
	BZERO	bss_FO_top,bss_FO

;---------------------------------------------------------------------
; Copy edata_E(O) section from edata_EI(OI) section
;---------------------------------------------------------------------
	BCOPY	data_FEI_top,data_FE_top,data_FE
	BCOPY	data_FOI_top,data_FO_top,data_FO

	ldc	#stack_top,sp
	.stk	-40

;====================================================================
; heap area initialize
;---------------------------------------------------------------------
.if __HEAP__ != 1
	.glb	__mnext
	.glb	__msize
	mov.w	#(heap_top&0FFFFH), __mnext
	mov.w	#(heap_top>>16), __mnext+2
	mov.w	#(HEAPSIZE&0FFFFH), __msize
	mov.w	#(HEAPSIZE>>16), __msize+2
.endif

;====================================================================
; Initialize standard I/O
;---------------------------------------------------------------------
.if __STANDARD_IO__ == 1
	.glb	__init
	.call	__init,G
	jsr.a	__init
.endif

;====================================================================
; Call main() function
;---------------------------------------------------------------------
	ldc	#0h,fb	; for debuger

	.glb	_main
	jsr.a	_main

.else	; __R8C__

;---------------------------------------------------------------------
; for R8C/Tiny
;---------------------------------------------------------------------

;====================================================================
; Interrupt section start
;---------------------------------------------------------------------
	.insf	start,S,0
	.glb	start
	.section	interrupt
start:
;---------------------------------------------------------------------
; after reset,this program will start
;---------------------------------------------------------------------
	ldc	#istack_top,	isp	;set istack pointer
	mov.b	#02h,0ah
	mov.b	#00h,04h		;set processer mode 
	mov.b	#00h,0ah
	ldc	#0080h,	flg
	ldc	#stack_top,	sp	;set stack pointer 
	ldc	#data_SE_top,	sb	;set sb register 
	ldintb	#VECTOR_ADR

;====================================================================
; NEAR area initialize.
;--------------------------------------------------------------------
; bss zero clear
;--------------------------------------------------------------------
	N_BZERO	bss_SE_top,bss_SE
	N_BZERO	bss_SO_top,bss_SO
	N_BZERO	bss_NE_top,bss_NE
	N_BZERO	bss_NO_top,bss_NO

;---------------------------------------------------------------------
; initialize data section
;---------------------------------------------------------------------
	N_BCOPY data_SEI_top,data_SE_top,data_SE
	N_BCOPY	data_SOI_top,data_SO_top,data_SO
	N_BCOPY	data_NEI_top,data_NE_top,data_NE
	N_BCOPY	data_NOI_top,data_NO_top,data_NO

;====================================================================
; FAR area initialize.
;---------------------------------------------------------------------
; bss zero clear
;---------------------------------------------------------------------
;	BZERO	bss_FE_top,bss_FE
;	BZERO	bss_FO_top,bss_FO

;---------------------------------------------------------------------
; Copy edata_E(O) section from edata_EI(OI) section
;---------------------------------------------------------------------
;	BCOPY	data_FEI_top,data_FE_top,data_FE
;	BCOPY	data_FOI_top,data_FO_top,data_FO

	ldc	#stack_top,sp
;	.stk	-40

;====================================================================
; heap area initialize
;---------------------------------------------------------------------
.if __HEAP__ != 1
	.glb	__mnext
	.glb	__msize
	mov.w	#(heap_top&0FFFFH), __mnext
	mov.w	#(HEAPSIZE&0FFFFH), __msize
.endif

;====================================================================
; Initialize standard I/O
;---------------------------------------------------------------------
.if __STANDARD_IO__ == 1
	.glb	__init
	.call	__init,G
	jsr.a	__init
.endif

;====================================================================
; Call main() function
;---------------------------------------------------------------------
	ldc	#0h,fb	; for debuger

	.glb	_main
	jsr.a	_main

.endif	; __R8C__

;====================================================================
; exit() function
;---------------------------------------------------------------------
	.glb	_exit
	.glb	$exit
_exit:			   ; End program
$exit:
	jmp	_exit
	.einsf
;====================================================================
; dummy interrupt function
;---------------------------------------------------------------------
	.glb	dummy_int
dummy_int:
	reit

	.end
;***************************************************************************
;
; C COMPILER for R8C/Tiny, M16C/60,30,20,10
; Copyright(C) 1999(2000-2004). Renesas Technology Corp.
; and Renesas Solutions Corp., All rights reserved.
;
;***************************************************************************

⌨️ 快捷键说明

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