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

📄 1602六线接法练习.s

📁 iccavr下
💻 S
字号:
	.module _1602六线接法练习.c
	.area text(rom, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test/1602.h
	.dbfunc e LCD_init _LCD_init fV
	.even
_LCD_init::
	.dbline -1
	.dbline 30
; #include <iom16v.h>
; #include <macros.h>
; #include "1602.h"
; 
; 
; void main(void)
; {
;      LCD_init();                     //initialize lcd1602
;      while(1)
;        {
; 		 clear();                   //clear lcd1602
; 		 delay_nms(10);
;          LCD_write_string(0,0," ATmega 16 BOARD");    //write the string on the first 
; 		 									  //line at the first address
;          LCD_write_string(1,1,"  dushibiao ");
;          delay_nms(5000);
; 		 clear();
; 		 delay_nms(10);
;          LCD_write_string(0,0,"Stduy follow me");
;          LCD_write_string(0,1,"You will secceed");
;          delay_nms(5000);
;        }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 31
; }
	in R24,0x1a
	ori R24,240
	out 0x1a,R24
	.dbline 32
; }
	sbi 0x1a,3
	.dbline 33
; }
	sbi 0x1a,2
	.dbline 34
; }
	ldi R16,15
	ldi R17,0
	xcall _delay_nms
	.dbline 35
; }
	clr R18
	clr R19
	ldi R16,40
	ldi R17,0
	xcall _LCD_write_char
	.dbline 36
; }
	ldi R16,15
	ldi R17,0
	xcall _delay_nms
	.dbline 37
; }
	clr R18
	clr R19
	ldi R16,12
	ldi R17,0
	xcall _LCD_write_char
	.dbline 38
; }
	ldi R16,15
	ldi R17,0
	xcall _delay_nms
	.dbline 39
; }
	clr R18
	clr R19
	ldi R16,1
	ldi R17,0
	xcall _LCD_write_char
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_write_string _LCD_write_string fV
;              s -> R20,R21
;              Y -> R10
;              X -> R22
	.even
_LCD_write_string::
	xcall push_gset3
	mov R10,R18
	mov R22,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 49
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 50
; }
	mov R18,R10
	mov R16,R22
	xcall _LCD_set_xy
	xjmp L4
L3:
	.dbline 53
	.dbline 54
	movw R30,R20
	ldd R18,z+0
	clr R19
	clr R16
	clr R17
	xcall _LCD_write_char
	.dbline 55
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 56
L4:
	.dbline 52
; }
; }
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L3
	.dbline -2
L2:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbsym r Y 10 c
	.dbsym r X 22 c
	.dbend
	.dbfunc e LCD_set_xy _LCD_set_xy fV
;        address -> R20
;              y -> R20
;              x -> R22
	.even
_LCD_set_xy::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 65
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 67
; }
; }
	tst R20
	brne L7
	.dbline 67
	mov R20,R22
	subi R20,128    ; addi 128
	xjmp L8
L7:
	.dbline 69
; }
; }
	mov R20,R22
	subi R20,64    ; addi 192
L8:
	.dbline 70
; }
	clr R18
	clr R19
	mov R16,R20
	clr R17
	xcall _LCD_write_char
	.dbline -2
L6:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r address 20 c
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e LCD_en_write _LCD_en_write fV
	.even
_LCD_en_write::
	.dbline -1
	.dbline 76
; }
; }
; }
; }
; }
; }
	.dbline 77
; }
	sbi 0x1b,3
	.dbline 78
; }
	ldi R16,5
	ldi R17,0
	xcall _delay_nus
	.dbline 79
; }
	cbi 0x1b,3
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_write_char _LCD_write_char fV
;      data_temp -> R22,R23
;   command_temp -> R20,R21
;           data -> R12,R13
;        command -> R10,R11
	.even
_LCD_write_char::
	xcall push_gset4
	movw R12,R18
	movw R10,R16
	.dbline -1
	.dbline 88
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 90
; }
; }
	movw R20,R10
	.dbline 91
; }
	movw R22,R12
	.dbline 92
; }
	ldi R16,25
	ldi R17,0
	xcall _delay_nus
	.dbline 93
; }
	cpi R20,0
	cpc R20,R21
	brne L11
X0:
	.dbline 94
; }
	.dbline 95
; }
	sbi 0x1b,2
	.dbline 96
; }
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 97
; }
	movw R24,R22
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 98
; }
	xcall _LCD_en_write
	.dbline 99
; }
	lsl R22
	rol R23
	lsl R22
	rol R23
	lsl R22
	rol R23
	lsl R22
	rol R23
	.dbline 100
; }
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 101
; }
	movw R24,R22
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 102
; }
	xcall _LCD_en_write
	.dbline 103
; }
	xjmp L12
L11:
	.dbline 105
	.dbline 106
	cbi 0x1b,2
	.dbline 107
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 108
	movw R24,R20
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 109
	xcall _LCD_en_write
	.dbline 110
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	.dbline 111
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 112
	movw R24,R20
	andi R24,240
	andi R25,0
	in R2,0x1b
	clr R3
	or R2,R24
	or R3,R25
	out 0x1b,R2
	.dbline 113
	xcall _LCD_en_write
	.dbline 114
L12:
	.dbline -2
L10:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r data_temp 22 i
	.dbsym r command_temp 20 i
	.dbsym r data 12 i
	.dbsym r command 10 i
	.dbend
	.dbfunc e clear _clear fV
;              i -> R20
	.even
_clear::
	xcall push_gset1
	.dbline -1
	.dbline 120
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 122
; }
; }
	clr R18
	clr R16
	xcall _LCD_set_xy
	.dbline 123
; }
	clr R20
	xjmp L17
L14:
	.dbline 124
	ldi R18,32
	ldi R19,0
	clr R16
	clr R17
	xcall _LCD_write_char
L15:
	.dbline 123
	inc R20
L17:
	.dbline 123
	cpi R20,16
	brlo L14
	.dbline 125
; }
; }
	ldi R18,1
	clr R16
	xcall _LCD_set_xy
	.dbline 126
; }
	clr R20
	xjmp L21
L18:
	.dbline 127
	ldi R18,32
	ldi R19,0
	clr R16
	clr R17
	xcall _LCD_write_char
L19:
	.dbline 126
	inc R20
L21:
	.dbline 126
	cpi R20,16
	brlo L18
	.dbline -2
L13:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
	.dbfunc e main _main fV
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 7
	.dbline 8
	xcall _LCD_init
	xjmp L24
L23:
	.dbline 10
	.dbline 11
	xcall _clear
	.dbline 12
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 13
	ldi R24,<L26
	ldi R25,>L26
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 15
	ldi R24,<L27
	ldi R25,>L27
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,1
	xcall _LCD_write_string
	.dbline 16
	ldi R16,5000
	ldi R17,19
	xcall _delay_nms
	.dbline 17
	xcall _clear
	.dbline 18
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 19
	ldi R24,<L28
	ldi R25,>L28
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 20
	ldi R24,<L29
	ldi R25,>L29
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_write_string
	.dbline 21
	ldi R16,5000
	ldi R17,19
	xcall _delay_nms
	.dbline 22
L24:
	.dbline 9
	xjmp L23
X1:
	.dbline -2
L22:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L29:
	.blkb 17
	.area idata
	.byte 'Y,'o,'u,32,'w,'i,'l,'l,32,'s,'e,'c,'c,'e,'e,'d
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L28:
	.blkb 16
	.area idata
	.byte 'S,'t,'d,'u,'y,32,'f,'o,'l,'l,'o,'w,32,'m,'e,0
	.area data(ram, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L27:
	.blkb 13
	.area idata
	.byte 32,32,'d,'u,'s,'h,'i,'b,'i,'a,'o,32,0
	.area data(ram, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L26:
	.blkb 17
	.area idata
	.byte 32,'A,'T,'m,'e,'g,'a,32,49,54,32,'B,'O,'A,'R,'D
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c

⌨️ 快捷键说明

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