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

📄 main.lis

📁 Atmeag16 bootloader 测试程序 测试通过
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01B4           ; void SendChar(unsigned char c)
 01B4           ;   {    
 01B4           L52:
 01B4                   .dbline 185
 01B4           L53:
 01B4                   .dbline 185
 01B4           ;     while (!(UCSRA&(1<<UDRE)));
 01B4 5D9B              sbis 0xb,5
 01B6 FECF              rjmp L52
 01B8                   .dbline 186
 01B8           ;     UDR=c;
 01B8 0CB9              out 0xc,R16
 01BA                   .dbline -2
 01BA                   .dbline 187
 01BA           ;   }
 01BA           L51:
 01BA                   .dbline 0 ; func end
 01BA 0895              ret
 01BC                   .dbsym r c 16 c
 01BC                   .dbend
 01BC                   .dbfunc e delay _delay fV
 01BC           ;              i -> R16,R17
                        .even
 01BC           _delay::
 01BC                   .dbline -1
 01BC                   .dbline 189
 01BC           ; void delay(void)  
 01BC           ;   {
 01BC                   .dbline 191
 01BC 0027              clr R16
 01BE 1127              clr R17
 01C0 02C0              rjmp L59
 01C2           L56:
 01C2                   .dbline 191
 01C2           L57:
 01C2                   .dbline 191
 01C2 0F5F              subi R16,255  ; offset = 1
 01C4 1F4F              sbci R17,255
 01C6           L59:
 01C6                   .dbline 191
 01C6           ;     unsigned int i;
 01C6           ;     for (i=0;i<65530;i++);
 01C6 0A3F              cpi R16,250
 01C8 EFEF              ldi R30,255
 01CA 1E07              cpc R17,R30
 01CC D0F3              brlo L56
 01CE                   .dbline -2
 01CE                   .dbline 192
 01CE           ;   }
 01CE           L55:
 01CE                   .dbline 0 ; func end
 01CE 0895              ret
 01D0                   .dbsym r i 16 i
 01D0                   .dbend
 01D0                   .dbfunc e ExecCode _ExecCode fV
                        .even
 01D0           _ExecCode::
 01D0                   .dbline -1
 01D0                   .dbline 196
 01D0           ; 
 01D0           ; /*****************************************************************************/
 01D0           ; void ExecCode(void)
 01D0           ;   {
 01D0                   .dbline 200
 01D0           ; #ifdef RAMPZ_FLAG 
 01D0           ;     RAMPZ = 0;
 01D0           ; #endif
 01D0           ;     INTVECREG=0x01;           //中断向量表移位允许
 01D0 81E0              ldi R24,1
 01D2 8BBF              out 0x3b,R24
 01D4                   .dbline 201
 01D4           ;     INTVECREG=0x00;           //中断向量指向应用程序区
 01D4 2224              clr R2
 01D6 2BBE              out 0x3b,R2
 01D8                   .dbline 202
 01D8           ;     asm("jmp 0x0000");              
 01D8 0C940000          jmp 0x0000
 01DC                   .dbline -2
 01DC                   .dbline 203
 01DC           ;   }
 01DC           L60:
 01DC                   .dbline 0 ; func end
 01DC 0895              ret
 01DE                   .dbend
 01DE                   .dbfunc e main _main fV
 01DE           ;       BootFlag -> R20
                        .even
 01DE           _main::
 01DE                   .dbline -1
 01DE                   .dbline 206
 01DE           ;               
 01DE           ; void main(void)
 01DE           ;   {
 01DE                   .dbline 210
 01DE           ;     unsigned char BootFlag;
 01DE           ;     
 01DE           ; #ifdef InteClk                //如果使用内部时钟,读取时钟校准值
 01DE           ;        OSCCAL=read_flash(OscAddress);
 01DE 0FEF              ldi R16,8191
 01E0 1FE1              ldi R17,31
 01E2 00D0              rcall _read_flash
 01E4 01BF              out 0x31,R16
 01E6                   .dbline 213
 01E6           ; #endif
 01E6           ;  
 01E6           ;     UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位数据+1位停止
 01E6 86E8              ldi R24,134
 01E8 80BD              out 0x20,R24
 01EA                   .dbline 214
 01EA           ;     UCSRB = (1<<RXEN)|(1<<TXEN);       //允许串口发送和接收
 01EA 88E1              ldi R24,24
 01EC 8AB9              out 0xa,R24
 01EE                   .dbline 215
 01EE           ;     UBRR = BAU;
 01EE 87E1              ldi R24,23
 01F0 89B9              out 0x9,R24
 01F2                   .dbline 218
 01F2           ; 
 01F2           ;  
 01F2           ;     SendChar('>');              //通知PC机,BOOT下载准备就绪
 01F2 0EE3              ldi R16,62
 01F4 DFDF              rcall _SendChar
 01F6                   .dbline 219
 01F6           ;     delay();                    //延时等待PC机响应
 01F6 E2DF              rcall _delay
 01F8                   .dbline 220
 01F8           ;       delay();
 01F8 E1DF              rcall _delay
 01FA                   .dbline 221
 01FA           ;       delay();
 01FA E0DF              rcall _delay
 01FC                   .dbline 222
 01FC           ;       delay();
 01FC DFDF              rcall _delay
 01FE                   .dbline 223
 01FE           ;       delay();
 01FE DEDF              rcall _delay
 0200                   .dbline 224
 0200           ;       delay();
 0200 DDDF              rcall _delay
 0202                   .dbline 225
 0202           ;       delay();
 0202 DCDF              rcall _delay
 0204                   .dbline 226
 0204           ;       delay();
 0204 DBDF              rcall _delay
 0206                   .dbline 228
 0206           ;       
 0206           ;     BootFlag=UDR;             
 0206 4CB1              in R20,0xc
 0208                   .dbline 229
 0208           ;     if (BootFlag == '<') 
 0208 4C33              cpi R20,60
 020A 31F5              brne L62
 020C                   .dbline 230
 020C           ;       {
 020C                   .dbline 231
 020C           ;          SendChar(ChipType);
 020C 01E3              ldi R16,49
 020E D2DF              rcall _SendChar
 0210           L64:
 0210                   .dbline 232
 0210           L65:
 0210                   .dbline 232
 0210           ;          while (RecChar()!='N');
 0210 CDDF              rcall _RecChar
 0212 0E34              cpi R16,78
 0214 E9F7              brne L64
 0216                   .dbline 233
 0216           ;          SendChar(BootSize);
 0216 04E6              ldi R16,100
 0218 CDDF              rcall _SendChar
 021A           L67:
 021A                   .dbline 234
 021A           L68:
 021A                   .dbline 234
 021A           ;          while (RecChar()!='N');       
 021A C8DF              rcall _RecChar
 021C 0E34              cpi R16,78
 021E E9F7              brne L67
 0220                   .dbline 235
 0220           ;          SendChar(BootVer);
 0220 06E6              ldi R16,102
 0222 C8DF              rcall _SendChar
 0224 18C0              rjmp L71
 0226           L70:
 0226                   .dbline 237
 0226           ;        while (1)
 0226           ;          {
 0226                   .dbline 238
 0226           ;            switch (RecChar())
 0226 C2DF              rcall _RecChar
 0228 402F              mov R20,R16
 022A 5527              clr R21
 022C 4534              cpi R20,69
 022E E0E0              ldi R30,0
 0230 5E07              cpc R21,R30
 0232 59F0              breq L77
 0234 4534              cpi R20,69
 0236 E0E0              ldi R30,0
 0238 5E07              cpc R21,R30
 023A 6CF0              brlt L74
 023C           L81:
 023C 4735              cpi R20,87
 023E E0E0              ldi R30,0
 0240 5E07              cpc R21,R30
 0242 09F0              breq L76
 0244 08C0              rjmp L74
 0246           X3:
 0246                   .dbline 239
 0246           ;              {
 0246           L76:
 0246                   .dbline 240
 0246           ;                case 'W': FlashLoad(); break;
 0246 DCDE              rcall _FlashLoad
 0248                   .dbline 240
 0248 06C0              rjmp L74
 024A           L77:
 024A                   .dbline 241
 024A           ;                case 'E': { 
 024A                   .dbline 242
 024A           ;                            SendChar('E');  //通知PC机,进入运用程序区
 024A 05E4              ldi R16,69
 024C B3DF              rcall _SendChar
 024E           L78:
 024E                   .dbline 243
 024E           L79:
 024E                   .dbline 243
 024E           ;                                        while (RecChar()!='N');
 024E AEDF              rcall _RecChar
 0250 0E34              cpi R16,78
 0252 E9F7              brne L78
 0254                   .dbline 244
 0254           ;                            ExecCode();  
 0254 BDDF              rcall _ExecCode
 0256                   .dbline 245
 0256           ;                          } break;
 0256                   .dbline 245
 0256                   .dbline 246
 0256           ;                default : break;
 0256           L74:
 0256                   .dbline 248
 0256           L71:
 0256                   .dbline 236
 0256 E7CF              rjmp L70
 0258           X4:
 0258                   .dbline 249
 0258           ;              }
 0258           ;          }
 0258           ;       }
 0258           L62:
 0258                   .dbline 250
 0258           ;     SendChar('E');  //通知PC机,进入运用程序区
 0258 05E4              ldi R16,69
 025A ACDF              rcall _SendChar
 025C                   .dbline 252
 025C           ;       //while (RecChar()!='N');
 025C           ;     delay();
 025C AFDF              rcall _delay
 025E                   .dbline 253
 025E           ;       delay();
 025E AEDF              rcall _delay
 0260                   .dbline 254
 0260           ;       delay();
 0260 ADDF              rcall _delay
 0262                   .dbline 255
 0262           ;       delay();
 0262 ACDF              rcall _delay
 0264                   .dbline 256
 0264           ;     ExecCode();
 0264                   .dbline -2
 0264                   .dbline 257
 0264           ;   }
 0264           L61:
 0264                   .dbline 0 ; func end
 0264 B5CF              rjmp _ExecCode
 0266                   .dbsym r BootFlag 20 c
 0266                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhuji\桌面\AVR_BO~1.2\main.c
 0000           _PageAddress::
 0000                   .blkb 2
 0002                   .dbsym e PageAddress _PageAddress i
 0002           _RealPageAddress::
 0002                   .blkb 2
 0004                   .dbsym e RealPageAddress _RealPageAddress i
 0004           _PageBuffer::
 0004                   .blkb 128
 0084                   .dbsym e PageBuffer _PageBuffer A[128:128]c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -