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

📄 1.s

📁 AVR mega16双机通讯实验 从机接受数据并发送到lcd1602上显示
💻 S
字号:
	.module _1.c
	.area data(ram, con, rel)
_disp::
	.blkb 2
	.area idata
	.byte 192,249
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 164,176
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 153,146
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 130,248
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 128,144
	.area data(ram, con, rel)
	.dbfile E:\MYAVRW~1\SPI˫~2\1.c
	.dbsym e disp _disp A[10:10]c
	.area text(rom, con, rel)
	.dbfile E:\MYAVRW~1\SPI˫~2\1.c
	.dbfunc e delayms _delayms fV
;              a -> R16
	.even
_delayms::
	.dbline -1
	.dbline 6
; #include < iom16v.h>
; #include <macros.h>
; #include "lcd1602.h"
; unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
; void delayms(void)
; {
	.dbline 8
; char a;
; for(a=0;a<141;a++)
	clr R16
	xjmp L5
L2:
	.dbline 9
L3:
	.dbline 8
	inc R16
L5:
	.dbline 8
	cpi R16,141
	brlo L2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r a 16 c
	.dbend
	.dbfunc e delay _delay fV
;              b -> R20,R21
;              a -> R22,R23
	.even
_delay::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 12
; ;
; }
; void delay(int a)
; {
	.dbline 14
; int b;
; for(b=0;b<a;b++)
	clr R20
	clr R21
	xjmp L10
L7:
	.dbline 15
	xcall _delayms
L8:
	.dbline 14
	subi R20,255  ; offset = 1
	sbci R21,255
L10:
	.dbline 14
	cp R20,R22
	cpc R21,R23
	brlt L7
	.dbline -2
L6:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r b 20 I
	.dbsym r a 22 I
	.dbend
	.dbfunc e Spi_init _Spi_init fV
	.even
_Spi_init::
	.dbline -1
	.dbline 18
; delayms();
; }
; void Spi_init()
; {
	.dbline 19
; DDRB|=(1<<6);
	sbi 0x17,6
	.dbline 20
; SPCR=0xE3;
	ldi R24,227
	out 0xd,R24
	.dbline 21
; SPSR=0x00;
	clr R2
	out 0xe,R2
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;            str -> R20,R21
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 25
; }
; 
; void main()
; {
	.dbline 26
; char *str="receive data :";
	ldi R20,<L13
	ldi R21,>L13
	.dbline 28
; 
; DDRA=0xFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 29
; PORTA=0x00;
	clr R2
	out 0x1b,R2
	.dbline 30
; DDRB=0xFF;
	out 0x17,R24
	.dbline 31
; PORTB=0x00;
	out 0x18,R2
	.dbline 32
; DDRC=0x00;
	out 0x14,R2
	.dbline 33
; PORTC=0x00;
	out 0x15,R2
	.dbline 34
; DDRD=0x00;
	out 0x11,R2
	.dbline 35
; PORTD=0x00;
	out 0x12,R2
	.dbline 38
; 
; 
; SEI();
	sei
	.dbline 40
; 
; Spi_init();
	xcall _Spi_init
	.dbline 42
; 
; LCD_init();
	xcall _LCD_init
	.dbline 43
; LCD_write_str(0,0,str);
	std y+1,R21
	std y+0,R20
	clr R18
	clr R16
	xcall _LCD_write_str
L14:
	.dbline 47
L15:
	.dbline 47
	xjmp L14
X0:
	.dbline -2
L12:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r str 20 pc
	.dbend
	.area vector(rom, abs)
	.org 40
	jmp _in
	.area text(rom, con, rel)
	.dbfile E:\MYAVRW~1\SPI˫~2\1.c
	.dbfunc e in _in fV
;           temp -> y+1
	.even
_in::
	xcall push_lset
	sbiw R28,4
	.dbline -1
	.dbline 54
; 
; 
; 
; while(1);
; 
; }
; 
; 
; #pragma interrupt_handler in:11
; void in()
; {
	.dbline 58
; char temp[3];
; 
; 
; temp[2]= (SPDR /100)%10+'0';
	ldi R17,100
	in R16,0xf
	xcall div8u
	ldi R17,10
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+3,R24
	.dbline 59
; temp[1] = (SPDR /10) %10+'0';
	ldi R17,10
	in R16,0xf
	xcall div8u
	ldi R17,10
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+2,R24
	.dbline 60
; temp[0] = (SPDR % 10)+'0';
	ldi R17,10
	in R16,0xf
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+1,R24
	.dbline 63
; 
; 
; LCD_write_char(11,1,temp[2]);
	ldd R2,y+3
	std y+0,R2
	ldi R18,1
	ldi R16,11
	xcall _LCD_write_char
	.dbline 65
; 
; LCD_write_char(12,1,temp[1]);
	ldd R2,y+2
	std y+0,R2
	ldi R18,1
	ldi R16,12
	xcall _LCD_write_char
	.dbline 67
; 
; LCD_write_char(13,1,temp[0]);
	ldd R2,y+1
	std y+0,R2
	ldi R18,1
	ldi R16,13
	xcall _LCD_write_char
	.dbline -2
L17:
	adiw R28,4
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym l temp 1 A[3:3]c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\MYAVRW~1\SPI˫~2\1.c
L13:
	.blkb 15
	.area idata
	.byte 'r,'e,'c,'e,'i,'v,'e,32,'d,'a,'t,'a,32,58,0
	.area data(ram, con, rel)
	.dbfile E:\MYAVRW~1\SPI˫~2\1.c

⌨️ 快捷键说明

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