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

📄 gpt.lst

📁 AVR单片机系统开发经典实例部分源程序
💻 LST
字号:
__text_start:
__start:
    0059 EFCF      LDI	R28,0xFF
    005A E1D0      LDI	R29,0x10
    005B BFCD      OUT	0x3D,R28
    005C BFDE      OUT	0x3E,R29
    005D 51C0      SUBI	R28,0x10
    005E 40D0      SBCI	R29,0
    005F EA0A      LDI	R16,0xAA
    0060 8308      STD	Y+0,R16
    0061 2400      CLR	R0
    0062 E2E6      LDI	R30,0x26
    0063 E0F1      LDI	R31,1
    0064 E011      LDI	R17,1
    0065 33E6      CPI	R30,0x36
    0066 07F1      CPC	R31,R17
    0067 F011      BEQ	0x006A
    0068 9201      ST	R0,Z+
    0069 CFFB      RJMP	0x0065
    006A 8300      STD	Z+0,R16
    006B E8EC      LDI	R30,0x8C
    006C E0F0      LDI	R31,0
    006D E0A0      LDI	R26,0
    006E E0B1      LDI	R27,1
    006F E010      LDI	R17,0
    0070 3BE2      CPI	R30,0xB2
    0071 07F1      CPC	R31,R17
    0072 F021      BEQ	0x0077
    0073 95C8      LPM
    0074 9631      ADIW	R30,1
    0075 920D      ST	R0,X+
    0076 CFF9      RJMP	0x0070
    0077 940E00EC  CALL	_main
_exit:
    0079 CFFF      RJMP	_exit
_delay:
  i                    --> R20
  t                    --> R16
    007A 940E018D  CALL	push_gset1
FILE: C:\AVR\GPS\main.c
(0001) #include<iom128v.h>
(0002) #include<macros.h>
(0003) #define fosc 4000000 //晶振4MHZ
(0004) #define baud 2400	 //波特率
(0005) #define com0	
(0006) 
(0007) #define U8 unsigned char 
(0008) #define U16 unsigned int 
(0009)  
(0010) U8 StrGpsLgd[8];				
(0011) U16 i;
(0012) U16 RecFlag;										
(0013) U16 IGpsLgd;					
(0014) U16 NumComa;		
(0015) 
(0016) void delay(U16 t)
(0017) {
    007C C009      RJMP	0x0086
(0018) 	U16 i;
(0019) 	while(t--)
(0020) 	{
(0021) 		for (i=0;i<125;i++)
    007D 2744      CLR	R20
    007E 2755      CLR	R21
    007F C002      RJMP	0x0082
    0080 5F4F      SUBI	R20,0xFF
    0081 4F5F      SBCI	R21,0xFF
    0082 374D      CPI	R20,0x7D
    0083 E0E0      LDI	R30,0
    0084 075E      CPC	R21,R30
    0085 F3D0      BCS	0x0080
    0086 0118      MOVW	R2,R16
    0087 5001      SUBI	R16,1
    0088 4010      SBCI	R17,0
    0089 2022      TST	R2
    008A F791      BNE	0x007D
    008B 2033      TST	R3
    008C F781      BNE	0x007D
    008D 940E0190  CALL	pop_gset1
    008F 9508      RET
(0022) 		{}
(0023) 	}
(0024) } 
(0025) 
(0026) void uart0_init(void)
(0027) {
(0028)  UCSR0B = 0x00; //disable while setting baud rate
_uart0_init:
    0090 2422      CLR	R2
    0091 B82A      OUT	0x0A,R2
(0029)  UCSR0A = 0x00;
    0092 B82B      OUT	0x0B,R2
(0030)  UCSR0C =(1<<UCSZ01)|(1<<UCSZ00);//8bit+1bit stop
    0093 E086      LDI	R24,6
    0094 93800095  STS	0x95,R24
(0031)  UBRR0L=(fosc/16/(baud+1))%256;
    0096 E688      LDI	R24,0x68
    0097 B989      OUT	0x09,R24
(0032)  UBRR0H=(fosc/16/(baud+1))/256;
    0098 92200090  STS	0x90,R2
(0033)  UCSR0B =(1<<RXEN0)|(1<<TXEN0);//RXCEN TXCEN
    009A E188      LDI	R24,0x18
    009B B98A      OUT	0x0A,R24
    009C 9508      RET
(0034) }
(0035) void uart1_init(void)
(0036) {
(0037)  UCSR1B = 0x00; //disable while setting baud rate
_uart1_init:
    009D 2422      CLR	R2
    009E 9220009A  STS	0x9A,R2
(0038)  UCSR1A = 0x00;
    00A0 9220009B  STS	0x9B,R2
(0039)  UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);//8bit+1bit stop
    00A2 E086      LDI	R24,6
    00A3 9380009D  STS	0x9D,R24
(0040)  UBRR1L=(fosc/16/(baud+1))%256;
    00A5 E688      LDI	R24,0x68
    00A6 93800099  STS	0x99,R24
(0041)  UBRR1H=(fosc/16/(baud+1))/256;
    00A8 92200098  STS	0x98,R2
(0042)  UCSR1B =(1<<RXEN1)|(1<<TXEN1);//RXCEN TXCEN
    00AA E188      LDI	R24,0x18
    00AB 9380009A  STS	0x9A,R24
    00AD 9508      RET
(0043) }
(0044) void putchar0(unsigned char c)
(0045) 	{	 
(0046)      while (!(UCSR0A&(1<<UDRE0)));
_putchar0:
  c                    --> R16
    00AE 9B5D      SBIS	0x0B,5
    00AF CFFE      RJMP	_putchar0
(0047) 	 UDR0=c;    
    00B0 B90C      OUT	0x0C,R16
    00B1 9508      RET
(0048) 	}
(0049) void putchar1(unsigned char c)
(0050) 	{	 
(0051)      while (!(UCSR1A&(1<<UDRE1)));
_putchar1:
  c                    --> R16
    00B2 9020009B  LDS	R2,0x9B
    00B4 FE25      SBRS	R2,5
    00B5 CFFC      RJMP	_putchar1
(0052) 	 UDR1=c;    
    00B6 9300009C  STS	0x9C,R16
    00B8 9508      RET
(0053) 	}	
(0054) unsigned char getchar0(void)
(0055)   	{
(0056) 	 while(!(UCSR0A& (1<<RXC0)));
_getchar0:
    00B9 9B5F      SBIS	0x0B,7
    00BA CFFE      RJMP	_getchar0
(0057)      return UDR0;
    00BB B10C      IN	R16,0x0C
    00BC 9508      RET
(0058) 	}	
(0059) unsigned char getchar1(void)
(0060)   	{
(0061) 	 while(!(UCSR1A& (1<<RXC1)));
_getchar1:
    00BD 9020009B  LDS	R2,0x9B
    00BF FE27      SBRS	R2,7
    00C0 CFFC      RJMP	_getchar1
(0062)      return UDR1;
    00C1 9100009C  LDS	R16,0x9C
    00C3 9508      RET
_puts0:
  s                    --> R20
    00C4 940E018D  CALL	push_gset1
    00C6 01A8      MOVW	R20,R16
(0063) 	}			
(0064) void puts0(char *s)
(0065) 	{
    00C7 C005      RJMP	0x00CD
(0066) 	while (*s)
(0067) 		{
(0068) 		putchar0(*s);
    00C8 01FA      MOVW	R30,R20
    00C9 8100      LDD	R16,Z+0
    00CA DFE3      RCALL	_putchar0
(0069) 		s++;
    00CB 5F4F      SUBI	R20,0xFF
    00CC 4F5F      SBCI	R21,0xFF
    00CD 01FA      MOVW	R30,R20
    00CE 8020      LDD	R2,Z+0
    00CF 2022      TST	R2
    00D0 F7B9      BNE	0x00C8
(0070) 		}	
(0071)     putchar0(0x0a);
    00D1 E00A      LDI	R16,0xA
    00D2 DFDB      RCALL	_putchar0
(0072) 	putchar0(0x0d);
    00D3 E00D      LDI	R16,0xD
    00D4 DFD9      RCALL	_putchar0
    00D5 940E0190  CALL	pop_gset1
    00D7 9508      RET
_puts1:
  s                    --> R20
    00D8 940E018D  CALL	push_gset1
    00DA 01A8      MOVW	R20,R16
(0073) 	}
(0074) void puts1(char *s)
(0075) 	{
    00DB C005      RJMP	0x00E1
(0076) 	while (*s)
(0077) 		{
(0078) 		putchar1(*s);
    00DC 01FA      MOVW	R30,R20
    00DD 8100      LDD	R16,Z+0
    00DE DFD3      RCALL	_putchar1
(0079) 		s++;
    00DF 5F4F      SUBI	R20,0xFF
    00E0 4F5F      SBCI	R21,0xFF
    00E1 01FA      MOVW	R30,R20
    00E2 8020      LDD	R2,Z+0
    00E3 2022      TST	R2
    00E4 F7B9      BNE	0x00DC
(0080) 		}	
(0081)     putchar1(0x0a);
    00E5 E00A      LDI	R16,0xA
    00E6 DFCB      RCALL	_putchar1
(0082) 	putchar1(0x0d);
    00E7 E00D      LDI	R16,0xD
    00E8 DFC9      RCALL	_putchar1
    00E9 940E0190  CALL	pop_gset1
    00EB 9508      RET
(0083) 	}	
(0084) void main(void)
(0085) {
(0086)  unsigned char i;
(0087)  #ifdef com0 
(0088)  	uart0_init();
_main:
  i                    --> Y+1
    00EC DFA3      RCALL	_uart0_init
(0089)  	puts0("HELLO!");
    00ED E10F      LDI	R16,0x1F
    00EE E011      LDI	R17,1
    00EF DFD4      RCALL	_puts0
(0090)  #else
(0091)  	uart1_init();
(0092)  	puts1("HELLO!"); 
(0093)  #endif
(0094)  //启动GPS
(0095)  puts0("0x24");
    00F0 E10A      LDI	R16,0x1A
    00F1 E011      LDI	R17,1
    00F2 DFD1      RCALL	_puts0
(0096)  delay(10);
    00F3 E00A      LDI	R16,0xA
    00F4 E010      LDI	R17,0
    00F5 DF84      RCALL	_delay
(0097)  puts0("P");
    00F6 E108      LDI	R16,0x18
    00F7 E011      LDI	R17,1
    00F8 DFCB      RCALL	_puts0
(0098)  delay(10);
    00F9 E00A      LDI	R16,0xA
    00FA E010      LDI	R17,0
    00FB DF7E      RCALL	_delay
(0099)  puts0("G");
    00FC E106      LDI	R16,0x16
    00FD E011      LDI	R17,1
    00FE DFC5      RCALL	_puts0
(0100)  delay(10);
    00FF E00A      LDI	R16,0xA
    0100 E010      LDI	R17,0
    0101 DF78      RCALL	_delay
(0101)  puts0("R");
    0102 E104      LDI	R16,0x14
    0103 E011      LDI	R17,1
    0104 DFBF      RCALL	_puts0
(0102)  delay(10);
    0105 E00A      LDI	R16,0xA
    0106 E010      LDI	R17,0
    0107 DF72      RCALL	_delay
(0103)  puts0("M");
    0108 E102      LDI	R16,0x12
    0109 E011      LDI	R17,1
    010A DFB9      RCALL	_puts0
(0104)  delay(10);
    010B E00A      LDI	R16,0xA
    010C E010      LDI	R17,0
    010D DF6C      RCALL	_delay
(0105)  puts0("O");
    010E E100      LDI	R16,0x10
    010F E011      LDI	R17,1
    0110 DFB3      RCALL	_puts0
(0106)  delay(10);
    0111 E00A      LDI	R16,0xA
    0112 E010      LDI	R17,0
    0113 DF66      RCALL	_delay
(0107)  puts0(",");
    0114 E00E      LDI	R16,0xE
    0115 E011      LDI	R17,1
    0116 DFAD      RCALL	_puts0
(0108)  delay(10);
    0117 E00A      LDI	R16,0xA
    0118 E010      LDI	R17,0
    0119 DF60      RCALL	_delay
(0109)  puts0("G");
    011A E106      LDI	R16,0x16
    011B E011      LDI	R17,1
    011C DFA7      RCALL	_puts0
(0110)  delay(10);
    011D E00A      LDI	R16,0xA
    011E E010      LDI	R17,0
    011F DF5A      RCALL	_delay
(0111)  puts0("P");
    0120 E108      LDI	R16,0x18
    0121 E011      LDI	R17,1
    0122 DFA1      RCALL	_puts0
(0112)  delay(10);
    0123 E00A      LDI	R16,0xA
    0124 E010      LDI	R17,0
    0125 DF54      RCALL	_delay
(0113)  puts0("R");
    0126 E104      LDI	R16,0x14
    0127 E011      LDI	R17,1
    0128 DF9B      RCALL	_puts0
(0114)  delay(10);
    0129 E00A      LDI	R16,0xA
    012A E010      LDI	R17,0
    012B DF4E      RCALL	_delay
(0115)  puts0("M");
    012C E102      LDI	R16,0x12
    012D E011      LDI	R17,1
    012E DF95      RCALL	_puts0
(0116)  delay(10);
    012F E00A      LDI	R16,0xA
    0130 E010      LDI	R17,0
    0131 DF48      RCALL	_delay
(0117)  puts0("C");
    0132 E00C      LDI	R16,0xC
    0133 E011      LDI	R17,1
    0134 DF8F      RCALL	_puts0
(0118)  delay(10);
    0135 E00A      LDI	R16,0xA
    0136 E010      LDI	R17,0
    0137 DF42      RCALL	_delay
(0119)  puts0(",");
    0138 E009      LDI	R16,0x9
    0139 E011      LDI	R17,1
    013A DF89      RCALL	_puts0
(0120)  delay(10);
    013B E00A      LDI	R16,0xA
    013C E010      LDI	R17,0
    013D DF3C      RCALL	_delay
(0121)  puts0("1");
    013E E007      LDI	R16,7
    013F E011      LDI	R17,1
    0140 DF83      RCALL	_puts0
(0122)  delay(10);
    0141 E00A      LDI	R16,0xA
    0142 E010      LDI	R17,0
    0143 DF36      RCALL	_delay
(0123)  puts0("0x2a");
    0144 E002      LDI	R16,2
    0145 E011      LDI	R17,1
    0146 DF7D      RCALL	_puts0
(0124)  
(0125)  
(0126)  
(0127)  //关GPS
(0128)  puts0("0x24");
    0147 E10A      LDI	R16,0x1A
    0148 E011      LDI	R17,1
    0149 DF7A      RCALL	_puts0
(0129)  delay(10);
    014A E00A      LDI	R16,0xA
    014B E010      LDI	R17,0
    014C DF2D      RCALL	_delay
(0130)  puts0("P");
    014D E108      LDI	R16,0x18
    014E E011      LDI	R17,1
    014F DF74      RCALL	_puts0
(0131)  delay(10);
    0150 E00A      LDI	R16,0xA
    0151 E010      LDI	R17,0
    0152 DF27      RCALL	_delay
(0132)  puts0("G");
    0153 E106      LDI	R16,0x16
    0154 E011      LDI	R17,1
    0155 DF6E      RCALL	_puts0
(0133)  delay(10);
    0156 E00A      LDI	R16,0xA
    0157 E010      LDI	R17,0
    0158 DF21      RCALL	_delay
(0134)  puts0("R");
    0159 E104      LDI	R16,0x14
    015A E011      LDI	R17,1
    015B DF68      RCALL	_puts0
(0135)  delay(10);
    015C E00A      LDI	R16,0xA
    015D E010      LDI	R17,0
    015E DF1B      RCALL	_delay
(0136)  puts0("M");
    015F E102      LDI	R16,0x12
    0160 E011      LDI	R17,1
    0161 DF62      RCALL	_puts0
(0137)  delay(10);
    0162 E00A      LDI	R16,0xA
    0163 E010      LDI	R17,0
    0164 DF15      RCALL	_delay
(0138)  puts0("O");
    0165 E100      LDI	R16,0x10
    0166 E011      LDI	R17,1
    0167 DF5C      RCALL	_puts0
(0139)  delay(10);
    0168 E00A      LDI	R16,0xA
    0169 E010      LDI	R17,0
    016A DF0F      RCALL	_delay
(0140)  puts0(",");
    016B E00E      LDI	R16,0xE
    016C E011      LDI	R17,1
    016D DF56      RCALL	_puts0
(0141)  delay(10);
    016E E00A      LDI	R16,0xA
    016F E010      LDI	R17,0
    0170 DF09      RCALL	_delay
(0142)  puts0(",");
    0171 E00E      LDI	R16,0xE
    0172 E011      LDI	R17,1
    0173 DF50      RCALL	_puts0
(0143)  delay(10);
    0174 E00A      LDI	R16,0xA
    0175 E010      LDI	R17,0
    0176 DF03      RCALL	_delay
(0144)  puts0("2");
    0177 E000      LDI	R16,0
    0178 E011      LDI	R17,1
    0179 DF4A      RCALL	_puts0
(0145)  delay(10);
    017A E00A      LDI	R16,0xA
    017B E010      LDI	R17,0
    017C DEFD      RCALL	_delay
(0146)  puts0("0x2a");
    017D E002      LDI	R16,2
    017E E011      LDI	R17,1
    017F DF44      RCALL	_puts0
(0147)  delay(10);
    0180 E00A      LDI	R16,0xA
    0181 E010      LDI	R17,0
    0182 DEF7      RCALL	_delay
(0148)  
(0149)  
(0150)  
(0151)  while(1)
FILE: <library>
    0183 CFFF      RJMP	0x0183
    0184 9508      RET
push_gset5:
    0185 92FA      ST	R15,-Y
    0186 92EA      ST	R14,-Y
push_gset4:
    0187 92DA      ST	R13,-Y
    0188 92CA      ST	R12,-Y
push_gset3:
    0189 92BA      ST	R11,-Y
    018A 92AA      ST	R10,-Y
push_gset2:
    018B 937A      ST	R23,-Y
    018C 936A      ST	R22,-Y
push_gset1:
    018D 935A      ST	R21,-Y
    018E 934A      ST	R20,-Y
    018F 9508      RET
pop_gset1:
    0190 E0E1      LDI	R30,1
pop:
    0191 9149      LD	R20,Y+
    0192 9159      LD	R21,Y+
    0193 FDE0      SBRC	R30,0
    0194 9508      RET
    0195 9169      LD	R22,Y+
    0196 9179      LD	R23,Y+
    0197 FDE1      SBRC	R30,1
    0198 9508      RET
    0199 90A9      LD	R10,Y+
    019A 90B9      LD	R11,Y+
    019B FDE2      SBRC	R30,2
    019C 9508      RET
    019D 90C9      LD	R12,Y+
    019E 90D9      LD	R13,Y+
    019F FDE3      SBRC	R30,3
    01A0 9508      RET
    01A1 90E9      LD	R14,Y+
    01A2 90F9      LD	R15,Y+
    01A3 9508      RET

⌨️ 快捷键说明

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