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

📄 main.lis

📁 ATEMEL AVR128 BOOT程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -