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

📄 main.lis

📁 很好的制作AVR32 ICE的资料
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00DC           ;               else state = ST_START;
 00DC 40E0              ldi R20,61440
 00DE 50EF              ldi R21,240
 00E0                   .dbline 151
 00E0           ;             }
 00E0 23C0              xjmp L21
 00E2           L20:
 00E2                   .dbline 152
 00E2           ;           else if (state==ST_GET_DATA)
 00E2 4530              cpi R20,5
 00E4 E0EF              ldi R30,240
 00E6 5E07              cpc R21,R30
 00E8 A9F4              brne L24
 00EA           X9:
 00EA                   .dbline 153
 00EA           ;             {
 00EA                   .dbline 154
 00EA           ;               msg_buffer[i++] = t;
 00EA E880              ldd R14,y+0
 00EC F980              ldd R15,y+1
 00EE C701              movw R24,R14
 00F0 0196              adiw R24,1
 00F2 9983              std y+1,R25
 00F4 8883              std y+0,R24
 00F6 80E0              ldi R24,<_msg_buffer
 00F8 90E0              ldi R25,>_msg_buffer
 00FA F701              movw R30,R14
 00FC E80F              add R30,R24
 00FE F91F              adc R31,R25
 0100 A082              std z+0,R10
 0102                   .dbline 155
 0102           ;               checksum ^= t;
 0102 6A25              eor R22,R10
 0104                   .dbline 156
 0104           ;               if (i==msg_size)
 0104 0880              ldd R0,y+0
 0106 1980              ldd R1,y+1
 0108 0C14              cp R0,R12
 010A 1D04              cpc R1,R13
 010C 69F4              brne L25
 010E           X10:
 010E                   .dbline 157
 010E           ;                 {
 010E                   .dbline 158
 010E           ;                   state = ST_GET_CHECK;
 010E 46E0              ldi R20,61446
 0110 50EF              ldi R21,240
 0112                   .dbline 159
 0112           ;                 }
 0112                   .dbline 160
 0112           ;             }
 0112 0AC0              xjmp L25
 0114           L24:
 0114                   .dbline 161
 0114           ;           else if (state==ST_GET_CHECK)
 0114 4630              cpi R20,6
 0116 E0EF              ldi R30,240
 0118 5E07              cpc R21,R30
 011A 31F4              brne L28
 011C           X11:
 011C                   .dbline 162
 011C           ;             {
 011C                   .dbline 163
 011C           ;               if (t==checksum)
 011C A616              cp R10,R22
 011E 11F4              brne L30
 0120           X12:
 0120                   .dbline 164
 0120           ;                 {
 0120                   .dbline 165
 0120           ;                   process_command(seq_num);
 0120 0A81              ldd R16,y+2
 0122 14D0              xcall _process_command
 0124                   .dbline 166
 0124           ;                 }
 0124           L30:
 0124                   .dbline 168
 0124           ; 
 0124           ;               state = ST_START;
 0124 40E0              ldi R20,61440
 0126 50EF              ldi R21,240
 0128                   .dbline 169
 0128           ;             }
 0128           L28:
 0128           L25:
 0128           L21:
 0128           L19:
 0128           L17:
 0128           L15:
 0128           L11:
 0128                   .dbline 171
 0128           ; 
 0128           ;         }//if(rec_data!=-1)
 0128           L8:
 0128                   .dbline 172
 0128           ;     }//while(2)
 0128           L6:
 0128                   .dbline 105
 0128 93CF              xjmp L5
 012A           X13:
 012A                   .dbline -2
 012A           L2:
 012A                   .dbline 0 ; func end
 012A 2496              adiw R28,4
 012C 0895              ret
 012E                   .dbsym r rec_data1 10 I
 012E                   .dbsym r t0 10 c
 012E                   .dbsym r state0 20 i
 012E                   .dbsym r checksum0 22 c
 012E                   .dbsym r msg_size0 12 i
 012E                   .dbsym l seq_num0 2 c
 012E                   .dbsym l i0 0 i
 012E                   .dbend
 012E                   .dbfunc e adc_get _adc_get fc
 012E           ;              n -> R16
                        .even
 012E           _adc_get::
 012E                   .dbline -1
 012E                   .dbline 186
 012E           ; 
 012E           ;   return 0;
 012E           ; 
 012E           ; }
 012E           ; 
 012E           ; /**
 012E           ;       Returns the value of the selected adc channel
 012E           ; 
 012E           ;       @param n Number of ADC channel
 012E           ; 
 012E           ;       @return  Value of ADC channel
 012E           ; */
 012E           ; unsigned char adc_get(char n)
 012E           ; {
 012E                   .dbline 187
 012E           ;   ADMUX&=0xF0;
 012E 87B1              in R24,0x7
 0130 807F              andi R24,240
 0132 87B9              out 0x7,R24
 0134                   .dbline 188
 0134           ;   ADMUX|=n&0x7;
 0134 802F              mov R24,R16
 0136 8770              andi R24,7
 0138 27B0              in R2,0x7
 013A 282A              or R2,R24
 013C 27B8              out 0x7,R2
 013E           L33:
 013E                   .dbline 190
 013E           ; 
 013E           ;   while (ADCSRA&0x40);
 013E           L34:
 013E                   .dbline 190
 013E 3699              sbic 0x6,6
 0140 FECF              rjmp L33
 0142           X16:
 0142                   .dbline 191
 0142           ;   ADCSRA|=(1<<ADSC);
 0142 369A              sbi 0x6,6
 0144           L36:
 0144                   .dbline 192
 0144           ;   while (ADCSRA&0x40);
 0144           L37:
 0144                   .dbline 192
 0144 3699              sbic 0x6,6
 0146 FECF              rjmp L36
 0148           X17:
 0148                   .dbline 194
 0148           ; 
 0148           ;   return ADCH;
 0148 05B1              in R16,0x5
 014A                   .dbline -2
 014A           L32:
 014A                   .dbline 0 ; func end
 014A 0895              ret
 014C                   .dbsym r n 16 c
 014C                   .dbend
 014C                   .dbfunc e process_command _process_command fV
 014C           ; bytes_to_transmit0 -> y+12
 014C           ;       rx_from0 -> y+14
 014C           ;      rx_bytes0 -> R12
 014C           ;      tx_bytes0 -> y+10
 014C           ;           Reg9 -> R12,R13
 014C           ;          Reg80 -> y+14
 014C           ;          Reg26 -> y+16
 014C           ;          Reg48 -> R12,R13
 014C           ;          Reg17 -> y+16
 014C           ;          Reg39 -> R12,R13
 014C           ;          Reg65 -> y+16
 014C           ;          Reg72 -> y+16
 014C           ;          Reg59 -> R12,R13
 014C           ;          Reg29 -> y+20
 014C           ;          Reg12 -> y+16
 014C           ;            i29 -> R12,R13
 014C           ;          tmp47 -> R14
 014C           ;            i23 -> R12,R13
 014C           ;            i20 -> R14,R15
 014C           ;          tmp39 -> R14
 014C           ;            i16 -> R14,R15
 014C           ;          mode7 -> y+12
 014C           ;    block_size6 -> y+14
 014C           ;            i13 -> R14,R15
 014C           ;          tmp37 -> y+14
 014C           ;    block_size4 -> y+12
 014C           ;            i10 -> R14,R15
 014C           ;          tmp31 -> R12
 014C           ;             i6 -> R14,R15
 014C           ;          mode0 -> y+14
 014C           ;    block_size2 -> y+12
 014C           ;             i3 -> R12,R13
 014C           ;          tmp29 -> y+12
 014C           ;    block_size0 -> y+14
 014C           ;          tmp24 -> R14
 014C           ;          tmp23 -> R14
 014C           ;          tmp22 -> R14
 014C           ;          tmp21 -> R14
 014C           ;          tmp16 -> R14
 014C           ;          tmp15 -> R14
 014C           ;          tmp14 -> R14
 014C           ;          tmp13 -> R14
 014C           ;          tmp12 -> R14
 014C           ;          tmp11 -> R14
 014C           ;          tmp10 -> R14
 014C           ;           tmp9 -> R14
 014C           ;           tmp8 -> R14
 014C           ;           tmp7 -> R14
 014C           ;           tmp6 -> R14
 014C           ;           tmp5 -> R14
 014C           ;           tmp2 -> R12
 014C           ;     num_bytes1 -> R10,R11
 014C           ;             i0 -> R14,R15
 014C           ;           cmd0 -> y+10
 014C           ; start_address0 -> y+6
 014C           ; polling_address0 -> y+2
 014C           ;           tmp0 -> y+18
 014C           ;        seq_num -> y+32
                        .even
 014C           _process_command::
 014C 1A93              st -y,r17
 014E 0A93              st -y,r16
 0150 0E940000          xcall push_xgsetF0FC
 0154 6697              sbiw R28,22
 0156                   .dbline -1
 0156                   .dbline 203
 0156           ; }
 0156           ; 
 0156           ; /**
 0156           ;       Processes a command packet received in main loop and located in the global buffer
 0156           ; 
 0156           ;       @param  seq_num The sequence number of the command packet
 0156           ; */
 0156           ; void process_command(unsigned char seq_num)
 0156           ; {
 0156                   .dbline 205
 0156           ;   unsigned char cmd;
 0156           ;   unsigned char tmp=0;
 0156 0024              clr R0
 0158 0A8A              std y+18,R0
 015A                   .dbline 209
 015A           ;   unsigned char mode;
 015A           ;   unsigned int block_size;
 015A           ;   unsigned int i;
 015A           ;   unsigned int num_bytes=0;
 015A AA24              clr R10
 015C BB24              clr R11
 015E                   .dbline 210
 015E           ;   unsigned long polling_address=0;
 015E 40E0              ldi R20,0
 0160 50E0              ldi R21,0
 0162 60E0              ldi R22,0
 0164 70E0              ldi R23,0
 0166 4A83              std y+2,R20
 0168 5B83              std y+3,R21
 016A 6C83              std y+4,R22
 016C 7D83              std y+5,R23
 016E                   .dbline 211
 016E           ;   unsigned long start_address = address;
 016E 40900200          lds R4,_address+2
 0172 50900300          lds R5,_address+2+1
 0176 20900000          lds R2,_address
 017A 30900100          lds R3,_address+1
 017E 2E82              std y+6,R2
 0180 3F82              std y+7,R3
 0182 4886              std y+8,R4
 0184 5986              std y+9,R5
 0186                   .dbline 213
 0186           ; 
 0186           ;   cmd = msg_buffer[0];
 0186 20900800          lds R2,_msg_buffer
 018A 2A86              std y+10,R2
 018C                   .dbline 218
 018C           ; 
 018C           ;   //////////////////////////////////////
 018C           ;   //CMD_SIGN_ON
 018C           ;   //////////////////////////////////////
 018C           ;   if (cmd==CMD_SIGN_ON)
 018C 822D              mov R24,R2
 018E 8130              cpi R24,1
 0190 A9F4              brne L40
 0192           X18:
 0192                   .dbline 219
 0192           ;     {
 0192                   .dbline 220
 0192           ;       num_bytes = 11;
 0192 8BE0              ldi R24,11
 0194 90E0              ldi R25,0
 0196 5C01              movw R10,R24
 0198                   .dbline 221
 0198           ;       msg_buffer[0] = CMD_SIGN_ON;
 0198 81E0              ldi R24,1
 019A 80930800          sts _msg_buffer,R24
 019E                   .dbline 222
 019E           ;       msg_buffer[1] = STATUS_CMD_OK;
 019E 2224              clr R2
 01A0 20920900          sts _msg_buffer+1,R2
 01A4                   .dbline 223
 01A4           ;       msg_buffer[2] = 8;
 01A4 88E0              ldi R24,8
 01A6 80930A00          sts _msg_buffer+2,R24
 01AA                   .dbline 224
 01AA           ;       memcpy(msg_buffer+3,"AVRISP_2",8);
 01AA 9983              std y+1,R25
 01AC 8883              std y+0,R24
 01AE 20E0              ldi R18,<L45
 01B0 30E0              ldi R19,>L45
 01B2 00E0              ldi R16,<_msg_buffer+3
 01B4 10E0              ldi R17,>_msg_buffer+3
 01B6 0E940000          xcall _memcpy
 01BA                   .dbline 225
 01BA           ;     }
 01BA FDC7              xjmp L41
 01BC           L40:
 01BC                   .dbline 229
 01BC           ;   //////////////////////////////////////
 01BC           ;   //CMD_SET_PARAMETER
 01BC           ;   //////////////////////////////////////
 01BC           ;   else if (cmd==CMD_SET_PARAMETER)
 01BC 8A85              ldd R24,y+10
 01BE 8230              cpi R24,2
 01C0 09F0              breq X135

⌨️ 快捷键说明

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