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

📄 initsct.h

📁 低价位瑞萨单片机的水表程序
💻 H
字号:
/***********************************************************************/
/*                                                                     */
/*  FILE        :initsct.h                                             */
/*  DATE        :Wed, Nov 19, 2008                                     */
/*  DESCRIPTION :define the macro for initialization of sections.      */
/*  CPU GROUP   :1B                                                    */
/*                                                                     */
/*  This file is generated by Renesas Project Generator (Ver.4.8).     */
/*                                                                     */
/***********************************************************************/

/***********************************************************
 *  COMPILER for R8C/Tiny
 *
 *  Copyright(c) 2004 Renesas Technology Corp.
 *  And Renesas Solutions Corp.,All Rights Reserved.
 *
 *  initsct.h
 *
 *  clear for bss section
 *  transfer initialized data to data section
 * 
 *  note: Do not modify
 *
 * $Date: 2007/01/31 03:16:12 $
 * $Revision: 1.9.4.2 $
 **********************************************************/ 
#include "cstartdef.h"

#pragma section program interrupt

#if __WATCH_DOG__ != 1

#define scopy(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	.initsct "X"I,rom"Y",noalign\n"\
			"	mov.w	#(topof "X"I)&0ffffH,A0\n"\
			"	mov.b	#00H,R1H\n"\
			"	mov.w	#(topof "X")&0ffffH,A1\n"\
			"	mov.w	#sizeof	"X",R3\n"\
			"	smovf.b");

#define	sclear(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	mov.b	#00H,R0L\n"\
			"	mov.w	#(topof	"X") ,A1\n"\
			"	mov.w	#sizeof	"X",R3\n"\
			"	sstr.b");
#else

#define scopy(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	.initsct "X"I,rom"Y",noalign\n"\
			"	scopy	"X"I,"X"");

#define	sclear(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	N_BZERO	"X"");	

#endif


#define	scopy_f(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	.initsct "X"I,rom"Y",noalign\n"\
			"	push.w	#(sizeof "X") >> 16\n"\
			"	push.w	#(sizeof "X") & 0ffffH\n"\
			"	push.w	#(topof "X") >> 16\n"\
			"	push.w	#(topof "X") & 0ffffH\n"\
			"	push.w	#(topof "X"I) >> 16\n"\
			"	push.w	#(topof "X"I) & 0ffffH\n"\
			"	.stk	12\n"\
			"	.glb	_bcopy\n"\
			"	.call	_bcopy,G\n"\
			"	jsr.a	_bcopy\n"\
			"	add.b	#12,sp\n"\
			"	.stk	-12");

#define sclear_f(X,Y,Z)	_asm("	.initsct "X","Y","Z"\n"\
			"	push.w	#(sizeof "X")>>16\n"\
			"	push.w	#(sizeof "X")&0ffffH\n"\
			"	push.w	#(topof "X")>>16\n"\
			"	push.w	#(topof "X")&0ffffH\n"\
			"	.stk	8\n"\
			"	.glb	_bzero\n"\
			"	.call	_bzero,G\n"\
			"	jsr.a	_bzero\n"\
			"	add.b	#8H,sp\n"\
			"	.stk	-8");	
			

#if __WATCH_DOG__ == 1
#pragma ASM
scopy		.macro	FROM_,TO_
		mov.b	#00,0DH
		mov.b	#0ffH,0DH
		mov.w	#0000H,R0
		.local M1
	M1:
		cmp.w	#sizeof TO_,R0
		.local	M2
		jeq	M2
		cmp.w	#0064H,R0
		.local	M3
		jne	M3
		mov.b	#00,0DH
		mov.b	#0ffH,0DH
	M3:
		mov.w	#(topof FROM_)&0ffffH,A0	
		mov.w	#(topof TO_)&0ffffH,A1	
		add.w	R0,A0
		add.w	R0,A1
		mov.b	[A0],[A1]	
		add.w	#1,R0
		jmp	M1
	M2:
		.endm

N_BZERO		.macro	SECT_
		mov.b	#00,0DH
		mov.b	#0ffH,0DH
		mov.w	#0000H,R0
		.local	M1	
	M1:
		cmp.w	#sizeof SECT_,R0
		.local	M2
		jeq	M2
		cmp.w	#0064H,R0
		.local	M3
		jne	M3
		mov.b	#00,0DH
		mov.b	#0ffH,0DH
	M3:
		mov.w	#(topof	SECT_)&0ffffH,A0	
		add.w	R0,A0
		mov.b	#00H,[A0]
		add.w	#1H,R0
		jmp	M1
	M2:
		.endm
#pragma ENDASM
#endif

⌨️ 快捷键说明

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