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

📄 gps-1280.lst

📁 u-blox的GPS模块LEA-5x,三本例子为ATMEGA1280对他的操作的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
      AF EFCF      LDI	R28,0xFF
      B0 E2D1      LDI	R29,0x21
      B1 BFCD      OUT	0x3D,R28
      B2 BFDE      OUT	0x3E,R29
      B3 51CE      SUBI	R28,0x1E
      B4 40D0      SBCI	R29,0
      B5 EA0A      LDI	R16,0xAA
      B6 8308      STD	Y+0,R16
      B7 2400      CLR	R0
      B8 E6E9      LDI	R30,0x69
      B9 E0F2      LDI	R31,2
      BA E016      LDI	R17,6
      BB 35EC      CPI	R30,0x5C
      BC 07F1      CPC	R31,R17
      BD F011      BEQ	0x00C0
      BE 9201      ST	R0,Z+
      BF CFFB      RJMP	0x00BB
      C0 8300      STD	Z+0,R16
      C1 EFE4      LDI	R30,0xF4
      C2 E0F0      LDI	R31,0
      C3 E0A0      LDI	R26,0
      C4 E0B2      LDI	R27,2
      C5 E011      LDI	R17,1
      C6 E000      LDI	R16,0
      C7 BF0B      OUT	0x3B,R16
      C8 35ED      CPI	R30,0x5D
      C9 07F1      CPC	R31,R17
      CA F021      BEQ	0x00CF
      CB 95C8      LPM
      CC 9631      ADIW	R30,1
      CD 920D      ST	R0,X+
      CE CFF9      RJMP	0x00C8
      CF 940E 0451 CALL	_main
_exit:
      D1 CFFF      RJMP	_exit
FILE: E:\item\GPS-1280\debug.c
(0001) #include <string.h>
(0002) #include "uart3.h"
(0003) 
(0004) #define DEBUG
(0005) 
(0006) const unsigned char char_buf[]=
(0007) {
(0008)   '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',
(0009) };
(0010) /*************************************************
(0011) 
(0012) *************************************************/
(0013) void debug_init(void)
(0014) {
_debug_init:
      D2 9508      RET
_debug_send_char:
  ch                   --> R10
      D3 92AA      ST	R10,-Y
      D4 2EA0      MOV	R10,R16
(0015) 
(0016) }
(0017) /*************************************************
(0018) 
(0019) *************************************************/
(0020) void debug_send_char(unsigned char ch)
(0021) {
(0022)   uart3_send_char(ch);
      D5 2D0A      MOV	R16,R10
      D6 940E 0582 CALL	_uart3_send_char
      D8 90A9      LD	R10,Y+
      D9 9508      RET
_debug_send_chars:
  i                    --> R20
  len                  --> R10
  ch                   --> R12
      DA 940E 0682 CALL	push_xgset303C
      DC 0159      MOVW	R10,R18
      DD 0168      MOVW	R12,R16
(0023) }
(0024) /*************************************************
(0025) 
(0026) *************************************************/
(0027) void debug_send_chars(unsigned char *ch,unsigned int len)
(0028) {
(0029)   unsigned int i;
(0030)   for(i=0;i<len;i++)
      DE 2744      CLR	R20
      DF 2755      CLR	R21
      E0 C008      RJMP	0x00E9
(0031)   {
(0032)     uart3_send_char(*(ch+i));
      E1 01FA      MOVW	R30,R20
      E2 0DEC      ADD	R30,R12
      E3 1DFD      ADC	R31,R13
      E4 8100      LDD	R16,Z+0
      E5 940E 0582 CALL	_uart3_send_char
      E7 5F4F      SUBI	R20,0xFF
      E8 4F5F      SBCI	R21,0xFF
      E9 154A      CP	R20,R10
      EA 055B      CPC	R21,R11
      EB F3A8      BCS	0x00E1
      EC 940C 0689 JMP	pop_xgset303C
_debug_send_string:
  len                  --> R12
  str                  --> R10
      EE 940E 0673 CALL	push_xgset003C
      F0 0169      MOVW	R12,R18
      F1 0158      MOVW	R10,R16
(0033)   }
(0034) }
(0035) /*************************************************
(0036) 
(0037) *************************************************/
(0038) void debug_send_string(char *str,unsigned int len)
(0039) {
(0040)   uart3_data_send(str,len);
      F2 0196      MOVW	R18,R12
      F3 0185      MOVW	R16,R10
      F4 940E 056B CALL	_uart3_data_send
      F6 940C 065D JMP	pop_xgset003C
_debug_str_without_n:
  debugstr             --> R10
      F8 92AA      ST	R10,-Y
      F9 92BA      ST	R11,-Y
      FA 0158      MOVW	R10,R16
(0041) }
(0042) /*************************************************
(0043) *输完字符串后不自动换行
(0044) *************************************************/
(0045) void debug_str_without_n(char *debugstr)
(0046) {
(0047) #ifdef DEBUG
(0048)    debug_send_string(debugstr,strlen(debugstr));
      FB 0185      MOVW	R16,R10
      FC 940E 0590 CALL	_strlen
      FE 0198      MOVW	R18,R16
      FF 0185      MOVW	R16,R10
     100 DFED      RCALL	_debug_send_string
     101 90B9      LD	R11,Y+
     102 90A9      LD	R10,Y+
     103 9508      RET
_debug_str:
  debugstr             --> R10
     104 92AA      ST	R10,-Y
     105 92BA      ST	R11,-Y
     106 0158      MOVW	R10,R16
(0049) #else
(0050) 
(0051) #endif
(0052) }
(0053) /*************************************************
(0054) *输完字符串后自动换行
(0055) *************************************************/
(0056) void debug_str(char *debugstr)
(0057) {
(0058) #ifdef DEBUG
(0059)    debug_send_string(debugstr,strlen(debugstr));
     107 0185      MOVW	R16,R10
     108 940E 0590 CALL	_strlen
     10A 0198      MOVW	R18,R16
     10B 0185      MOVW	R16,R10
     10C DFE1      RCALL	_debug_send_string
(0060)    debug_send_string("\n",1);
     10D E021      LDI	R18,1
     10E E030      LDI	R19,0
     10F E000      LDI	R16,0
     110 E012      LDI	R17,2
     111 DFDC      RCALL	_debug_send_string
     112 90B9      LD	R11,Y+
     113 90A9      LD	R10,Y+
     114 9508      RET
_debug_uchars:
  len                  --> R12
  debugstr             --> R10
     115 940E 0673 CALL	push_xgset003C
     117 0169      MOVW	R12,R18
     118 0158      MOVW	R10,R16
(0061) #else
(0062) 
(0063) #endif
(0064) }
(0065) /*************************************************
(0066) 
(0067) *************************************************/
(0068) void debug_uchars(unsigned char* debugstr,unsigned int len)
(0069) {
(0070) #ifdef DEBUG
(0071)    debug_send_chars(debugstr,len);
     119 0196      MOVW	R18,R12
     11A 0185      MOVW	R16,R10
     11B DFBE      RCALL	_debug_send_chars
(0072)    debug_send_string("\n",1);
     11C E021      LDI	R18,1
     11D E030      LDI	R19,0
     11E E000      LDI	R16,0
     11F E012      LDI	R17,2
     120 DFCD      RCALL	_debug_send_string
     121 940C 065D JMP	pop_xgset003C
_debug_uchars_without_n:
  len                  --> R12
  debugstr             --> R10
     123 940E 0673 CALL	push_xgset003C
     125 0169      MOVW	R12,R18
     126 0158      MOVW	R10,R16
(0073) #else
(0074) 
(0075) #endif
(0076) }
(0077) /*************************************************
(0078) 
(0079) *************************************************/
(0080) void debug_uchars_without_n(unsigned char* debugstr,unsigned int len)
(0081) {
(0082) #ifdef DEBUG
(0083)    debug_send_chars(debugstr,len);
     127 0196      MOVW	R18,R12
     128 0185      MOVW	R16,R10
     129 DFB0      RCALL	_debug_send_chars
     12A 940C 065D JMP	pop_xgset003C
(0084) #else
(0085) 
(0086) #endif
(0087) }
(0088) /*************************************************
(0089) 
(0090) *************************************************/
(0091) static unsigned char dtoc(unsigned char d)
(0092) {
(0093) #ifdef DEBUG
(0094)     if(d<=9)
_dtoc:
  d                    --> R16
debug.c:dtoc:
     12C E089      LDI	R24,0x9
     12D 1780      CP	R24,R16
     12E F010      BCS	0x0131
(0095)             return(d+0x30);
     12F 5D00      SUBI	R16,0xD0
     130 C001      RJMP	0x0132
(0096)     else
(0097)             return(d+0x37);
     131 5C09      SUBI	R16,0xC9
     132 9508      RET
_debug_num_uchar:
  debug_string         --> Y,+0
  i                    --> R20
  cBuf                 --> R10
  c                    --> R12
     133 940E 066D CALL	push_xgsetF0FC
     135 2EC0      MOV	R12,R16
     136 9725      SBIW	R28,5
(0098) #endif
(0099) }
(0100) /*************************************************
(0101) 
(0102) *************************************************/
(0103) void debug_num_uchar(unsigned char c)
(0104) {
(0105) #ifdef DEBUG
(0106)   unsigned char debug_string[5];
(0107)   unsigned char cBuf;
(0108)   unsigned int i=0;
     137 2744      CLR	R20
     138 2755      CLR	R21
(0109) 
(0110)   cBuf=(c%1000)/100;
     139 EE28      LDI	R18,0xE8
     13A E033      LDI	R19,3
     13B 2D0C      MOV	R16,R12
     13C 2711      CLR	R17
     13D 940E 05A1 CALL	mod16s
     13F E624      LDI	R18,0x64
     140 E030      LDI	R19,0
     141 940E 05A5 CALL	div16s
(0111)   debug_string[i++]=dtoc(cBuf);
     143 011A      MOVW	R2,R20
     144 5F4F      SUBI	R20,0xFF
     145 4F5F      SBCI	R21,0xFF
     146 922F      PUSH	R2
     147 923F      PUSH	R3
     148 DFE3      RCALL	_dtoc
     149 903F      POP	R3
     14A 902F      POP	R2
     14B 01CE      MOVW	R24,R28
     14C 01F1      MOVW	R30,R2
     14D 0FE8      ADD	R30,R24
     14E 1FF9      ADC	R31,R25
     14F 8300      STD	Z+0,R16
(0112)   cBuf=(c%100)/10;
     150 E614      LDI	R17,0x64
     151 2D0C      MOV	R16,R12
     152 940E 0645 CALL	mod8u
     154 E01A      LDI	R17,0xA
     155 940E 0647 CALL	div8u
(0113)   debug_string[i++]=dtoc(cBuf);
     157 01BA      MOVW	R22,R20
     158 5F4F      SUBI	R20,0xFF
     159 4F5F      SBCI	R21,0xFF
     15A DFD1      RCALL	_dtoc
     15B 2EE0      MOV	R14,R16
     15C 01CE      MOVW	R24,R28
     15D 01FB      MOVW	R30,R22
     15E 0FE8      ADD	R30,R24
     15F 1FF9      ADC	R31,R25
     160 82E0      STD	Z+0,R14
(0114)   cBuf=c%10;
     161 E01A      LDI	R17,0xA
     162 2D0C      MOV	R16,R12
     163 940E 0645 CALL	mod8u
(0115)   debug_string[i++]=dtoc(cBuf);
     165 01BA      MOVW	R22,R20
     166 5F4F      SUBI	R20,0xFF
     167 4F5F      SBCI	R21,0xFF
     168 DFC3      RCALL	_dtoc
     169 2EA0      MOV	R10,R16
     16A 01CE      MOVW	R24,R28
     16B 01FB      MOVW	R30,R22
     16C 0FE8      ADD	R30,R24
     16D 1FF9      ADC	R31,R25
     16E 82A0      STD	Z+0,R10
(0116) 
(0117)   debug_send_chars(debug_string,i);
     16F 019A      MOVW	R18,R20
     170 018E      MOVW	R16,R28
     171 DF68      RCALL	_debug_send_chars
(0118)   debug_send_string("\n",1);
     172 E021      LDI	R18,1
     173 E030      LDI	R19,0
     174 E000      LDI	R16,0
     175 E012      LDI	R17,2
     176 DF77      RCALL	_debug_send_string
     177 9625      ADIW	R28,5
     178 940C 0662 JMP	pop_xgsetF0FC
_debug_num_uint:
  debug_string         --> Y,+0
  i                    --> R20
  cBuf                 --> R10
  lBuf                 --> R12
     17A 940E 066D CALL	push_xgsetF0FC
     17C 0168      MOVW	R12,R16
     17D 972A      SBIW	R28,0xA
(0119) #else
(0120)     c=0;
(0121) #endif
(0122) }
(0123) /*************************************************
(0124) 
(0125) *************************************************/
(0126) void debug_num_uint(unsigned int lBuf)
(0127) {
(0128) #ifdef DEBUG
(0129)   unsigned char debug_string[10];
(0130)   unsigned char cBuf;
(0131)   unsigned int i=0;
     17E 2744      CLR	R20
     17F 2755      CLR	R21
(0132) 
(0133)   cBuf=(lBuf%100000)/10000;
     180 EA80      LDI	R24,0xA0
     181 E896      LDI	R25,0x86
     182 E0A1      LDI	R26,1
     183 E0B0      LDI	R27,0
     184 0186      MOVW	R16,R12
     185 0197      MOVW	R18,R14
     186 2722      CLR	R18
     187 2733      CLR	R19
     188 93BA      ST	R27,-Y
     189 93AA      ST	R26,-Y
     18A 939A      ST	R25,-Y
     18B 938A      ST	R24,-Y
     18C 940E 05E3 CALL	mod32s
     18E E180      LDI	R24,0x10
     18F E297      LDI	R25,0x27
     190 E0A0      LDI	R26,0
     191 E0B0      LDI	R27,0
     192 93BA      ST	R27,-Y
     193 93AA      ST	R26,-Y
     194 939A      ST	R25,-Y
     195 938A      ST	R24,-Y
     196 940E 05E1 CALL	div32s
(0134)   debug_string[i++]=dtoc(cBuf);
     198 011A      MOVW	R2,R20
     199 5F4F      SUBI	R20,0xFF
     19A 4F5F      SBCI	R21,0xFF
     19B 922F      PUSH	R2
     19C 923F      PUSH	R3
     19D DF8E      RCALL	_dtoc
     19E 903F      POP	R3
     19F 902F      POP	R2
     1A0 01CE      MOVW	R24,R28
     1A1 01F1      MOVW	R30,R2
     1A2 0FE8      ADD	R30,R24
     1A3 1FF9      ADC	R31,R25
     1A4 8300      STD	Z+0,R16
(0135)   cBuf=(lBuf%10000)/1000;
     1A5 E120      LDI	R18,0x10
     1A6 E237      LDI	R19,0x27
     1A7 0186      MOVW	R16,R12
     1A8 940E 05BF CALL	mod16u
     1AA EE28      LDI	R18,0xE8
     1AB E033      LDI	R19,3
     1AC 940E 05C1 CALL	div16u
(0136)   debug_string[i++]=dtoc(cBuf);
     1AE 01BA      MOVW	R22,R20
     1AF 5F4F      SUBI	R20,0xFF
     1B0 4F5F      SBCI	R21,0xFF

⌨️ 快捷键说明

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