📄 main.lis
字号:
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 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 124
0180 ;
0180 ; cmd = msg_buffer[0];
0180 E0900D00 lds R14,_msg_buffer
0184 .dbline 126
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 127
018A ; {
018A .dbline 128
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 129
0192 ; msg_buffer[0] = CMD_SIGN_ON;
0192 81E0 ldi R24,1
0194 80930D00 sts _msg_buffer,R24
0198 .dbline 130
0198 ; msg_buffer[1] = STATUS_CMD_OK;
0198 2224 clr R2
019A 20920E00 sts _msg_buffer+1,R2
019E .dbline 131
019E ; msg_buffer[2] = 8;
019E 88E0 ldi R24,8
01A0 80930F00 sts _msg_buffer+2,R24
01A4 .dbline 132
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 133
01B4 ; }
01B4 83C1 xjmp L30
01B6 L29:
01B6 .dbline 135
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 136
01BC ; {
01BC .dbline 137
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 138
01C4 ; msg_buffer[0] = CMD_SET_PARAMETER;
01C4 80930D00 sts _msg_buffer,R24
01C8 .dbline 139
01C8 ; msg_buffer[1] = STATUS_CMD_OK;
01C8 2224 clr R2
01CA 20920E00 sts _msg_buffer+1,R2
01CE .dbline 140
01CE ; }
01CE 76C1 xjmp L36
01D0 L35:
01D0 .dbline 142
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 143
01D6 ; {
01D6 .dbline 144
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 145
020A ; {
020A L44:
020A .dbline 159
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 160
020E ; break;
020E 0CC0 xjmp L41
0210 L45:
0210 .dbline 162
0210 ; case PARAM_RESET_POLARITY:
0210 ; tmp = resetPolarity;
0210 20900900 lds R2,_resetPolarity
0214 2886 std y+8,R2
0216 .dbline 163
0216 ; break;
0216 08C0 xjmp L41
0218 L46:
0218 .dbline 165
0218 ; case PARAM_VTARGET: //目标电压
0218 ; tmp = 50;
0218 82E3 ldi R24,50
021A 8887 std y+8,R24
021C .dbline 166
021C ; break;
021C 05C0 xjmp L41
021E L47:
021E .dbline 168
021E ; case PARAM_VADJUST:
021E ; tmp = 50; //参考电压
021E 82E3 ldi R24,50
0220 8887 std y+8,R24
0222 .dbline 169
0222 ; break;
0222 02C0 xjmp L41
0224 L40:
0224 .dbline 180
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 181
0228 ; break;
0228 L41:
0228 .dbline 183
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 184
0230 ; msg_buffer[0] = CMD_GET_PARAMETER;
0230 80930D00 sts _msg_buffer,R24
0234 .dbline 185
0234 ; msg_buffer[1] = STATUS_CMD_OK;
0234 2224 clr R2
0236 20920E00 sts _msg_buffer+1,R2
023A .dbline 186
023A ; msg_buffer[2] = tmp;
023A 0884 ldd R0,y+8
023C 00920F00 sts _msg_buffer+2,R0
0240 .dbline 187
0240 ; }
0240 3DC1 xjmp L39
0242 L38:
0242 .dbline 196
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 197
0248 ; {
0248 .dbline 200
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 201
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 202
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -