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

📄 main.s

📁 AVR单片机系统开发经典实例部分源程序
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile C:\AVR\GPS\main.c
	.dbfunc e delay _delay fV
;              i -> R20,R21
;              t -> R16,R17
	.even
_delay::
	xcall push_gset1
	.dbline -1
	.dbline 17
; #include<iom128v.h>
; #include<macros.h>
; #define fosc 4000000 //晶振4MHZ
; #define baud 2400	 //波特率
; #define com0	
; 
; #define U8 unsigned char 
; #define U16 unsigned int 
;  
; U8 StrGpsLgd[8];				
; U16 i;
; U16 RecFlag;										
; U16 IGpsLgd;					
; U16 NumComa;		
; 
; void delay(U16 t)
; {
	xjmp L3
L2:
	.dbline 20
; 	U16 i;
; 	while(t--)
; 	{
	.dbline 21
; 		for (i=0;i<125;i++)
	clr R20
	clr R21
	xjmp L8
L5:
	.dbline 22
	.dbline 22
L6:
	.dbline 21
	subi R20,255  ; offset = 1
	sbci R21,255
L8:
	.dbline 21
	cpi R20,125
	ldi R30,0
	cpc R21,R30
	brlo L5
	.dbline 23
L3:
	.dbline 19
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L2
	tst R3
	brne L2
X0:
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r t 16 i
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 27
; 		{}
; 	}
; } 
; 
; void uart0_init(void)
; {
	.dbline 28
;  UCSR0B = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 29
;  UCSR0A = 0x00;
	out 0xb,R2
	.dbline 30
;  UCSR0C =(1<<UCSZ01)|(1<<UCSZ00);//8bit+1bit stop
	ldi R24,6
	sts 149,R24
	.dbline 31
;  UBRR0L=(fosc/16/(baud+1))%256;
	ldi R24,104
	out 0x9,R24
	.dbline 32
;  UBRR0H=(fosc/16/(baud+1))/256;
	sts 144,R2
	.dbline 33
;  UCSR0B =(1<<RXEN0)|(1<<TXEN0);//RXCEN TXCEN
	ldi R24,24
	out 0xa,R24
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart1_init _uart1_init fV
	.even
_uart1_init::
	.dbline -1
	.dbline 36
; }
; void uart1_init(void)
; {
	.dbline 37
;  UCSR1B = 0x00; //disable while setting baud rate
	clr R2
	sts 154,R2
	.dbline 38
;  UCSR1A = 0x00;
	sts 155,R2
	.dbline 39
;  UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);//8bit+1bit stop
	ldi R24,6
	sts 157,R24
	.dbline 40
;  UBRR1L=(fosc/16/(baud+1))%256;
	ldi R24,104
	sts 153,R24
	.dbline 41
;  UBRR1H=(fosc/16/(baud+1))/256;
	sts 152,R2
	.dbline 42
;  UCSR1B =(1<<RXEN1)|(1<<TXEN1);//RXCEN TXCEN
	ldi R24,24
	sts 154,R24
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e putchar0 _putchar0 fV
;              c -> R16
	.even
_putchar0::
	.dbline -1
	.dbline 45
; }
; void putchar0(unsigned char c)
; 	{	 
L12:
	.dbline 46
L13:
	.dbline 46
;      while (!(UCSR0A&(1<<UDRE0)));
	sbis 0xb,5
	rjmp L12
	.dbline 47
; 	 UDR0=c;    
	out 0xc,R16
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e putchar1 _putchar1 fV
;              c -> R16
	.even
_putchar1::
	.dbline -1
	.dbline 50
; 	}
; void putchar1(unsigned char c)
; 	{	 
L16:
	.dbline 51
L17:
	.dbline 51
;      while (!(UCSR1A&(1<<UDRE1)));
	lds R2,155
	sbrs R2,5
	rjmp L16
	.dbline 52
; 	 UDR1=c;    
	sts 156,R16
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e getchar0 _getchar0 fc
	.even
_getchar0::
	.dbline -1
	.dbline 55
; 	}	
; unsigned char getchar0(void)
;   	{
L20:
	.dbline 56
L21:
	.dbline 56
; 	 while(!(UCSR0A& (1<<RXC0)));
	sbis 0xb,7
	rjmp L20
	.dbline 57
;      return UDR0;
	in R16,0xc
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e getchar1 _getchar1 fc
	.even
_getchar1::
	.dbline -1
	.dbline 60
; 	}	
; unsigned char getchar1(void)
;   	{
L24:
	.dbline 61
L25:
	.dbline 61
; 	 while(!(UCSR1A& (1<<RXC1)));
	lds R2,155
	sbrs R2,7
	rjmp L24
	.dbline 62
;      return UDR1;
	lds R16,156
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e puts0 _puts0 fV
;              s -> R20,R21
	.even
_puts0::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 65
; 	}			
; void puts0(char *s)
; 	{
	xjmp L29
L28:
	.dbline 67
	.dbline 68
	movw R30,R20
	ldd R16,z+0
	xcall _putchar0
	.dbline 69
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 70
L29:
	.dbline 66
; 	while (*s)
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L28
	.dbline 71
; 		{
; 		putchar0(*s);
; 		s++;
; 		}	
;     putchar0(0x0a);
	ldi R16,10
	xcall _putchar0
	.dbline 72
; 	putchar0(0x0d);
	ldi R16,13
	xcall _putchar0
	.dbline -2
L27:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbend
	.dbfunc e puts1 _puts1 fV
;              s -> R20,R21
	.even
_puts1::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 75
; 	}
; void puts1(char *s)
; 	{
	xjmp L33
L32:
	.dbline 77
	.dbline 78
	movw R30,R20
	ldd R16,z+0
	xcall _putchar1
	.dbline 79
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 80
L33:
	.dbline 76
; 	while (*s)
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L32
	.dbline 81
; 		{
; 		putchar1(*s);
; 		s++;
; 		}	
;     putchar1(0x0a);
	ldi R16,10
	xcall _putchar1
	.dbline 82
; 	putchar1(0x0d);
	ldi R16,13
	xcall _putchar1
	.dbline -2
L31:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbend
	.dbfunc e main _main fV
;              i -> <dead>
	.even
_main::
	.dbline -1
	.dbline 85
; 	}	
; void main(void)
; {
	.dbline 88
;  unsigned char i;
;  #ifdef com0 
;  	uart0_init();
	xcall _uart0_init
	.dbline 89
;  	puts0("HELLO!");
	ldi R16,<L36
	ldi R17,>L36
	xcall _puts0
	.dbline 95
;  #else
;  	uart1_init();
;  	puts1("HELLO!"); 
;  #endif
;  //启动GPS
;  puts0("0x24");
	ldi R16,<L37
	ldi R17,>L37
	xcall _puts0
	.dbline 96
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 97
;  puts0("P");
	ldi R16,<L38
	ldi R17,>L38
	xcall _puts0
	.dbline 98
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 99
;  puts0("G");
	ldi R16,<L39
	ldi R17,>L39
	xcall _puts0
	.dbline 100
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 101
;  puts0("R");
	ldi R16,<L40
	ldi R17,>L40
	xcall _puts0
	.dbline 102
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 103
;  puts0("M");
	ldi R16,<L41
	ldi R17,>L41
	xcall _puts0
	.dbline 104
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 105
;  puts0("O");
	ldi R16,<L42
	ldi R17,>L42
	xcall _puts0
	.dbline 106
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 107
;  puts0(",");
	ldi R16,<L43
	ldi R17,>L43
	xcall _puts0
	.dbline 108
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 109
;  puts0("G");
	ldi R16,<L39
	ldi R17,>L39
	xcall _puts0
	.dbline 110
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 111
;  puts0("P");
	ldi R16,<L38
	ldi R17,>L38
	xcall _puts0
	.dbline 112
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 113
;  puts0("R");
	ldi R16,<L40
	ldi R17,>L40
	xcall _puts0
	.dbline 114
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 115
;  puts0("M");
	ldi R16,<L41
	ldi R17,>L41
	xcall _puts0
	.dbline 116
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 117
;  puts0("C");
	ldi R16,<L44
	ldi R17,>L44
	xcall _puts0
	.dbline 118
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 119
;  puts0(",");
	ldi R16,<L45
	ldi R17,>L45
	xcall _puts0
	.dbline 120
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 121
;  puts0("1");
	ldi R16,<L46
	ldi R17,>L46
	xcall _puts0
	.dbline 122
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 123
;  puts0("0x2a");
	ldi R16,<L47
	ldi R17,>L47
	xcall _puts0
	.dbline 128
;  
;  
;  
;  //关GPS
;  puts0("0x24");
	ldi R16,<L37
	ldi R17,>L37
	xcall _puts0
	.dbline 129
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 130
;  puts0("P");
	ldi R16,<L38
	ldi R17,>L38
	xcall _puts0
	.dbline 131
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 132
;  puts0("G");
	ldi R16,<L39
	ldi R17,>L39
	xcall _puts0
	.dbline 133
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 134
;  puts0("R");
	ldi R16,<L40
	ldi R17,>L40
	xcall _puts0
	.dbline 135
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 136
;  puts0("M");
	ldi R16,<L41
	ldi R17,>L41
	xcall _puts0
	.dbline 137
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 138
;  puts0("O");
	ldi R16,<L42
	ldi R17,>L42
	xcall _puts0
	.dbline 139
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 140
;  puts0(",");
	ldi R16,<L43
	ldi R17,>L43
	xcall _puts0
	.dbline 141
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 142
;  puts0(",");
	ldi R16,<L43
	ldi R17,>L43
	xcall _puts0
	.dbline 143
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 144
;  puts0("2");
	ldi R16,<L48
	ldi R17,>L48
	xcall _puts0
	.dbline 145
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 146
;  puts0("0x2a");
	ldi R16,<L47
	ldi R17,>L47
	xcall _puts0
	.dbline 147
;  delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
L49:
	.dbline 152
	.dbline 156
L50:
	.dbline 151
	xjmp L49
X1:
	.dbline -2
L35:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
_NumComa::
	.blkb 2
	.dbsym e NumComa _NumComa i
_IGpsLgd::
	.blkb 2
	.dbsym e IGpsLgd _IGpsLgd i
_RecFlag::
	.blkb 2
	.dbsym e RecFlag _RecFlag i
_i::
	.blkb 2
	.dbsym e i _i i
_StrGpsLgd::
	.blkb 8
	.dbsym e StrGpsLgd _StrGpsLgd A[8:8]c
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L48:
	.blkb 2
	.area idata
	.byte 50,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L47:
	.blkb 5
	.area idata
	.byte 48,'x,50,'a,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L46:
	.blkb 2
	.area idata
	.byte 49,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L45:
	.blkb 3
	.area idata
	.byte 163,172,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L44:
	.blkb 2
	.area idata
	.byte 'C,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L43:
	.blkb 2
	.area idata
	.byte 44,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L42:
	.blkb 2
	.area idata
	.byte 'O,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L41:
	.blkb 2
	.area idata
	.byte 'M,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L40:
	.blkb 2
	.area idata
	.byte 'R,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L39:
	.blkb 2
	.area idata
	.byte 'G,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L38:
	.blkb 2
	.area idata
	.byte 'P,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L37:
	.blkb 5
	.area idata
	.byte 48,'x,50,52,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c
L36:
	.blkb 7
	.area idata
	.byte 'H,'E,'L,'L,'O,33,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\GPS\main.c

⌨️ 快捷键说明

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