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

📄 v3k_fram_uart_demo1_sdcc.asm

📁 DEMO程序 单周期8051内核 8K铁电FRAM 56IO 4KRAM 40MIPS
💻 ASM
📖 第 1 页 / 共 5 页
字号:
_WriteReadFramUart0_PARM_2::
	.ds 1
;--------------------------------------------------------
; overlayable items in internal ram 
;--------------------------------------------------------
	.area	OSEG    (OVR,DATA)
	.area	OSEG    (OVR,DATA)
	.area	OSEG    (OVR,DATA)
	.area	OSEG    (OVR,DATA)
LWriteFram$value$1$1==.
_WriteFram_PARM_2::
	.ds 1
	.area	OSEG    (OVR,DATA)
	.area	OSEG    (OVR,DATA)
;--------------------------------------------------------
; Stack segment in internal ram 
;--------------------------------------------------------
	.area	SSEG	(DATA)
__start__stack:
	.ds	1

;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
	.area ISEG    (DATA)
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
	.area BSEG    (BIT)
;--------------------------------------------------------
; paged external ram data
;--------------------------------------------------------
	.area PSEG    (PAG,XDATA)
;--------------------------------------------------------
; external ram data
;--------------------------------------------------------
	.area XSEG    (XDATA)
G$frambase$0$0 == 0x8000
_frambase	=	0x8000
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
	.area XISEG   (XDATA)
	.area CSEG    (CODE)
	.area GSINIT0 (CODE)
	.area GSINIT1 (CODE)
	.area GSINIT2 (CODE)
	.area GSINIT3 (CODE)
	.area GSINIT4 (CODE)
	.area GSINIT5 (CODE)
;--------------------------------------------------------
; interrupt vector 
;--------------------------------------------------------
	.area CSEG    (CODE)
__interrupt_vect:
	ljmp	__sdcc_gsinit_startup
	ljmp	_INT0Interrupt
	.ds	5
	reti
	.ds	7
	reti
	.ds	7
	reti
	.ds	7
	reti
	.ds	7
	ljmp	_UART0Interrupt
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
	.area CSEG    (CODE)
	.area GSINIT  (CODE)
	.area GSFINAL (CODE)
	.area GSINIT  (CODE)
	.globl __sdcc_gsinit_startup
	.globl __sdcc_program_startup
	.globl __start__stack
	.globl __mcs51_genXINIT
	.globl __mcs51_genXRAMCLEAR
	.globl __mcs51_genRAMCLEAR
	G$FramInit$0$0 ==.
	C$V3K_FRAM_UART_Demo1_SDCC.c$62$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:62: xdata unsigned char * data framptr = &frambase ;		//Init a pointer in IRAM pointing to the frambase var.
;     genAddrOf
	mov	_framptr,#_frambase
	mov	(_framptr + 1),#(_frambase >> 8)
	G$FramInit$0$0 ==.
	C$V3K_FRAM_UART_Demo1_SDCC.c$66$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:66: char msg[] = "FRAM Memory Demo \0";
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	_msg,#0x46
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0001),#0x52
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0002),#0x41
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0003),#0x4D
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0004),#0x20
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0005),#0x4D
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0006),#0x65
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0007),#0x6D
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0008),#0x6F
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0009),#0x72
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000a),#0x79
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000b),#0x20
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000c),#0x44
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000d),#0x65
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000e),#0x6D
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x000f),#0x6F
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0010),#0x20
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0011),#0x00
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msg + 0x0012),#0x00
	G$FramInit$0$0 ==.
	C$V3K_FRAM_UART_Demo1_SDCC.c$67$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:67: char msgint0[] = "EXT INT0 received";
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	_msgint0,#0x45
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0001),#0x58
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0002),#0x54
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0003),#0x20
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0004),#0x49
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0005),#0x4E
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0006),#0x54
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0007),#0x30
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0008),#0x20
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0009),#0x72
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000a),#0x65
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000b),#0x63
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000c),#0x65
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000d),#0x69
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000e),#0x76
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x000f),#0x65
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0010),#0x64
;     genPointerSet
;     genNearPointerSet
;     genDataPointerSet
	mov	(_msgint0 + 0x0011),#0x00
	.area GSFINAL (CODE)
	ljmp	__sdcc_program_startup
;--------------------------------------------------------
; Home
;--------------------------------------------------------
	.area HOME    (CODE)
	.area CSEG    (CODE)
;--------------------------------------------------------
; code
;--------------------------------------------------------
	.area CSEG    (CODE)
__sdcc_program_startup:
	lcall	_main
;	return from main will lock up
	sjmp .
;------------------------------------------------------------
;Allocation info for local variables in function 'main'
;------------------------------------------------------------
;letter                    Allocated to registers r2 
;cptr                      Allocated to registers r3 r4 
;------------------------------------------------------------
	G$main$0$0 ==.
	C$V3K_FRAM_UART_Demo1_SDCC.c$74$0$0 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:74: void main (void){
;	-----------------------------------------
;	 function main
;	-----------------------------------------
_main:
	ar2 = 0x02
	ar3 = 0x03
	ar4 = 0x04
	ar5 = 0x05
	ar6 = 0x06
	ar7 = 0x07
	ar0 = 0x00
	ar1 = 0x01
	C$V3K_FRAM_UART_Demo1_SDCC.c$79$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:79: PERIPHEN1 = 0x09;					//Enable UART0 + Timer0
;     genAssign
	mov	_PERIPHEN1,#0x09
	C$V3K_FRAM_UART_Demo1_SDCC.c$80$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:80: PERIPHEN2 = 0x08;					//Enable IO Ports
;     genAssign
	mov	_PERIPHEN2,#0x08
	C$V3K_FRAM_UART_Demo1_SDCC.c$82$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:82: uart0config();						//Configure Uart0
;     genCall
	lcall	_uart0config
	C$V3K_FRAM_UART_Demo1_SDCC.c$87$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:87: GENINTEN = 0x02;					//Set the PININTCFG bit before configuring the INT0 pin event
;     genAssign
	mov	_GENINTEN,#0x02
	C$V3K_FRAM_UART_Demo1_SDCC.c$91$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:91: INTSRC1 = 0x01;					//INT0 vector source = INT0 pin
;     genAssign
	mov	_INTSRC1,#0x01
	C$V3K_FRAM_UART_Demo1_SDCC.c$92$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:92: IPINSENS1 = 0x01;					//Set INT0 sensitive on edge(1) or Level(0)
;     genAssign
	mov	_IPINSENS1,#0x01
	C$V3K_FRAM_UART_Demo1_SDCC.c$93$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:93: IPININV1 = 0x00;					//Set INT0 Pin sensitivity on Low Level/Inversion
;     genAssign
	mov	_IPININV1,#0x00
	C$V3K_FRAM_UART_Demo1_SDCC.c$94$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:94: INTEN1 = 0x21;						//Enable INT0 (bit0) and UART0 (bit5) Interrupt
;     genAssign
	mov	_INTEN1,#0x21
	C$V3K_FRAM_UART_Demo1_SDCC.c$95$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:95: GENINTEN = 0x01;					//Enable Global interrupt
;     genAssign
	mov	_GENINTEN,#0x01
	C$V3K_FRAM_UART_Demo1_SDCC.c$97$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:97: DEVMEMCFG  |= 0xC0;					//Activate the FRAM
;     genOr
	orl	_DEVMEMCFG,#0xC0
	C$V3K_FRAM_UART_Demo1_SDCC.c$101$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:101: letter = 'A';
;     genAssign
	mov	r2,#0x41
	C$V3K_FRAM_UART_Demo1_SDCC.c$102$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:102: for(cptr = 0; cptr < 0x400; cptr++)
;     genAssign
	mov	r3,#0x00
	mov	r4,#0x00
00131$:
;     genCmpLt
;     genCmp
	clr	c
	mov	a,r3
	subb	a,#0x00
	mov	a,r4
	xrl	a,#0x80
	subb	a,#0x84
;     genIfxJump
;	Peephole 108	removed ljmp by inverse jump logic
	jnc	00134$
00203$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$104$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:104: *(framptr+cptr) = letter;
;     genPlus
;	Peephole 236.g	used r3 instead of ar3
	mov	a,r3
	add	a,_framptr
	mov	dpl,a
;	Peephole 236.g	used r4 instead of ar4
	mov	a,r4
	addc	a,(_framptr + 1)
	mov	dph,a
;     genPointerSet
;     genFarPointerSet
	mov	a,r2
	movx	@dptr,a
	C$V3K_FRAM_UART_Demo1_SDCC.c$106$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:106: if(letter == 'A')
;     genCmpEq
;	Peephole 112.b	changed ljmp to sjmp
;	Peephole 199	optimized misc jump sequence
	cjne	r2,#0x41,00102$
;00204$:
;	Peephole 200	removed redundant sjmp
00205$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$107$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:107: letter = 'Z';
;     genAssign
	mov	r2,#0x5A
;	Peephole 112.b	changed ljmp to sjmp
	sjmp	00133$
00102$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$109$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:109: letter = 'A';
;     genAssign
	mov	r2,#0x41
00133$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$102$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:102: for(cptr = 0; cptr < 0x400; cptr++)
;     genPlus
;     genPlusIncr
	inc	r3
;	Peephole 112.b	changed ljmp to sjmp
;	Peephole 243	avoided branch to sjmp
	cjne	r3,#0x00,00131$
	inc	r4
00206$:
	sjmp	00131$
00134$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$113$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:113: letter = 'B';
;     genAssign
	mov	r2,#0x42
	C$V3K_FRAM_UART_Demo1_SDCC.c$114$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:114: for(cptr = 0x400; cptr < 0x800; cptr++)
;     genAssign
	mov	r3,#0x00
	mov	r4,#0x04
00135$:
;     genCmpLt
;     genCmp
	clr	c
	mov	a,r3
	subb	a,#0x00
	mov	a,r4
	xrl	a,#0x80
	subb	a,#0x88
;     genIfxJump
;	Peephole 108	removed ljmp by inverse jump logic
	jnc	00138$
00207$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$116$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:116: *(framptr+cptr) = letter;
;     genPlus
;	Peephole 236.g	used r3 instead of ar3
	mov	a,r3
	add	a,_framptr
	mov	dpl,a
;	Peephole 236.g	used r4 instead of ar4
	mov	a,r4
	addc	a,(_framptr + 1)
	mov	dph,a
;     genPointerSet
;     genFarPointerSet
	mov	a,r2
	movx	@dptr,a
	C$V3K_FRAM_UART_Demo1_SDCC.c$118$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:118: if(letter == 'B')
;     genCmpEq
;	Peephole 112.b	changed ljmp to sjmp
;	Peephole 199	optimized misc jump sequence
	cjne	r2,#0x42,00105$
;00208$:
;	Peephole 200	removed redundant sjmp
00209$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$119$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:119: letter = 'Y';
;     genAssign
	mov	r2,#0x59
;	Peephole 112.b	changed ljmp to sjmp
	sjmp	00137$
00105$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$121$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:121: letter = 'B';
;     genAssign
	mov	r2,#0x42
00137$:
	C$V3K_FRAM_UART_Demo1_SDCC.c$114$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:114: for(cptr = 0x400; cptr < 0x800; cptr++)

⌨️ 快捷键说明

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