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

📄 main.s

📁 基于M16的字符液晶1602的驱动
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile E:\avr\1602测试程序\main.c
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 6
; #include <iom16v.h>
; #include "lcd.h"
; #include "delay.h"
; 
; void init_devices( void )
; {
	.dbline 7
;  	 LCD_init();
	xcall _LCD_init
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;          tmp_f -> y+9
;              i -> y+5
	.even
_main::
	sbiw R28,13
	.dbline -1
	.dbline 11
; }
; 
; void main( void )
; {
	.dbline 12
;  	 long int i = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	std y+5,R20
	std y+6,R21
	std y+7,R22
	std y+8,R23
	.dbline 13
; 	 float tmp_f = 0.00;	 
	ldi R16,<L3
	ldi R17,>L3
	xcall lpm32
	std y+9,R16
	std y+10,R17
	std y+11,R18
	std y+12,R19
	.dbline 14
;  	 init_devices();             //目标版初始化
	xcall _init_devices
	.dbline 16
; 	
; 	 LCD_write_string( 1, 4, "TEST LCD" );     //写字符串
	ldi R24,<L4
	ldi R25,>L4
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R16,1
	xcall _LCD_write_string
	.dbline 17
; 	 delay_ns( 1 );  //延时1S
	ldi R16,1
	xcall _delay_ns
	.dbline 18
; 	 LCD_write_string( 1, 0, "                        " );   //清第一行数据
	ldi R24,<L5
	ldi R25,>L5
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,1
	xcall _LCD_write_string
	.dbline 20
; 	 
; 	 for( i = 0; i < 1234; i++ )        //显示整数,小数
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	std y+5,R20
	std y+6,R21
	std y+7,R22
	std y+8,R23
L6:
	.dbline 21
; 	 {
	.dbline 22
; 	  	  LCD_write_datalongint( 2, 1, i ); //显示正整数 i
	ldd R2,y+5
	ldd R3,y+6
	ldd R4,y+7
	ldd R5,y+8
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	ldi R18,1
	ldi R16,2
	xcall _LCD_write_datalongint
	.dbline 23
; 		  LCD_write_datalongint( 1, 0, i*(-1) ); //显示负整数 -i
	ldd R2,y+5
	ldd R3,y+6
	ldd R4,y+7
	ldd R5,y+8
	ldi R20,255
	ldi R21,255
	ldi R22,255
	ldi R23,255
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
	clr R18
	ldi R16,1
	xcall _LCD_write_datalongint
	.dbline 24
; 		  delay_nms( 10 );
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 26
; 		  
; 		  tmp_f = 1.234 * i;
	ldi R16,<L10
	ldi R17,>L10
	xcall lpm32
	movw R2,R16
	movw R4,R18
	ldd R16,y+5
	ldd R17,y+6
	ldd R18,y+7
	ldd R19,y+8
	xcall long2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R2
	movw R18,R4
	xcall fpmule2
	std y+9,R16
	std y+10,R17
	std y+11,R18
	std y+12,R19
	.dbline 27
; 		  LCD_write_datafloat( 2, 8, tmp_f, 2 );  //显示正浮点数tmp_f, 小数位2位
	ldi R24,2
	std y+4,R24
	ldd R2,y+9
	ldd R3,y+10
	ldd R4,y+11
	ldd R5,y+12
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	ldi R18,8
	ldi R16,2
	xcall _LCD_write_datafloat
	.dbline 28
; 		  LCD_write_datafloat( 1, 7, tmp_f*(-1), 2 );  //显示负浮点数-tmp_f, 小数位2位
	ldi R24,2
	std y+4,R24
	ldi R16,<L11
	ldi R17,>L11
	xcall lpm32
	movw R24,R28
	adiw R24,9
	st -y,R25
	st -y,R24
	xcall fpmule1
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
	ldi R18,7
	ldi R16,1
	xcall _LCD_write_datafloat
	.dbline 30
; 		  
; 		  if( i == 1233 ) 
	ldi R20,209
	ldi R21,4
	ldi R22,0
	ldi R23,0
	ldd R2,y+5
	ldd R3,y+6
	ldd R4,y+7
	ldd R5,y+8
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L12
X0:
	.dbline 31
; 		  {
	.dbline 32
; 		   	  LCD_write_string( 1, 0, "                        " );   //清第一行数据
	ldi R24,<L5
	ldi R25,>L5
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,1
	xcall _LCD_write_string
	.dbline 33
; 			  LCD_write_string( 2, 0, "                        " );   //清第二行数据
	ldi R24,<L5
	ldi R25,>L5
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,2
	xcall _LCD_write_string
	.dbline 34
; 			  i = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	std y+5,R20
	std y+6,R21
	std y+7,R22
	std y+8,R23
	.dbline 35
; 	      }
L12:
	.dbline 36
; 	 }
L7:
	.dbline 20
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R2,y+5
	ldd R3,y+6
	ldd R4,y+7
	ldd R5,y+8
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	std y+5,R2
	std y+6,R3
	std y+7,R4
	std y+8,R5
	.dbline 20
	ldi R20,210
	ldi R21,4
	ldi R22,0
	ldi R23,0
	ldd R2,y+5
	ldd R3,y+6
	ldd R4,y+7
	ldd R5,y+8
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge X2
	xjmp L6
X2:
X1:
	.dbline -2
L2:
	.dbline 0 ; func end
	adiw R28,13
	ret
	.dbsym l tmp_f 9 D
	.dbsym l i 5 L
	.dbend
	.area lit(rom, con, rel)
L11:
	.word 0x0,0xbf80
L10:
	.word 0xf3b6,0x3f9d
	.area data(ram, con, rel)
	.dbfile E:\avr\1602测试程序\main.c
L5:
	.blkb 25
	.area idata
	.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
	.byte 32,32,32,32,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile E:\avr\1602测试程序\main.c
L4:
	.blkb 9
	.area idata
	.byte 'T,'E,'S,'T,32,'L,'C,'D,0
	.area data(ram, con, rel)
	.dbfile E:\avr\1602测试程序\main.c
	.area lit(rom, con, rel)
L3:
	.word 0x0,0x0
; }

⌨️ 快捷键说明

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