⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 使用STK500_2 协议的bootloader
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -