📄 main.lis
字号:
00D6 .dbline 117
00D6 ; state = ST_GET_DATA;
00D6 85E0 ldi R24,61445
00D8 90EF ldi R25,240
00DA 7C01 movw R14,R24
00DC .dbline 118
00DC ; checksum ^= t;
00DC C426 eor R12,R20
00DE .dbline 119
00DE ; i=0;
00DE 0024 clr R0
00E0 1124 clr R1
00E2 1A82 std y+2,R1
00E4 0982 std y+1,R0
00E6 .dbline 120
00E6 ; }
00E6 2BC0 rjmp L19
00E8 L20:
00E8 .dbline 121
00E8 ; else {
00E8 .dbline 122
00E8 ; state = ST_START;
00E8 80E0 ldi R24,61440
00EA 90EF ldi R25,240
00EC 7C01 movw R14,R24
00EE .dbline 123
00EE ; }
00EE .dbline 124
00EE ; }
00EE 27C0 rjmp L19
00F0 L18:
00F0 .dbline 125
00F0 ; else {
00F0 .dbline 126
00F0 ; if(state==ST_GET_DATA) {
00F0 C701 movw R24,R14
00F2 8530 cpi R24,5
00F4 E0EF ldi R30,240
00F6 9E07 cpc R25,R30
00F8 B1F4 brne L22
00FA .dbline 126
00FA .dbline 127
00FA ; msg_buffer[i++] = t;
00FA 2980 ldd R2,y+1
00FC 3A80 ldd R3,y+2
00FE C101 movw R24,R2
0100 0196 adiw R24,1
0102 9A83 std y+2,R25
0104 8983 std y+1,R24
0106 80E0 ldi R24,<_msg_buffer
0108 90E0 ldi R25,>_msg_buffer
010A F101 movw R30,R2
010C E80F add R30,R24
010E F91F adc R31,R25
0110 4083 std z+0,R20
0112 .dbline 128
0112 ; checksum ^= t;
0112 C426 eor R12,R20
0114 .dbline 129
0114 ; if(i==msg_size) {
0114 0980 ldd R0,y+1
0116 1A80 ldd R1,y+2
0118 0616 cp R0,R22
011A 1706 cpc R1,R23
011C 81F4 brne L23
011E .dbline 129
011E .dbline 130
011E ; state = ST_GET_CHECK;
011E 86E0 ldi R24,61446
0120 90EF ldi R25,240
0122 7C01 movw R14,R24
0124 .dbline 131
0124 ; }
0124 .dbline 132
0124 ; }
0124 0CC0 rjmp L23
0126 L22:
0126 .dbline 133
0126 ; else {
0126 .dbline 134
0126 ; if(state==ST_GET_CHECK) {
0126 C701 movw R24,R14
0128 8630 cpi R24,6
012A E0EF ldi R30,240
012C 9E07 cpc R25,R30
012E 39F4 brne L26
0130 .dbline 134
0130 .dbline 135
0130 ; if(t==checksum) {
0130 4C15 cp R20,R12
0132 11F4 brne L28
0134 .dbline 135
0134 .dbline 136
0134 ; process_command(seq_num);
0134 0881 ldd R16,y+0
0136 06D0 rcall _process_command
0138 .dbline 137
0138 ; }
0138 L28:
0138 .dbline 138
0138 ; state = ST_START;
0138 80E0 ldi R24,61440
013A 90EF ldi R25,240
013C 7C01 movw R14,R24
013E .dbline 139
013E ; }
013E L26:
013E .dbline 140
013E ; }
013E L23:
013E .dbline 141
013E ; }
013E L19:
013E .dbline 142
013E ; }
013E L17:
013E .dbline 143
013E ; }
013E L15:
013E .dbline 144
013E ; }
013E L13:
013E .dbline 145
013E ; }
013E L9:
013E .dbline 146
013E ; }
013E L6:
013E .dbline 147
013E L4:
013E .dbline 84
013E 85CF rjmp L3
0140 X0:
0140 .dbline -2
0140 L2:
0140 2396 adiw R28,3
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbsym l i 1 i
0144 .dbsym r msg_size 22 i
0144 .dbsym l seq_num 0 c
0144 .dbsym r checksum 12 c
0144 .dbsym r t 20 c
0144 .dbsym r state 14 i
0144 .dbsym r rec_data 10 I
0144 .dbend
0144 .dbfunc e process_command _process_command fV
0144 ; mode -> R14
0144 ; block_size -> R10,R11
0144 ; start_address -> y+6
0144 ; polling_address -> y+2
0144 ; tmp -> y+13
0144 ; cmd -> y+12
0144 ; num_bytes -> y+10
0144 ; i -> R12,R13
0144 ; seq_num -> y+24
.even
0144 _process_command::
0144 1A93 st -y,r17
0146 0A93 st -y,r16
0148 00D0 rcall push_gset5
014A 2E97 sbiw R28,14
014C .dbline -1
014C .dbline 175
014C ; }
014C ; }
014C ;
014C ; /**
014C ; Returns the value of the selected adc channel
014C ;
014C ; @param n Number of ADC channel
014C ;
014C ; @return Value of ADC channel
014C ; */
014C ; /*unsigned char adc_get(char n)
014C ; {
014C ; ADMUX&=0xF0;
014C ; ADMUX|=n&0x7;
014C ;
014C ; while(ADCSRA&0x40);
014C ; ADCSRA|=(1<<ADSC);
014C ; while(ADCSRA&0x40);
014C ;
014C ; return ADCH;
014C ; }*/
014C ;
014C ; /**
014C ; Processes a command packet received in main loop and located in the global buffer
014C ;
014C ; @param seq_num The sequence number of the command packet
014C ; */
014C ; void process_command(unsigned char seq_num)
014C ; {
014C .dbline 177
014C ; unsigned char cmd;
014C ; unsigned char tmp=0;
014C 0024 clr R0
014E 0D86 std y+13,R0
0150 .dbline 181
0150 ; unsigned char mode;
0150 ; unsigned int block_size;
0150 ; unsigned int i;
0150 ; unsigned int num_bytes=0;
0150 1124 clr R1
0152 1B86 std y+11,R1
0154 0A86 std y+10,R0
0156 .dbline 182
0156 ; unsigned long polling_address=0;
0156 40E0 ldi R20,0
0158 50E0 ldi R21,0
015A 60E0 ldi R22,0
015C 70E0 ldi R23,0
015E FE01 movw R30,R28
0160 4283 std z+2,R20
0162 5383 std z+3,R21
0164 6483 std z+4,R22
0166 7583 std z+5,R23
0168 .dbline 183
0168 ; unsigned long start_address = address;
0168 40900200 lds R4,_address+2
016C 50900300 lds R5,_address+2+1
0170 20900000 lds R2,_address
0174 30900100 lds R3,_address+1
0178 FE01 movw R30,R28
017A 2682 std z+6,R2
017C 3782 std z+7,R3
017E 4086 std z+8,R4
0180 5186 std z+9,R5
0182 .dbline 185
0182 ;
0182 ; cmd = msg_buffer[0];
0182 20900800 lds R2,_msg_buffer
0186 2C86 std y+12,R2
0188 .dbline 190
0188 ;
0188 ; //////////////////////////////////////
0188 ; //CMD_SIGN_ON
0188 ; //////////////////////////////////////
0188 ; if(cmd==CMD_SIGN_ON)
0188 822D mov R24,R2
018A 8130 cpi R24,1
018C A9F4 brne L31
018E .dbline 191
018E ; {
018E .dbline 192
018E ; num_bytes = 11;
018E 8BE0 ldi R24,11
0190 90E0 ldi R25,0
0192 9B87 std y+11,R25
0194 8A87 std y+10,R24
0196 .dbline 193
0196 ; msg_buffer[0] = CMD_SIGN_ON;
0196 81E0 ldi R24,1
0198 80930800 sts _msg_buffer,R24
019C .dbline 194
019C ; msg_buffer[1] = STATUS_CMD_OK;
019C 2224 clr R2
019E 20920900 sts _msg_buffer+1,R2
01A2 .dbline 195
01A2 ; msg_buffer[2] = 8;
01A2 88E0 ldi R24,8
01A4 80930A00 sts _msg_buffer+2,R24
01A8 .dbline 196
01A8 ; memcpy(msg_buffer+3,"AVRISP_2",8);
01A8 9983 std y+1,R25
01AA 8883 std y+0,R24
01AC 20E0 ldi R18,<L36
01AE 30E0 ldi R19,>L36
01B0 00E0 ldi R16,<_msg_buffer+3
01B2 10E0 ldi R17,>_msg_buffer+3
01B4 00D0 rcall _memcpy
01B6 .dbline 197
01B6 ; }
01B6 E8C6 rjmp L32
01B8 L31:
01B8 .dbline 201
01B8 ; //////////////////////////////////////
01B8 ; //CMD_SET_PARAMETER
01B8 ; //////////////////////////////////////
01B8 ; else if(cmd==CMD_SET_PARAMETER)
01B8 8C85 ldd R24,y+12
01BA 8230 cpi R24,2
01BC 81F5 brne L37
01BE .dbline 202
01BE ; {
01BE .dbline 203
01BE ; switch(msg_buffer[1])
01BE A0900900 lds R10,_msg_buffer+1
01C2 BB24 clr R11
01C4 C501 movw R24,R10
01C6 8839 cpi R24,152
01C8 E0E0 ldi R30,0
01CA 9E07 cpc R25,R30
01CC 71F0 breq L43
01CE 8839 cpi R24,152
01D0 E0E0 ldi R30,0
01D2 9E07 cpc R25,R30
01D4 D4F0 brlt L39
01D6 L49:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -