📄 main.lis
字号:
0164 50900300 lds R5,_address+2+1
0168 20900000 lds R2,_address
016C 30900100 lds R3,_address+1
0170 FE01 movw R30,R28
0172 2282 std z+2,R2
0174 3382 std z+3,R3
0176 4482 std z+4,R4
0178 5582 std z+5,R5
017A .dbline 89
017A ;
017A ; cmd = msg_buffer[0];
017A E0900000 lds R14,_msg_buffer
017E .dbline 91
017E ; //版本信息
017E ; if (cmd==CMD_SIGN_ON) {
017E 8E2D mov R24,R14
0180 8130 cpi R24,1
0182 B1F4 brne L29
0184 .dbline 91
0184 .dbline 92
0184 ; num_bytes = 11;
0184 8BE0 ldi R24,11
0186 90E0 ldi R25,0
0188 9F83 std y+7,R25
018A 8E83 std y+6,R24
018C .dbline 93
018C ; msg_buffer[0] = CMD_SIGN_ON;
018C 81E0 ldi R24,1
018E 80930000 sts _msg_buffer,R24
0192 .dbline 94
0192 ; msg_buffer[1] = STATUS_CMD_OK;
0192 2224 clr R2
0194 20920100 sts _msg_buffer+1,R2
0198 .dbline 95
0198 ; msg_buffer[2] = 8;
0198 88E0 ldi R24,8
019A 80930200 sts _msg_buffer+2,R24
019E .dbline 96
019E ; memcpy(msg_buffer+3,"STK500_2",8);
019E 9983 std y+1,R25
01A0 8883 std y+0,R24
01A2 20E0 ldi R18,<L34
01A4 30E0 ldi R19,>L34
01A6 00E0 ldi R16,<_msg_buffer+3
01A8 10E0 ldi R17,>_msg_buffer+3
01AA 0E940000 xcall _memcpy
01AE .dbline 97
01AE ; }
01AE 13C2 xjmp L30
01B0 L29:
01B0 .dbline 99
01B0 ; //参数设置
01B0 ; else if (cmd==CMD_SET_PARAMETER) {
01B0 8E2D mov R24,R14
01B2 8230 cpi R24,2
01B4 51F4 brne L35
01B6 .dbline 99
01B6 .dbline 100
01B6 ; num_bytes = 2;
01B6 82E0 ldi R24,2
01B8 90E0 ldi R25,0
01BA 9F83 std y+7,R25
01BC 8E83 std y+6,R24
01BE .dbline 101
01BE ; msg_buffer[0] = CMD_SET_PARAMETER;
01BE 80930000 sts _msg_buffer,R24
01C2 .dbline 102
01C2 ; msg_buffer[1] = STATUS_CMD_OK;
01C2 2224 clr R2
01C4 20920100 sts _msg_buffer+1,R2
01C8 .dbline 103
01C8 ; }
01C8 06C2 xjmp L36
01CA L35:
01CA .dbline 105
01CA ; //参数读取
01CA ; else if (cmd==CMD_GET_PARAMETER) {
01CA 8E2D mov R24,R14
01CC 8330 cpi R24,3
01CE B1F5 brne L38
01D0 .dbline 105
01D0 .dbline 106
01D0 ; switch(msg_buffer[1]) {
01D0 A0900100 lds R10,_msg_buffer+1
01D4 BB24 clr R11
01D6 C501 movw R24,R10
01D8 8239 cpi R24,146
01DA E0E0 ldi R30,0
01DC 9E07 cpc R25,R30
01DE 91F0 breq L44
01E0 8439 cpi R24,148
01E2 E0E0 ldi R30,0
01E4 9E07 cpc R25,R30
01E6 A9F0 breq L46
01E8 8539 cpi R24,149
01EA E0E0 ldi R30,0
01EC 9E07 cpc R25,R30
01EE A1F0 breq L47
01F0 8239 cpi R24,146
01F2 E0E0 ldi R30,0
01F4 9E07 cpc R25,R30
01F6 9CF0 brlt L40
01F8 L48:
01F8 C501 movw R24,R10
01FA 8E39 cpi R24,158
01FC E0E0 ldi R30,0
01FE 9E07 cpc R25,R30
0200 21F0 breq L45
0202 0DC0 xjmp L40
0204 X2:
0204 .dbline 106
0204 L44:
0204 .dbline 120
0204 ; /*case PARAM_BUILD_NUMBER_LOW:
0204 ; tmp = CONFIG_PARAM_BUILD_NUMBER_LOW;
0204 ; break;
0204 ; case PARAM_BUILD_NUMBER_HIGH:
0204 ; tmp = CONFIG_PARAM_BUILD_NUMBER_HIGH;
0204 ; break;
0204 ; case PARAM_HW_VER:
0204 ; tmp = CONFIG_PARAM_HW_VER;
0204 ; break;
0204 ; case PARAM_SW_MAJOR:
0204 ; tmp = CONFIG_PARAM_SW_MAJOR;
0204 ; break;*/
0204 ; case PARAM_SW_MINOR:
0204 ; tmp = CONFIG_PARAM_SW_MINOR;
0204 8AE0 ldi R24,10
0206 8887 std y+8,R24
0208 .dbline 121
0208 ; break;
0208 0CC0 xjmp L41
020A L45:
020A .dbline 123
020A ; case PARAM_RESET_POLARITY:
020A ; tmp = resetPolarity;
020A 20900000 lds R2,_resetPolarity
020E 2886 std y+8,R2
0210 .dbline 124
0210 ; break;
0210 08C0 xjmp L41
0212 L46:
0212 .dbline 126
0212 ; case PARAM_VTARGET: //目标电压
0212 ; tmp = 50;
0212 82E3 ldi R24,50
0214 8887 std y+8,R24
0216 .dbline 127
0216 ; break;
0216 05C0 xjmp L41
0218 L47:
0218 .dbline 129
0218 ; case PARAM_VADJUST:
0218 ; tmp = 50; //参考电压
0218 82E3 ldi R24,50
021A 8887 std y+8,R24
021C .dbline 130
021C ; break;
021C 02C0 xjmp L41
021E L40:
021E .dbline 141
021E ; /*case PARAM_TOPCARD_DETECT:
021E ; tmp = TOP_CARD_STK520;
021E ; break;
021E ; case PARAM_CONTROLLER_INIT:
021E ; tmp = paramControllerInit;
021E ; break;
021E ; case PARAM_SCK_DURATION:
021E ; tmp = clockSpeed;
021E ; break;*/
021E ; default:
021E ; tmp = CONFIG_PARAM_SW_MAJOR;
021E 82E0 ldi R24,2
0220 8887 std y+8,R24
0222 .dbline 142
0222 ; break;
0222 L41:
0222 .dbline 144
0222 ; }
0222 ; num_bytes = 3;
0222 83E0 ldi R24,3
0224 90E0 ldi R25,0
0226 9F83 std y+7,R25
0228 8E83 std y+6,R24
022A .dbline 145
022A ; msg_buffer[0] = CMD_GET_PARAMETER;
022A 80930000 sts _msg_buffer,R24
022E .dbline 146
022E ; msg_buffer[1] = STATUS_CMD_OK;
022E 2224 clr R2
0230 20920100 sts _msg_buffer+1,R2
0234 .dbline 147
0234 ; msg_buffer[2] = tmp;
0234 0884 ldd R0,y+8
0236 00920200 sts _msg_buffer+2,R0
023A .dbline 148
023A ; }
023A CDC1 xjmp L39
023C L38:
023C .dbline 156
023C ; //读取时钟修正值
023C ; /*else if (cmd==CMD_OSCCAL) {
023C ; num_bytes = 2;
023C ; msg_buffer[0] = CMD_OSCCAL;
023C ; msg_buffer[1] = STATUS_CMD_OK;
023C ; }*/
023C ; //设置地址
023C ; else if (cmd==CMD_LOAD_ADDRESS) {
023C 8E2D mov R24,R14
023E 8630 cpi R24,6
0240 09F0 breq X5
0242 54C0 xjmp L51
0244 X5:
0244 .dbline 156
0244 .dbline 158
0244 ; //address = ((unsigned long)msg_buffer[1])<<24;
0244 ; address = ((unsigned long)msg_buffer[2])<<16;
0244 20900200 lds R2,_msg_buffer+2
0248 3324 clr R3
024A 4424 clr R4
024C 5524 clr R5
024E 2101 movw R4,R2
0250 2224 clr R2
0252 3324 clr R3
0254 30920100 sts _address+1,R3
0258 20920000 sts _address,R2
025C 50920300 sts _address+2+1,R5
0260 40920200 sts _address+2,R4
0264 .dbline 159
0264 ; address |= ((unsigned long)msg_buffer[3])<<8;
0264 88E0 ldi R24,8
0266 90E0 ldi R25,0
0268 20900300 lds R2,_msg_buffer+3
026C 3324 clr R3
026E 4424 clr R4
0270 5524 clr R5
0272 8A93 st -y,R24
0274 8101 movw R16,R2
0276 9201 movw R18,R4
0278 0E940000 xcall lsl32
027C 40900200 lds R4,_address+2
0280 50900300 lds R5,_address+2+1
0284 20900000 lds R2,_address
0288 30900100 lds R3,_address+1
028C 202A or R2,R16
028E 312A or R3,R17
0290 422A or R4,R18
0292 532A or R5,R19
0294 30920100 sts _address+1,R3
0298 20920000 sts _address,R2
029C 50920300 sts _address+2+1,R5
02A0 40920200 sts _address+2,R4
02A4 .dbline 160
02A4 ; address |= ((unsigned long)msg_buffer[4]);
02A4 20900400 lds R2,_msg_buffer+4
02A8 3324 clr R3
02AA 4424 clr R4
02AC 5524 clr R5
02AE 80900200 lds R8,_address+2
02B2 90900300 lds R9,_address+2+1
02B6 60900000 lds R6,_address
02BA 70900100 lds R7,_address+1
02BE 6228 or R6,R2
02C0 7328 or R7,R3
02C2 8428 or R8,R4
02C4 9528 or R9,R5
02C6 70920100 sts _address+1,R7
02CA 60920000 sts _address,R6
02CE 90920300 sts _address+2+1,R9
02D2 80920200 sts _address+2,R8
02D6 .dbline 161
02D6 ; num_bytes = 2;
02D6 82E0 ldi R24,2
02D8 90E0 ldi R25,0
02DA 9F83 std y+7,R25
02DC 8E83 std y+6,R24
02DE .dbline 162
02DE ; msg_buffer[0] = CMD_LOAD_ADDRESS;
02DE 86E0 ldi R24,6
02E0 80930000 sts _msg_buffer,R24
02E4 .dbline 163
02E4 ; msg_buffer[1] = STATUS_CMD_OK;
02E4 2224 clr R2
02E6 20920100 sts _msg_buffer+1,R2
02EA .dbline 164
02EA ; }
02EA 75C1 xjmp L52
02EC L51:
02EC .dbline 166
02EC ; //芯片擦除
02EC ; else if (cmd==CMD_CHIP_ERASE_ISP) {
02EC 8E2D mov R24,R14
02EE 8231 cpi R24,18
02F0 59F4 brne L57
02F2 .dbline 166
02F2 .dbline 167
02F2 ; num_bytes = 2;
02F2 82E0 ldi R24,2
02F4 90E0 ldi R25,0
02F6 9F83 std y+7,R25
02F8 8E83 std y+6,R24
02FA .dbline 168
02FA ; msg_buffer[0] = CMD_CHIP_ERASE_ISP;
02FA 82E1 ldi R24,18
02FC 80930000 sts _msg_buffer,R24
0300 .dbline 169
0300 ; msg_buffer[1] = STATUS_CMD_OK;
0300 2224 clr R2
0302 20920100 sts _msg_buffer+1,R2
0306 .dbline 170
0306 ; }
0306 67C1 xjmp L58
0308 L57:
0308 .dbline 172
0308 ; //进入编程模式
0308 ; else if (cmd == CMD_ENTER_PROGMODE_ISP) {
0308 8E2D mov R24,R14
030A 8031 cpi R24,16
030C 61F4 brne L60
030E .dbline 172
030E .dbline 173
030E ; num_bytes = 2;
030E 82E0 ldi R24,2
0310 90E0 ldi R25,0
0312 9F83 std y+7,R25
0314 8E83 std y+6,R24
0316 .dbline 174
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -