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

📄 v3k_framlcd_demo_sdcc.asm

📁 这是ramtron公司的铁电单片机的开发程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	mov	dph,r7
	push	ar4
	push	ar5
	lcall	__mulint
	mov	r2,dpl
	mov	r3,dph
	pop	ar5
	pop	ar4
;     genMinus
	mov	a,_int2lcd_number_1_1
	clr	c
;	Peephole 236.l	used r2 instead of ar2
	subb	a,r2
	mov	_int2lcd_number_1_1,a
	mov	a,(_int2lcd_number_1_1 + 1)
;	Peephole 236.l	used r3 instead of ar3
	subb	a,r3
	mov	(_int2lcd_number_1_1 + 1),a
00115$:
	C$V2K_CHAR_LCD_P0_SDCC.h$336$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:336: x = (number / 10);						//Define the number of thens
;     genAssign
	mov	__divuint_PARM_2,#0x0A
	clr	a
	mov	(__divuint_PARM_2 + 1),a
;     genCall
	mov	dpl,_int2lcd_number_1_1
	mov	dph,(_int2lcd_number_1_1 + 1)
	push	ar4
	push	ar5
	lcall	__divuint
	mov	r6,dpl
	mov	r7,dph
	pop	ar5
	pop	ar4
	C$V2K_CHAR_LCD_P0_SDCC.h$337$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:337: if( (zerodisplay !=0)|| (x !=0))
;     genCmpEq
;	Peephole 112.b	changed ljmp to sjmp
;	Peephole 198	optimized misc jump sequence
	cjne	r4,#0x00,00116$
	cjne	r5,#0x00,00116$
;00140$:
;	Peephole 200	removed redundant sjmp
00141$:
;     genCmpEq
	cjne	r6,#0x00,00142$
	cjne	r7,#0x00,00142$
;	Peephole 112.b	changed ljmp to sjmp
	sjmp	00117$
00142$:
00116$:
	C$V2K_CHAR_LCD_P0_SDCC.h$338$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:338: sendlcdchar((x+'0'));
;     genCast
	mov	ar2,r6
;     genPlus
	mov	a,#0x30
;	Peephole 236.a	used r2 instead of ar2
	add	a,r2
	mov	dpl,a
;     genCall
	push	ar6
	push	ar7
	lcall	_sendlcdchar
	pop	ar7
	pop	ar6
;	Peephole 112.b	changed ljmp to sjmp
	sjmp	00118$
00117$:
	C$V2K_CHAR_LCD_P0_SDCC.h$340$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:340: sendlcdchar(' ');				//display a blank space instead
;     genCall
	mov	dpl,#0x20
	push	ar6
	push	ar7
	lcall	_sendlcdchar
	pop	ar7
	pop	ar6
00118$:
	C$V2K_CHAR_LCD_P0_SDCC.h$343$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:343: if(x>0)
;     genIfx
	mov	a,r6
	orl	a,r7
;     genIfxJump
;	Peephole 110	removed ljmp by inverse jump logic
	jz	00121$
00143$:
	C$V2K_CHAR_LCD_P0_SDCC.h$344$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:344: number = number - (x*10);
;     genAssign
	mov	__mulint_PARM_2,#0x0A
	clr	a
	mov	(__mulint_PARM_2 + 1),a
;     genCall
	mov	dpl,r6
	mov	dph,r7
	lcall	__mulint
	mov	r2,dpl
	mov	r3,dph
;     genMinus
	mov	a,_int2lcd_number_1_1
	clr	c
;	Peephole 236.l	used r2 instead of ar2
	subb	a,r2
	mov	_int2lcd_number_1_1,a
	mov	a,(_int2lcd_number_1_1 + 1)
;	Peephole 236.l	used r3 instead of ar3
	subb	a,r3
	mov	(_int2lcd_number_1_1 + 1),a
00121$:
	C$V2K_CHAR_LCD_P0_SDCC.h$346$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:346: sendlcdchar(number + '0');
;     genCast
	mov	r2,_int2lcd_number_1_1
;     genPlus
	mov	a,#0x30
;	Peephole 236.a	used r2 instead of ar2
	add	a,r2
	mov	dpl,a
;     genCall
	C$V2K_CHAR_LCD_P0_SDCC.h$348$1$1 ==.
	XG$int2lcd$0$0 ==.
;	Peephole 253.b	replaced lcall/ret with ljmp
	ljmp	_sendlcdchar
;------------------------------------------------------------
;Allocation info for local variables in function 'lcdstring'
;------------------------------------------------------------
;pointer                   Allocated to registers r2 r3 
;cptr                      Allocated to registers 
;letter                    Allocated to registers r4 
;------------------------------------------------------------
	G$lcdstring$0$0 ==.
	C$V2K_CHAR_LCD_P0_SDCC.h$371$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:371: void lcdstring(char code *pointer)
;	-----------------------------------------
;	 function lcdstring
;	-----------------------------------------
_lcdstring:
;     genReceive
	mov	r2,dpl
	mov	r3,dph
	C$V2K_CHAR_LCD_P0_SDCC.h$376$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:376: do{
;     genAssign
00101$:
	C$V2K_CHAR_LCD_P0_SDCC.h$378$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:378: letter = *pointer++;
;     genPointerGet
;     genCodePointerGet
	mov	dpl,r2
	mov	dph,r3
	clr	a
	movc	a,@a+dptr
	mov	r4,a
	inc	dptr
	mov	r2,dpl
	mov	r3,dph
	C$V2K_CHAR_LCD_P0_SDCC.h$379$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:379: sendlcdchar( letter);
;     genCall
	mov	dpl,r4
	push	ar2
	push	ar3
	lcall	_sendlcdchar
	pop	ar3
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$381$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:381: }while( *pointer != '\0');
;     genPointerGet
;     genCodePointerGet
	mov	dpl,r2
	mov	dph,r3
;	Peephole 181	changed mov to clr
	clr	a
	movc	a,@a+dptr
;     genCmpEq
;	Peephole 115.b	jump optimization
	mov	r4,a
	jz	00108$
00107$:
;	Peephole 112.b	changed ljmp to sjmp
	sjmp	00101$
00108$:
00104$:
	C$V2K_CHAR_LCD_P0_SDCC.h$383$1$1 ==.
	XG$lcdstring$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'sendlcdchar'
;------------------------------------------------------------
;caract                    Allocated to registers r2 
;tosend                    Allocated to registers r3 
;lcdslow                   Allocated to registers 
;------------------------------------------------------------
	G$sendlcdchar$0$0 ==.
	C$V2K_CHAR_LCD_P0_SDCC.h$403$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:403: void sendlcdchar( char caract)
;	-----------------------------------------
;	 function sendlcdchar
;	-----------------------------------------
_sendlcdchar:
;     genReceive
	mov	r2,dpl
	C$V2K_CHAR_LCD_P0_SDCC.h$408$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:408: LCDPORT = 0x00;
;     genAssign
	mov	_P0,#0x00
	C$V2K_CHAR_LCD_P0_SDCC.h$409$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:409: tosend = caract&0xF0;					//Send the upper quartet of the character
;     genAnd
	mov	a,#0xF0
	anl	a,r2
	mov	r3,a
	C$V2K_CHAR_LCD_P0_SDCC.h$410$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:410: LCDPORT =tosend;
;     genAssign
	mov	_P0,r3
	C$V2K_CHAR_LCD_P0_SDCC.h$412$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:412: LCD_RS = 1;							//set RS line
;     genAssign
	setb	_LCD_RS
	C$V2K_CHAR_LCD_P0_SDCC.h$413$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:413: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$414$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:414: LCD_E = 1;							//set E line
;     genAssign
	setb	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$415$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:415: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$416$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:416: LCD_E = 0;						//clear E line
;     genAssign
	clr	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$417$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:417: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$418$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:418: tosend = (caract & 0x0F)*16;				//Position the Lower quartet of the character
;     genAnd
	anl	ar2,#0x0F
;     genLeftShift
;     genLeftShiftLiteral
;     genlshOne
	mov	a,r2
	swap	a
	anl	a,#0xf0
	mov	r3,a
	C$V2K_CHAR_LCD_P0_SDCC.h$419$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:419: LCDPORT &= 0x0F;					//Clear Upper Quartet of LCDPORT
;     genAnd
	anl	_P0,#0x0F
	C$V2K_CHAR_LCD_P0_SDCC.h$420$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:420: LCDPORT = LCDPORT + tosend;				//Put the Lower Quartet of the character on LCD
;     genPlus
;	Peephole 236.g	used r3 instead of ar3
	mov	a,r3
	add	a,_P0
	mov	_P0,a
	C$V2K_CHAR_LCD_P0_SDCC.h$421$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:421: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$423$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:423: LCD_E = 1;							//set E line
;     genAssign
	setb	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$424$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:424: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$425$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:425: LCD_E = 0;							//clear E line
;     genAssign
	clr	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$426$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:426: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$427$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:427: lcdbusy();
;     genCall
	C$V2K_CHAR_LCD_P0_SDCC.h$428$1$1 ==.
	XG$sendlcdchar$0$0 ==.
;	Peephole 253.b	replaced lcall/ret with ljmp
	ljmp	_lcdbusy
;------------------------------------------------------------
;Allocation info for local variables in function 'sendlcdcmd'
;------------------------------------------------------------
;command                   Allocated to registers r2 
;tosend                    Allocated to registers r3 
;lcdslow                   Allocated to registers 
;------------------------------------------------------------
	G$sendlcdcmd$0$0 ==.
	C$V2K_CHAR_LCD_P0_SDCC.h$448$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:448: void sendlcdcmd( unsigned char command)
;	-----------------------------------------
;	 function sendlcdcmd
;	-----------------------------------------
_sendlcdcmd:
;     genReceive
	mov	r2,dpl
	C$V2K_CHAR_LCD_P0_SDCC.h$453$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:453: tosend = command&0xF0;					//send MSQ of command
;     genAnd
	mov	a,#0xF0
	anl	a,r2
	mov	r3,a
	C$V2K_CHAR_LCD_P0_SDCC.h$454$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:454: LCDPORT &= 0x0F;
;     genAnd
	anl	_P0,#0x0F
	C$V2K_CHAR_LCD_P0_SDCC.h$455$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:455: LCDPORT |=tosend;						//
;     genOr
	mov	a,r3
	orl	_P0,a
	C$V2K_CHAR_LCD_P0_SDCC.h$457$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:457: LCD_RS = 0;							// Clear RS line for commands
;     genAssign
	clr	_LCD_RS
	C$V2K_CHAR_LCD_P0_SDCC.h$458$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:458: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$459$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:459: LCD_E = 1;							// set E line
;     genAssign
	setb	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$460$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:460: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$461$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:461: LCD_E = 0;							//Clear E line
;     genAssign
	clr	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$462$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:462: LCDSlow();							//Slow down comm with LCD
;     genCall
	push	ar2
	lcall	_LCDSlow
	pop	ar2
	C$V2K_CHAR_LCD_P0_SDCC.h$463$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:463: tosend =  (command & 0x0F)*16;			//Position the Lower quartet of the character
;     genAnd
	anl	ar2,#0x0F
;     genLeftShift
;     genLeftShiftLiteral
;     genlshOne
	mov	a,r2
	swap	a
	anl	a,#0xf0
	mov	r3,a
	C$V2K_CHAR_LCD_P0_SDCC.h$464$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:464: LCDPORT &= 0x0F;						//Clear Upper Quartet of LCDPORT
;     genAnd
	anl	_P0,#0x0F
	C$V2K_CHAR_LCD_P0_SDCC.h$465$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:465: LCDPORT |=tosend;						//send LSQ of character
;     genOr
	mov	a,r3
	orl	_P0,a
	C$V2K_CHAR_LCD_P0_SDCC.h$466$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:466: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$467$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:467: LCD_E = 1;							//Set E line
;     genAssign
	setb	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$468$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:468: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$469$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:469: LCD_E= 0;								//clear E line
;     genAssign
	clr	_LCD_E
	C$V2K_CHAR_LCD_P0_SDCC.h$470$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:470: LCDSlow();							//Slow down comm with LCD
;     genCall
	lcall	_LCDSlow
	C$V2K_CHAR_LCD_P0_SDCC.h$471$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:471: lcdbusy();							//Wait LCD
;     genCall
	C$V2K_CHAR_LCD_P0_SDCC.h$473$1$1 ==.
	XG$sendlcdcmd$0$0 ==.
;	Peephole 253.b	replaced lcall/ret with ljmp
	ljmp	_lcdbusy
;------------------------------------------------------------
;Allocation info for local variables in function 'lcdbusy'
;------------------------------------------------------------
;busyread                  Allocated to registers r2 
;------------------------------------------------------------
	G$lcdbusy$0$0 ==.
	C$V2K_CHAR_LCD_P0_SDCC.h$491$1$1 ==.

⌨️ 快捷键说明

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