📄 main.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 + -