📄 main.lis
字号:
014C ; }
014C L26:
014C .dbline 104
014C ; statusMachine = ST_START;
014C 80EF ldi R24,240
014E 80930600 sts _statusMachine,R24
0152 .dbline 105
0152 ; }
0152 L24:
0152 L21:
0152 L17:
0152 L15:
0152 L13:
0152 L11:
0152 L7:
0152 .dbline 106
0152 L4:
0152 .dbline 44
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 117
0160 ; }
0160 ; }
0160 ;
0160 ;
0160 ;
0160 ;
0160 ; /**********************************************************************
0160 ; functionName:void packageProcess(uint08 seqNum)
0160 ; description:数据包的处理过程
0160 ; **********************************************************************/
0160 ; void packageProcess(uint08 seqNum)
0160 ; {
0160 .dbline 119
0160 ; uint08 cmd;
0160 ; uint08 tmp=0;
0160 0024 clr R0
0162 0886 std y+8,R0
0164 .dbline 121
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 122
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 2A82 std y+2,R2
0178 3B82 std y+3,R3
017A 4C82 std y+4,R4
017C 5D82 std y+5,R5
017E .dbline 124
017E ;
017E ; cmd = msg_buffer[0];
017E E0900D00 lds R14,_msg_buffer
0182 .dbline 126
0182 ; //命令CMD_SIGN_ON
0182 ; if(cmd==CMD_SIGN_ON)
0182 8E2D mov R24,R14
0184 8130 cpi R24,1
0186 B1F4 brne L29
0188 .dbline 127
0188 ; {
0188 .dbline 128
0188 ; num_bytes = 11;
0188 8BE0 ldi R24,11
018A 90E0 ldi R25,0
018C 9F83 std y+7,R25
018E 8E83 std y+6,R24
0190 .dbline 129
0190 ; msg_buffer[0] = CMD_SIGN_ON;
0190 81E0 ldi R24,1
0192 80930D00 sts _msg_buffer,R24
0196 .dbline 130
0196 ; msg_buffer[1] = STATUS_CMD_OK;
0196 2224 clr R2
0198 20920E00 sts _msg_buffer+1,R2
019C .dbline 131
019C ; msg_buffer[2] = 8;
019C 88E0 ldi R24,8
019E 80930F00 sts _msg_buffer+2,R24
01A2 .dbline 132
01A2 ; memcpy(msg_buffer+3,"STK500_2",8);
01A2 9983 std y+1,R25
01A4 8883 std y+0,R24
01A6 20E0 ldi R18,<L34
01A8 30E0 ldi R19,>L34
01AA 00E0 ldi R16,<_msg_buffer+3
01AC 10E0 ldi R17,>_msg_buffer+3
01AE 0E940000 xcall _memcpy
01B2 .dbline 133
01B2 ; }
01B2 80C1 xjmp L30
01B4 L29:
01B4 .dbline 135
01B4 ; //命令CMD_SET_PARAMETER
01B4 ; else if(cmd==CMD_SET_PARAMETER)
01B4 8E2D mov R24,R14
01B6 8230 cpi R24,2
01B8 51F4 brne L35
01BA .dbline 136
01BA ; {
01BA .dbline 137
01BA ; num_bytes = 2;
01BA 82E0 ldi R24,2
01BC 90E0 ldi R25,0
01BE 9F83 std y+7,R25
01C0 8E83 std y+6,R24
01C2 .dbline 138
01C2 ; msg_buffer[0] = CMD_SET_PARAMETER;
01C2 80930D00 sts _msg_buffer,R24
01C6 .dbline 139
01C6 ; msg_buffer[1] = STATUS_CMD_OK;
01C6 2224 clr R2
01C8 20920E00 sts _msg_buffer+1,R2
01CC .dbline 140
01CC ; }
01CC 73C1 xjmp L36
01CE L35:
01CE .dbline 142
01CE ; //命令CMD_GET_PARAMETER
01CE ; else if(cmd==CMD_GET_PARAMETER)
01CE 8E2D mov R24,R14
01D0 8330 cpi R24,3
01D2 B1F5 brne L38
01D4 .dbline 143
01D4 ; {
01D4 .dbline 144
01D4 ; switch(msg_buffer[1])
01D4 A0900E00 lds R10,_msg_buffer+1
01D8 BB24 clr R11
01DA C501 movw R24,R10
01DC 8239 cpi R24,146
01DE E0E0 ldi R30,0
01E0 9E07 cpc R25,R30
01E2 91F0 breq L44
01E4 8439 cpi R24,148
01E6 E0E0 ldi R30,0
01E8 9E07 cpc R25,R30
01EA A9F0 breq L46
01EC 8539 cpi R24,149
01EE E0E0 ldi R30,0
01F0 9E07 cpc R25,R30
01F2 A1F0 breq L47
01F4 8239 cpi R24,146
01F6 E0E0 ldi R30,0
01F8 9E07 cpc R25,R30
01FA 9CF0 brlt L40
01FC L48:
01FC C501 movw R24,R10
01FE 8E39 cpi R24,158
0200 E0E0 ldi R30,0
0202 9E07 cpc R25,R30
0204 21F0 breq L45
0206 0DC0 xjmp L40
0208 X2:
0208 .dbline 145
0208 ; {
0208 L44:
0208 .dbline 159
0208 ; /*case PARAM_BUILD_NUMBER_LOW:
0208 ; tmp = CONFIG_PARAM_BUILD_NUMBER_LOW;
0208 ; break;
0208 ; case PARAM_BUILD_NUMBER_HIGH:
0208 ; tmp = CONFIG_PARAM_BUILD_NUMBER_HIGH;
0208 ; break;
0208 ; case PARAM_HW_VER:
0208 ; tmp = CONFIG_PARAM_HW_VER;
0208 ; break;
0208 ; case PARAM_SW_MAJOR:
0208 ; tmp = CONFIG_PARAM_SW_MAJOR;
0208 ; break;*/
0208 ; case PARAM_SW_MINOR:
0208 ; tmp = CONFIG_PARAM_SW_MINOR;
0208 84E0 ldi R24,4
020A 8887 std y+8,R24
020C .dbline 160
020C ; break;
020C 0CC0 xjmp L41
020E L45:
020E .dbline 162
020E ; case PARAM_RESET_POLARITY:
020E ; tmp = resetPolarity;
020E 20900900 lds R2,_resetPolarity
0212 2886 std y+8,R2
0214 .dbline 163
0214 ; break;
0214 08C0 xjmp L41
0216 L46:
0216 .dbline 165
0216 ; case PARAM_VTARGET: //目标电压
0216 ; tmp = 50;
0216 82E3 ldi R24,50
0218 8887 std y+8,R24
021A .dbline 166
021A ; break;
021A 05C0 xjmp L41
021C L47:
021C .dbline 168
021C ; case PARAM_VADJUST:
021C ; tmp = 50; //参考电压
021C 82E3 ldi R24,50
021E 8887 std y+8,R24
0220 .dbline 169
0220 ; break;
0220 02C0 xjmp L41
0222 L40:
0222 .dbline 180
0222 ; /*case PARAM_TOPCARD_DETECT:
0222 ; tmp = TOP_CARD_STK520;
0222 ; break;
0222 ; case PARAM_CONTROLLER_INIT:
0222 ; tmp = paramControllerInit;
0222 ; break;
0222 ; case PARAM_SCK_DURATION:
0222 ; tmp = clockSpeed;
0222 ; break;*/
0222 ; default:
0222 ; tmp = CONFIG_PARAM_SW_MAJOR;
0222 82E0 ldi R24,2
0224 8887 std y+8,R24
0226 .dbline 181
0226 ; break;
0226 L41:
0226 .dbline 183
0226 ; }
0226 ; num_bytes = 3;
0226 83E0 ldi R24,3
0228 90E0 ldi R25,0
022A 9F83 std y+7,R25
022C 8E83 std y+6,R24
022E .dbline 184
022E ; msg_buffer[0] = CMD_GET_PARAMETER;
022E 80930D00 sts _msg_buffer,R24
0232 .dbline 185
0232 ; msg_buffer[1] = STATUS_CMD_OK;
0232 2224 clr R2
0234 20920E00 sts _msg_buffer+1,R2
0238 .dbline 186
0238 ; msg_buffer[2] = tmp;
0238 0884 ldd R0,y+8
023A 00920F00 sts _msg_buffer+2,R0
023E .dbline 187
023E ; }
023E 3AC1 xjmp L39
0240 L38:
0240 .dbline 196
0240 ; //命令CMD_OSCCAL
0240 ; /*else if(cmd==CMD_OSCCAL)
0240 ; {
0240 ; num_bytes = 2;
0240 ; msg_buffer[0] = CMD_OSCCAL;
0240 ; msg_buffer[1] = STATUS_CMD_OK;
0240 ; }*/
0240 ; //命令CMD_LOAD_ADDRESS
0240 ; else if(cmd==CMD_LOAD_ADDRESS)
0240 8E2D mov R24,R14
0242 8630 cpi R24,6
0244 49F5 brne L51
0246 .dbline 197
0246 ; {
0246 .dbline 200
0246 ; //address = ((unsigned long)msg_buffer[1])<<24;
0246 ; //address |= ((unsigned long)msg_buffer[2])<<16;
0246 ; address = ((unsigned long)msg_buffer[3])<<8;
0246 88E0 ldi R24,8
0248 90E0 ldi R25,0
024A 00911000 lds R16,_msg_buffer+3
024E 1127 clr R17
0250 2227 clr R18
0252 3327 clr R19
0254 8A93 st -y,R24
0256 0E940000 xcall lsl32
025A 10930300 sts _address+1,R17
025E 00930200 sts _address,R16
0262 .dbline 201
0262 ; address |= ((unsigned long)msg_buffer[4]);
0262 20901100 lds R2,_msg_buffer+4
0266 3324 clr R3
0268 4424 clr R4
026A 5524 clr R5
026C 3801 movw R6,R16
026E 8824 clr R8
0270 9924 clr R9
0272 6228 or R6,R2
0274 7328 or R7,R3
0276 8428 or R8,R4
0278 9528 or R9,R5
027A 70920300 sts _address+1,R7
027E 60920200 sts _address,R6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -