📄 main.lis
字号:
0152 L11:
0152 L7:
0152 .dbline 95
0152 L4:
0152 .dbline 33
0152 59CF xjmp L3
0154 X0:
0154 .dbline -2
0154 L1:
0154 .dbline 0 ; func end
0154 0895 ret
0156 .dbsym r rec_data 20 c
0156 .dbend
0156 .dbfunc e packageProcess _packageProcess fV
0156 ; temp16 -> R10,R11
0156 ; start_address -> y+2
0156 ; cmd -> R14
0156 ; tmp -> y+8
0156 ; num_bytes -> y+6
0156 ; i -> R12,R13
0156 ; seqNum -> y+19
.even
0156 _packageProcess::
0156 1A93 st -y,r17
0158 0A93 st -y,r16
015A 0E940000 xcall push_gset5
015E 2997 sbiw R28,9
0160 .dbline -1
0160 .dbline 106
0160 ; }
0160 ; }
0160 ;
0160 ;
0160 ;
0160 ;
0160 ; /**********************************************************************
0160 ; functionName:void packageProcess(uint08 seqNum)
0160 ; description:数据包的处理过程
0160 ; **********************************************************************/
0160 ; void packageProcess(uint08 seqNum)
0160 ; {
0160 .dbline 108
0160 ; uint08 cmd;
0160 ; uint08 tmp=0;
0160 0024 clr R0
0162 0886 std y+8,R0
0164 .dbline 110
0164 ; uint16 i;
0164 ; uint16 num_bytes=0;
0164 1124 clr R1
0166 1F82 std y+7,R1
0168 0E82 std y+6,R0
016A .dbline 111
016A ; uint32 start_address = address;
016A 20900200 lds R2,_address
016E 30900300 lds R3,_address+1
0172 4424 clr R4
0174 5524 clr R5
0176 FE01 movw R30,R28
0178 2282 std z+2,R2
017A 3382 std z+3,R3
017C 4482 std z+4,R4
017E 5582 std z+5,R5
0180 .dbline 113
0180 ;
0180 ; cmd = msg_buffer[0];
0180 E0900D00 lds R14,_msg_buffer
0184 .dbline 115
0184 ; //命令CMD_SIGN_ON
0184 ; if(cmd==CMD_SIGN_ON)
0184 8E2D mov R24,R14
0186 8130 cpi R24,1
0188 B1F4 brne L29
018A .dbline 116
018A ; {
018A .dbline 117
018A ; num_bytes = 11;
018A 8BE0 ldi R24,11
018C 90E0 ldi R25,0
018E 9F83 std y+7,R25
0190 8E83 std y+6,R24
0192 .dbline 118
0192 ; msg_buffer[0] = CMD_SIGN_ON;
0192 81E0 ldi R24,1
0194 80930D00 sts _msg_buffer,R24
0198 .dbline 119
0198 ; msg_buffer[1] = STATUS_CMD_OK;
0198 2224 clr R2
019A 20920E00 sts _msg_buffer+1,R2
019E .dbline 120
019E ; msg_buffer[2] = 8;
019E 88E0 ldi R24,8
01A0 80930F00 sts _msg_buffer+2,R24
01A4 .dbline 121
01A4 ; memcpy(msg_buffer+3,"STK500_2",8);
01A4 9983 std y+1,R25
01A6 8883 std y+0,R24
01A8 20E0 ldi R18,<L34
01AA 30E0 ldi R19,>L34
01AC 00E0 ldi R16,<_msg_buffer+3
01AE 10E0 ldi R17,>_msg_buffer+3
01B0 0E940000 xcall _memcpy
01B4 .dbline 122
01B4 ; }
01B4 83C1 xjmp L30
01B6 L29:
01B6 .dbline 124
01B6 ; //命令CMD_SET_PARAMETER
01B6 ; else if(cmd==CMD_SET_PARAMETER)
01B6 8E2D mov R24,R14
01B8 8230 cpi R24,2
01BA 51F4 brne L35
01BC .dbline 125
01BC ; {
01BC .dbline 126
01BC ; num_bytes = 2;
01BC 82E0 ldi R24,2
01BE 90E0 ldi R25,0
01C0 9F83 std y+7,R25
01C2 8E83 std y+6,R24
01C4 .dbline 127
01C4 ; msg_buffer[0] = CMD_SET_PARAMETER;
01C4 80930D00 sts _msg_buffer,R24
01C8 .dbline 128
01C8 ; msg_buffer[1] = STATUS_CMD_OK;
01C8 2224 clr R2
01CA 20920E00 sts _msg_buffer+1,R2
01CE .dbline 129
01CE ; }
01CE 76C1 xjmp L36
01D0 L35:
01D0 .dbline 131
01D0 ; //命令CMD_GET_PARAMETER
01D0 ; else if(cmd==CMD_GET_PARAMETER)
01D0 8E2D mov R24,R14
01D2 8330 cpi R24,3
01D4 B1F5 brne L38
01D6 .dbline 132
01D6 ; {
01D6 .dbline 133
01D6 ; switch(msg_buffer[1])
01D6 A0900E00 lds R10,_msg_buffer+1
01DA BB24 clr R11
01DC C501 movw R24,R10
01DE 8239 cpi R24,146
01E0 E0E0 ldi R30,0
01E2 9E07 cpc R25,R30
01E4 91F0 breq L44
01E6 8439 cpi R24,148
01E8 E0E0 ldi R30,0
01EA 9E07 cpc R25,R30
01EC A9F0 breq L46
01EE 8539 cpi R24,149
01F0 E0E0 ldi R30,0
01F2 9E07 cpc R25,R30
01F4 A1F0 breq L47
01F6 8239 cpi R24,146
01F8 E0E0 ldi R30,0
01FA 9E07 cpc R25,R30
01FC 9CF0 brlt L40
01FE L48:
01FE C501 movw R24,R10
0200 8E39 cpi R24,158
0202 E0E0 ldi R30,0
0204 9E07 cpc R25,R30
0206 21F0 breq L45
0208 0DC0 xjmp L40
020A X2:
020A .dbline 134
020A ; {
020A L44:
020A .dbline 148
020A ; /*case PARAM_BUILD_NUMBER_LOW:
020A ; tmp = CONFIG_PARAM_BUILD_NUMBER_LOW;
020A ; break;
020A ; case PARAM_BUILD_NUMBER_HIGH:
020A ; tmp = CONFIG_PARAM_BUILD_NUMBER_HIGH;
020A ; break;
020A ; case PARAM_HW_VER:
020A ; tmp = CONFIG_PARAM_HW_VER;
020A ; break;
020A ; case PARAM_SW_MAJOR:
020A ; tmp = CONFIG_PARAM_SW_MAJOR;
020A ; break;*/
020A ; case PARAM_SW_MINOR:
020A ; tmp = CONFIG_PARAM_SW_MINOR;
020A 84E0 ldi R24,4
020C 8887 std y+8,R24
020E .dbline 149
020E ; break;
020E 0CC0 xjmp L41
0210 L45:
0210 .dbline 151
0210 ; case PARAM_RESET_POLARITY:
0210 ; tmp = resetPolarity;
0210 20900900 lds R2,_resetPolarity
0214 2886 std y+8,R2
0216 .dbline 152
0216 ; break;
0216 08C0 xjmp L41
0218 L46:
0218 .dbline 154
0218 ; case PARAM_VTARGET: //目标电压
0218 ; tmp = 50;
0218 82E3 ldi R24,50
021A 8887 std y+8,R24
021C .dbline 155
021C ; break;
021C 05C0 xjmp L41
021E L47:
021E .dbline 157
021E ; case PARAM_VADJUST:
021E ; tmp = 50; //参考电压
021E 82E3 ldi R24,50
0220 8887 std y+8,R24
0222 .dbline 158
0222 ; break;
0222 02C0 xjmp L41
0224 L40:
0224 .dbline 169
0224 ; /*case PARAM_TOPCARD_DETECT:
0224 ; tmp = TOP_CARD_STK520;
0224 ; break;
0224 ; case PARAM_CONTROLLER_INIT:
0224 ; tmp = paramControllerInit;
0224 ; break;
0224 ; case PARAM_SCK_DURATION:
0224 ; tmp = clockSpeed;
0224 ; break;*/
0224 ; default:
0224 ; tmp = CONFIG_PARAM_SW_MAJOR;
0224 82E0 ldi R24,2
0226 8887 std y+8,R24
0228 .dbline 170
0228 ; break;
0228 L41:
0228 .dbline 172
0228 ; }
0228 ; num_bytes = 3;
0228 83E0 ldi R24,3
022A 90E0 ldi R25,0
022C 9F83 std y+7,R25
022E 8E83 std y+6,R24
0230 .dbline 173
0230 ; msg_buffer[0] = CMD_GET_PARAMETER;
0230 80930D00 sts _msg_buffer,R24
0234 .dbline 174
0234 ; msg_buffer[1] = STATUS_CMD_OK;
0234 2224 clr R2
0236 20920E00 sts _msg_buffer+1,R2
023A .dbline 175
023A ; msg_buffer[2] = tmp;
023A 0884 ldd R0,y+8
023C 00920F00 sts _msg_buffer+2,R0
0240 .dbline 176
0240 ; }
0240 3DC1 xjmp L39
0242 L38:
0242 .dbline 185
0242 ; //命令CMD_OSCCAL
0242 ; /*else if(cmd==CMD_OSCCAL)
0242 ; {
0242 ; num_bytes = 2;
0242 ; msg_buffer[0] = CMD_OSCCAL;
0242 ; msg_buffer[1] = STATUS_CMD_OK;
0242 ; }*/
0242 ; //命令CMD_LOAD_ADDRESS
0242 ; else if(cmd==CMD_LOAD_ADDRESS)
0242 8E2D mov R24,R14
0244 8630 cpi R24,6
0246 59F5 brne L51
0248 .dbline 186
0248 ; {
0248 .dbline 189
0248 ; //address = ((unsigned long)msg_buffer[1])<<24;
0248 ; //address |= ((unsigned long)msg_buffer[2])<<16;
0248 ; address = ((unsigned long)msg_buffer[3])<<8;
0248 88E0 ldi R24,8
024A 90E0 ldi R25,0
024C 20901000 lds R2,_msg_buffer+3
0250 3324 clr R3
0252 4424 clr R4
0254 5524 clr R5
0256 8A93 st -y,R24
0258 8101 movw R16,R2
025A 9201 movw R18,R4
025C 0E940000 xcall lsl32
0260 10930300 sts _address+1,R17
0264 00930200 sts _address,R16
0268 .dbline 190
0268 ; address |= ((unsigned long)msg_buffer[4]);
0268 20901100 lds R2,_msg_buffer+4
026C 3324 clr R3
026E 4424 clr R4
0270 5524 clr R5
0272 3801 movw R6,R16
0274 8824 clr R8
0276 9924 clr R9
0278 6228 or R6,R2
027A 7328 or R7,R3
027C 8428 or R8,R4
027E 9528 or R9,R5
0280 70920300 sts _address+1,R7
0284 60920200 sts _address,R6
0288 .dbline 191
0288 ; num_bytes = 2;
0288 82E0 ldi R24,2
028A 90E0 ldi R25,0
028C 9F83 std y+7,R25
028E 8E83 std y+6,R24
0290 .dbline 192
0290 ; msg_buffer[0] = CMD_LOAD_ADDRESS;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -