📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\AVR\GPS\main.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; t -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 17
0004 ; #include<iom128v.h>
0004 ; #include<macros.h>
0004 ; #define fosc 4000000 //晶振4MHZ
0004 ; #define baud 2400 //波特率
0004 ; #define com0
0004 ;
0004 ; #define U8 unsigned char
0004 ; #define U16 unsigned int
0004 ;
0004 ; U8 StrGpsLgd[8];
0004 ; U16 i;
0004 ; U16 RecFlag;
0004 ; U16 IGpsLgd;
0004 ; U16 NumComa;
0004 ;
0004 ; void delay(U16 t)
0004 ; {
0004 09C0 xjmp L3
0006 L2:
0006 .dbline 20
0006 ; U16 i;
0006 ; while(t--)
0006 ; {
0006 .dbline 21
0006 ; for (i=0;i<125;i++)
0006 4427 clr R20
0008 5527 clr R21
000A 02C0 xjmp L8
000C L5:
000C .dbline 22
000C .dbline 22
000C L6:
000C .dbline 21
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L8:
0010 .dbline 21
0010 4D37 cpi R20,125
0012 E0E0 ldi R30,0
0014 5E07 cpc R21,R30
0016 D0F3 brlo L5
0018 .dbline 23
0018 L3:
0018 .dbline 19
0018 1801 movw R2,R16
001A 0150 subi R16,1
001C 1040 sbci R17,0
001E 2220 tst R2
0020 91F7 brne L2
0022 3320 tst R3
0024 81F7 brne L2
0026 X0:
0026 .dbline -2
0026 L1:
0026 0E940000 xcall pop_gset1
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r i 20 i
002C .dbsym r t 16 i
002C .dbend
002C .dbfunc e uart0_init _uart0_init fV
.even
002C _uart0_init::
002C .dbline -1
002C .dbline 27
002C ; {}
002C ; }
002C ; }
002C ;
002C ; void uart0_init(void)
002C ; {
002C .dbline 28
002C ; UCSR0B = 0x00; //disable while setting baud rate
002C 2224 clr R2
002E 2AB8 out 0xa,R2
0030 .dbline 29
0030 ; UCSR0A = 0x00;
0030 2BB8 out 0xb,R2
0032 .dbline 30
0032 ; UCSR0C =(1<<UCSZ01)|(1<<UCSZ00);//8bit+1bit stop
0032 86E0 ldi R24,6
0034 80939500 sts 149,R24
0038 .dbline 31
0038 ; UBRR0L=(fosc/16/(baud+1))%256;
0038 88E6 ldi R24,104
003A 89B9 out 0x9,R24
003C .dbline 32
003C ; UBRR0H=(fosc/16/(baud+1))/256;
003C 20929000 sts 144,R2
0040 .dbline 33
0040 ; UCSR0B =(1<<RXEN0)|(1<<TXEN0);//RXCEN TXCEN
0040 88E1 ldi R24,24
0042 8AB9 out 0xa,R24
0044 .dbline -2
0044 L9:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfunc e uart1_init _uart1_init fV
.even
0046 _uart1_init::
0046 .dbline -1
0046 .dbline 36
0046 ; }
0046 ; void uart1_init(void)
0046 ; {
0046 .dbline 37
0046 ; UCSR1B = 0x00; //disable while setting baud rate
0046 2224 clr R2
0048 20929A00 sts 154,R2
004C .dbline 38
004C ; UCSR1A = 0x00;
004C 20929B00 sts 155,R2
0050 .dbline 39
0050 ; UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);//8bit+1bit stop
0050 86E0 ldi R24,6
0052 80939D00 sts 157,R24
0056 .dbline 40
0056 ; UBRR1L=(fosc/16/(baud+1))%256;
0056 88E6 ldi R24,104
0058 80939900 sts 153,R24
005C .dbline 41
005C ; UBRR1H=(fosc/16/(baud+1))/256;
005C 20929800 sts 152,R2
0060 .dbline 42
0060 ; UCSR1B =(1<<RXEN1)|(1<<TXEN1);//RXCEN TXCEN
0060 88E1 ldi R24,24
0062 80939A00 sts 154,R24
0066 .dbline -2
0066 L10:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbend
0068 .dbfunc e putchar0 _putchar0 fV
0068 ; c -> R16
.even
0068 _putchar0::
0068 .dbline -1
0068 .dbline 45
0068 ; }
0068 ; void putchar0(unsigned char c)
0068 ; {
0068 L12:
0068 .dbline 46
0068 L13:
0068 .dbline 46
0068 ; while (!(UCSR0A&(1<<UDRE0)));
0068 5D9B sbis 0xb,5
006A FECF rjmp L12
006C .dbline 47
006C ; UDR0=c;
006C 0CB9 out 0xc,R16
006E .dbline -2
006E L11:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym r c 16 c
0070 .dbend
0070 .dbfunc e putchar1 _putchar1 fV
0070 ; c -> R16
.even
0070 _putchar1::
0070 .dbline -1
0070 .dbline 50
0070 ; }
0070 ; void putchar1(unsigned char c)
0070 ; {
0070 L16:
0070 .dbline 51
0070 L17:
0070 .dbline 51
0070 ; while (!(UCSR1A&(1<<UDRE1)));
0070 20909B00 lds R2,155
0074 25FE sbrs R2,5
0076 FCCF rjmp L16
0078 .dbline 52
0078 ; UDR1=c;
0078 00939C00 sts 156,R16
007C .dbline -2
007C L15:
007C .dbline 0 ; func end
007C 0895 ret
007E .dbsym r c 16 c
007E .dbend
007E .dbfunc e getchar0 _getchar0 fc
.even
007E _getchar0::
007E .dbline -1
007E .dbline 55
007E ; }
007E ; unsigned char getchar0(void)
007E ; {
007E L20:
007E .dbline 56
007E L21:
007E .dbline 56
007E ; while(!(UCSR0A& (1<<RXC0)));
007E 5F9B sbis 0xb,7
0080 FECF rjmp L20
0082 .dbline 57
0082 ; return UDR0;
0082 0CB1 in R16,0xc
0084 .dbline -2
0084 L19:
0084 .dbline 0 ; func end
0084 0895 ret
0086 .dbend
0086 .dbfunc e getchar1 _getchar1 fc
.even
0086 _getchar1::
0086 .dbline -1
0086 .dbline 60
0086 ; }
0086 ; unsigned char getchar1(void)
0086 ; {
0086 L24:
0086 .dbline 61
0086 L25:
0086 .dbline 61
0086 ; while(!(UCSR1A& (1<<RXC1)));
0086 20909B00 lds R2,155
008A 27FE sbrs R2,7
008C FCCF rjmp L24
008E .dbline 62
008E ; return UDR1;
008E 00919C00 lds R16,156
0092 .dbline -2
0092 L23:
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbend
0094 .dbfunc e puts0 _puts0 fV
0094 ; s -> R20,R21
.even
0094 _puts0::
0094 0E940000 xcall push_gset1
0098 A801 movw R20,R16
009A .dbline -1
009A .dbline 65
009A ; }
009A ; void puts0(char *s)
009A ; {
009A 05C0 xjmp L29
009C L28:
009C .dbline 67
009C .dbline 68
009C FA01 movw R30,R20
009E 0081 ldd R16,z+0
00A0 E3DF xcall _putchar0
00A2 .dbline 69
00A2 4F5F subi R20,255 ; offset = 1
00A4 5F4F sbci R21,255
00A6 .dbline 70
00A6 L29:
00A6 .dbline 66
00A6 ; while (*s)
00A6 FA01 movw R30,R20
00A8 2080 ldd R2,z+0
00AA 2220 tst R2
00AC B9F7 brne L28
00AE .dbline 71
00AE ; {
00AE ; putchar0(*s);
00AE ; s++;
00AE ; }
00AE ; putchar0(0x0a);
00AE 0AE0 ldi R16,10
00B0 DBDF xcall _putchar0
00B2 .dbline 72
00B2 ; putchar0(0x0d);
00B2 0DE0 ldi R16,13
00B4 D9DF xcall _putchar0
00B6 .dbline -2
00B6 L27:
00B6 0E940000 xcall pop_gset1
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbsym r s 20 pc
00BC .dbend
00BC .dbfunc e puts1 _puts1 fV
00BC ; s -> R20,R21
.even
00BC _puts1::
00BC 0E940000 xcall push_gset1
00C0 A801 movw R20,R16
00C2 .dbline -1
00C2 .dbline 75
00C2 ; }
00C2 ; void puts1(char *s)
00C2 ; {
00C2 05C0 xjmp L33
00C4 L32:
00C4 .dbline 77
00C4 .dbline 78
00C4 FA01 movw R30,R20
00C6 0081 ldd R16,z+0
00C8 D3DF xcall _putchar1
00CA .dbline 79
00CA 4F5F subi R20,255 ; offset = 1
00CC 5F4F sbci R21,255
00CE .dbline 80
00CE L33:
00CE .dbline 76
00CE ; while (*s)
00CE FA01 movw R30,R20
00D0 2080 ldd R2,z+0
00D2 2220 tst R2
00D4 B9F7 brne L32
00D6 .dbline 81
00D6 ; {
00D6 ; putchar1(*s);
00D6 ; s++;
00D6 ; }
00D6 ; putchar1(0x0a);
00D6 0AE0 ldi R16,10
00D8 CBDF xcall _putchar1
00DA .dbline 82
00DA ; putchar1(0x0d);
00DA 0DE0 ldi R16,13
00DC C9DF xcall _putchar1
00DE .dbline -2
00DE L31:
00DE 0E940000 xcall pop_gset1
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r s 20 pc
00E4 .dbend
00E4 .dbfunc e main _main fV
00E4 ; i -> <dead>
.even
00E4 _main::
00E4 .dbline -1
00E4 .dbline 85
00E4 ; }
00E4 ; void main(void)
00E4 ; {
00E4 .dbline 88
00E4 ; unsigned char i;
00E4 ; #ifdef com0
00E4 ; uart0_init();
00E4 A3DF xcall _uart0_init
00E6 .dbline 89
00E6 ; puts0("HELLO!");
00E6 00E0 ldi R16,<L36
00E8 10E0 ldi R17,>L36
00EA D4DF xcall _puts0
00EC .dbline 95
00EC ; #else
00EC ; uart1_init();
00EC ; puts1("HELLO!");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -