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