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

📄 main.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -