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

📄 lcd-picture.s

📁 基于AVR实验平台下ATMega128芯片实习作业
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module lcd-picture.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.dbfunc e delay _delay fV
;              i -> R20
;              t -> R16,R17
	.even
_delay::
	xcall push_gset1
	.dbline -1
	.dbline 11
; #include <iom128v.h>
; 
; #define req asm("sbi 0x03,6")
; #define cl_req asm("cbi 0x03,6")
; #define dat asm("sbi 0x18,0")
; #define cl_dat asm("cbi 0x18,0")
; #define cl_reset asm("cbi 0x15,3")
; #define set_reset asm("sbi 0x15,3")
; #define LCD 0x9000
; void delay (unsigned int t)
; {
	.dbline 13
	ldi R20,1
	xjmp L5
L2:
	.dbline 13
L3:
	.dbline 13
	inc R20
L5:
	.dbline 13
; unsigned char i;
; for (i=1;i<t;i++);
	mov R2,R20
	clr R3
	cp R2,R16
	cpc R3,R17
	brlo L2
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r t 16 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 16
; }
; void delay_1ms(void)                
;   {
	.dbline 18
	clr R16
	clr R17
	xjmp L10
L7:
	.dbline 18
L8:
	.dbline 18
	subi R16,255  ; offset = 1
	sbci R17,255
L10:
	.dbline 18
;    unsigned int i;
;    for (i=0;i<2286;i++);
	cpi R16,238
	ldi R30,8
	cpc R17,R30
	brlo L7
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 21
;   }
; void delay_nms(unsigned int n)      
;   {
	.dbline 22
;    unsigned int i=0;
	clr R20
	clr R21
	.dbline 23
;    for (i=0;i<n;i++)
	xjmp L15
L12:
	.dbline 24
	xcall _delay_1ms
L13:
	.dbline 23
	subi R20,255  ; offset = 1
	sbci R21,255
L15:
	.dbline 23
	cp R20,R22
	cpc R21,R23
	brlo L12
	.dbline -2
L11:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e lcd_w _lcd_w fV
;              p -> R20,R21
;           data -> R16
	.even
_lcd_w::
	xcall push_gset1
	.dbline -1
	.dbline 29
;    delay_1ms();
;   }
; 
; 
; void lcd_w(unsigned char data)
; {
	.dbline 30
; unsigned char *p=(unsigned char *)(LCD);
	ldi R20,36864
	ldi R21,144
L17:
	.dbline 32
L18:
	.dbline 31
; while((PINE&0x80)!=0x00)
	in R24,0x1
	andi R24,128
	brne L17
	.dbline 33
; ;
; dat;
	sbi 0x18,0
	.dbline 34
; *p=data;
	movw R30,R20
	std z+0,R16
	.dbline 35
; cl_dat;
	cbi 0x18,0
	.dbline 36
; ;;
	.dbline 36
	.dbline 37
; req;
	sbi 0x03,6
	.dbline 38
; ;;
	.dbline 38
L20:
	.dbline 40
L21:
	.dbline 39
; while((PINE&0x80)==0x00)
	in R24,0x1
	andi R24,128
	breq L20
	.dbline 41
; ;
; cl_req;
	cbi 0x03,6
	.dbline -2
L16:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r p 20 pc
	.dbsym r data 16 c
	.dbend
	.dbfunc e lcd_init _lcd_init fV
	.even
_lcd_init::
	.dbline -1
	.dbline 44
; }
; void lcd_init (void)
; {
	.dbline 45
; MCUCR=MCUCR|0x80;
	in R24,0x35
	ori R24,128
	out 0x35,R24
	.dbline 46
; DDRB|=0x01;
	sbi 0x17,0
	.dbline 47
; PORTB&=0xfe;
	in R24,0x18
	andi R24,254
	out 0x18,R24
	.dbline 48
; DDRE=0x40;
	ldi R24,64
	out 0x2,R24
	.dbline 49
; PORTE=0xff;
	ldi R24,255
	out 0x3,R24
	.dbline 50
; cl_reset;
	cbi 0x15,3
	.dbline 51
; delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 52
; set_reset;
	sbi 0x15,3
	.dbline 53
; delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 54
; cl_req;
	cbi 0x03,6
	.dbline 55
; delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_clear _lcd_clear fV
	.even
_lcd_clear::
	.dbline -1
	.dbline 58
; }
; void lcd_clear (void)
; {
	.dbline 59
; lcd_w(0xf4);
	ldi R16,244
	xcall _lcd_w
	.dbline -2
L24:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_putsc _lcd_putsc fV
;              i -> R20,R21
;             ch -> R22,R23
;              y -> R10
;              x -> R12
	.even
_lcd_putsc::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	ldd R22,y+8
	ldd R23,y+9
	.dbline -1
	.dbline 63
; }
; 
; void lcd_putsc (unsigned char x,unsigned char y,unsigned char *ch)
; { unsigned  int i;
	.dbline 64
; x+=2;
	mov R24,R12
	subi R24,254    ; addi 2
	mov R12,R24
	xjmp L27
L26:
	.dbline 66
; while (*ch!=0)
; {
	.dbline 67
; lcd_w(0xf0);
	ldi R16,240
	xcall _lcd_w
	.dbline 68
; lcd_w(x);
	mov R16,R12
	xcall _lcd_w
	.dbline 69
; lcd_w(y);
	mov R16,R10
	xcall _lcd_w
	.dbline 70
; lcd_w(*ch-0xa0);
	movw R30,R22
	ldd R16,z+0
	subi R16,160
	xcall _lcd_w
	.dbline 71
; ch++;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 72
; lcd_w(*ch-0xa0);
	movw R30,R22
	ldd R16,z+0
	subi R16,160
	xcall _lcd_w
	.dbline 73
; ch++;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 74
; delay_nms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 75
; for(i=0;i<16;i++)
	clr R20
	clr R21
	xjmp L32
L29:
	.dbline 76
	.dbline 76
	ldi R16,247
	xcall _lcd_w
	.dbline 77
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 77
L30:
	.dbline 75
	subi R20,255  ; offset = 1
	sbci R21,255
L32:
	.dbline 75
	cpi R20,16
	ldi R30,0
	cpc R21,R30
	brlo L29
	.dbline 78
L27:
	.dbline 65
	movw R30,R22
	ldd R2,z+0
	tst R2
	brne L26
	.dbline 79
; {lcd_w(0xf7);
;  delay_nms(1);}
; }
; for(i=0;i<115;i++)
	clr R20
	clr R21
	xjmp L36
L33:
	.dbline 80
	.dbline 80
	ldi R16,247
	xcall _lcd_w
	.dbline 81
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 81
L34:
	.dbline 79
	subi R20,255  ; offset = 1
	sbci R21,255
L36:
	.dbline 79
	cpi R20,115
	ldi R30,0
	cpc R21,R30
	brlo L33
	.dbline -2
L25:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r ch 22 pc
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e lcd_putse _lcd_putse fV
;             ch -> R20,R21
;              y -> R22
;              x -> R10
	.even
_lcd_putse::
	xcall push_gset3
	mov R22,R18
	mov R10,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 86
; {lcd_w(0xf7);
;  delay_nms(1);}
; }
; 
; 
; void lcd_putse(unsigned char x,unsigned char y,unsigned char *ch)
; {
	.dbline 87
; x+=4;
	mov R24,R10
	subi R24,252    ; addi 4
	mov R10,R24
	xjmp L39
L38:
	.dbline 89
; while (y<=64)
; {
	.dbline 90
; lcd_w(0xf3);
	ldi R16,243
	xcall _lcd_w
	.dbline 91
; lcd_w(x);
	mov R16,R10
	xcall _lcd_w
	.dbline 92
; lcd_w(y);
	mov R16,R22
	xcall _lcd_w
	.dbline 93
; lcd_w(*ch);
	movw R30,R20
	ldd R16,z+0
	xcall _lcd_w
	.dbline 94
; ch++;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 95
; if (x>=19)
	mov R24,R10
	cpi R24,19
	brlo L41
	.dbline 96
; {
	.dbline 97
; x=4;
	ldi R24,4
	mov R10,R24
	.dbline 98
; y+=1;
	inc R22
	.dbline 99
; }
	xjmp L42
L41:
	.dbline 101
; else 
; x++;
	inc R10
L42:
	.dbline 102
L39:
	.dbline 88
	ldi R24,64
	cp R24,R22
	brsh L38
	.dbline -2
L37:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r ch 20 pc
	.dbsym r y 22 c
	.dbsym r x 10 c
	.dbend
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
_a::
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 128,2
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata
	.byte 0,1
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
	.blkb 2
	.area idata

⌨️ 快捷键说明

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