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

📄 startup.asm

📁 松下的单片机启动文件。适合学习启动文件的编写
💻 ASM
字号:
;/****************************************************************************
;#ifdef DOC

;File Name		:startup.asm

;Description		:IE Bus System Startup file

;Remark			:

;Date			:05/6/28

;Copyright		:Matsushita Electric Industrial Co.,Ltd.

;#endif
;*****************************************************************************/
;SECTION
_STEXT			SECTION		CODE,PUBLIC,0
_CONST			SECTION		CODE,PUBLIC,1
_GCONST		SECTION		CODE,PUBLIC,1
_DATA			SECTION		DATA,PUBLIC,1
_GDATA			SECTION		DATA,PUBLIC,1
_ROMDATA		SECTION		CODE,PUBLIC,1
_GROMDATA		SECTION		CODE,PUBLIC,1
_ROMDATAEND		SECTION		CODE,PUBLIC,1
_TEXT			SECTION		CODE,PUBLIC,0
_BSS			SECTION		DATA,PUBLIC,1
_GBSS			SECTION		DATA,PUBLIC,1
_BSSEND			SECTION		DATA,PUBLIC,1

	global		_main
;/*-----------------------------------------------------------------*/
;/*	 C program function												*/
;/*-----------------------------------------------------------------*/
	global	_HU_JudgeReset
	global	_HU_ClockInit
	global	_HU_PortInit
	global	_HU_IoRegisterInit
	global	_HU_FirstSettingSFR
	GLOBAL	_main, _vIRQ_sc0rirq
	GLOBAL	_main, _vIRQ_sc0tirq
	GLOBAL	_main, _vIRQ_tm7irq

#ifdef _MN101E_ROMC
	global	_vROMCORR_main
	global	_SC4IRQ
	global	_IRQ3
#endif

_STEXT		SECTION						; Specifies -T_STEXT=4000 by linker
	da	A(Reset)					; Sets reset vector
	da	A(NoIRQ)						;	/* NMI		*/
	da	A(_int_irq0)						;	/* IRQ0		*/
	da	A(NoIRQ)						; 	/* IRQ1		*/
	da	A(NoIRQ)						; 	/* IRQ2		*/
	da	A(NoIRQ)						; 	/* IRQ3		*/
	da	A(NoIRQ)						; 	/* IRQ4		*/
	da	A(NoIRQ)						; 	/* IRQ5		*/
	da	A(_int_tm0)						; 	/* TM0		*/
	da	A(NoIRQ)			; 	/* TM1		*/
	da	A(NoIRQ)						; 	/* TM2		*/
	da	A(NoIRQ)						; 	/* TM3		*/
	da	A(NoIRQ)						; 	/* TM6		*/
	da	A(NoIRQ)			; 	/* TB		*/
	da	A(NoIRQ)						; 	/* TM8		*/
	da	A(_vIRQ_tm7irq)						; 	/* TM7		*/
	da	A(NoIRQ)						; 	/* T7OC		*/
	da	A(_vIRQ_sc0rirq)					; 	/* SCOR		*/
	da	A(_vIRQ_sc0tirq)					; 	/* SCOT		*/
	da	A(NoIRQ)						; 	/* SC1R		*/
	da	A(NoIRQ)						; 	/* SC1T		*/
	da	A(_int_sc2)						; 	/* SC2		*/
	da	A(NoIRQ)						; 	/* SC3T		*/
	da	A(NoIRQ)						; 	/* SC3S		*/
	da	A(NoIRQ)						; 	/* Reserved	*/
	da	A(NoIRQ)						; 	/* SC4R		*/
#ifdef _MN101E_ROMC
	da	A(NoIRQ)						; 	/* SC4T		*/
#else
	da	A(NoIRQ)						; 	/* SC4T		*/
#endif
	da	A(NoIRQ)						; 	/* AD		*/
	da	A(NoIRQ)						; 	/* ATC0		*/
	da	A(NoIRQ)						; 	/* ATC1		*/


	org	0xc0							; To location _STEXT + 0xc0 (0x40c0)
;/*-----------------------------------------------------------------------------*/
;/*	for SpecialFunction															*/
;/*-----------------------------------------------------------------------------*/

_DATA		SECTION

_ForeignFlag	dc	0		; 偙偺僼儔僌偼巇岦偗抧愗傝懼偊帪偺敾掕僼儔僌偲偟偰巊梡偟傑偡丅
							; 昁偢丄僜僼僩儕僽乕僩帪偺RAM僋儕傾奐巒億僀儞僩傛傝傕慜偵攝抲偟偰偔偩偝偄丅
							; 巇岦偗抧愗傝懼偊帪偵偼丄偙偺椞堟偼僋儕傾偝傟傑偣傫丅
	global	_ForeignFlag

_TEXT		SECTION

NoIRQ:
	rti						; Function that does nothing other than return
	
Reset:
	mov	0xB0,D0	;/* @P2 No7 Weibo Zhang [05/07/31] *//* @P2 No19 Weibo Zhang [05/08/17] */
	mov 	D0,PSW	;/* @P2 No7 Weibo Zhang [05/07/31] */
	;movw	0x2DFF,A0	; 僗僞僢僋億僀儞僞偺弶婜壔/* @No16  Weibo Zhang [05/06/27] */
	movw	0x3E00,A0 ;/* @No16 Weibo Zhang [05/06/27] */
	movw	A0,SP
	
	mov	0x00,D0
	mov	D0,(0x03FDF)
	or	0x01,D0
	mov	D0,(0x03FDF)
	mov	158,D1
pllloop:
	sub	1,D1
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	bne	pllloop
	or	0x02,D0
	mov	D0,(0x03FDF)
	sub	D1,D1
	
					; 惷揑曄悢偺弶婜壔
	movw	_BSS,A0			; _BSS 椞堟偺愭摢傾僪儗僗 -> A0
	sub	D0,D0			; D0 = 0
clear1:
	mov	D0,(A0)
	addw	0x1,A0
	cmpw	_BSSEND,A0		; RAM 椞堟偺嵟屻偐丠
	blt	clear1			; _BSSEND > A0 偱 clear1 傊

					; 弶婜抣晅偒惷揑曄悢偺弶婜壔
raminit:
	movw	_ROMDATA,A0
	movw	_DATA,A1
	cmpw	_GROMDATA,A0
	beq	next1
init1:				; ROMDATA(A0) -> DATA(A1)
	mov	(A0),D0
	mov	D0,(A1)
	addw	0x1,A0
	addw	0x1,A1
	cmpw	_GROMDATA,A0
	bne	init1

next1:
	movw	_GROMDATA,A0
	movw	_GDATA,A1
	cmpw	_TEXT,A0
	beq	next2
init2:				; GROMDATA(A0) -> GDATA(A1)
	mov	(A0),D0
	mov	D0,(A1)
	addw	0x1,A0
	addw	0x1,A1
	cmpw	_TEXT,A0
	bne	init2

next2:				; 儗僕僗僞偺弶婜壔
	subw	DW0,DW0
	movw	DW0,DW1
	movw	DW0,A0
	movw	DW0,A1
				; 儊僀儞娭悢偺屇傃弌偟
_loop1:
	jsr	_main

				; 廔椆張棟
	pi			; 僔儈儏儗乕僞忋偱僽儗僀僋傪偐偗傞丅
	rts

	END

⌨️ 快捷键说明

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