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

📄 m8demo.lis

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 031A E0E0              ldi R30,0
 031C 5E07              cpc R21,R30
 031E 51F1              breq L49
 0320 4430              cpi R20,4
 0322 E0E0              ldi R30,0
 0324 5E07              cpc R21,R30
 0326 09F4              brne X5
 0328 37C0              rjmp L50
 032A           X5:
 032A 47C0              rjmp L45
 032C           X4:
 032C                   .dbline 261
 032C           ; {
 032C           L47:
 032C                   .dbline 263
 032C           ; 
 032C           ; case 1:  displaydata=DataTab[Data1];
 032C 80E0              ldi R24,<_DataTab
 032E 90E0              ldi R25,>_DataTab
 0330 E02F              mov R30,R16
 0332 FF27              clr R31
 0334 E80F              add R30,R24
 0336 F91F              adc R31,R25
 0338 4491              lpm R20,Z
 033A                   .dbline 264
 033A           ;              displaydata_2=DataTab[Data1]&0xc0;
 033A E02F              mov R30,R16
 033C FF27              clr R31
 033E E80F              add R30,R24
 0340 F91F              adc R31,R25
 0342 6491              lpm R22,Z
 0344 607C              andi R22,192
 0346                   .dbline 265
 0346           ;                                     PORTD=0x3B|displaydata_2;
 0346 862F              mov R24,R22
 0348 8B63              ori R24,59
 034A 82BB              out 0x12,R24
 034C                   .dbline 266
 034C           ;                                       PORTB=displaydata;
 034C 48BB              out 0x18,R20
 034E                   .dbline 267
 034E           ;                                    break;
 034E 35C0              rjmp L45
 0350           L48:
 0350                   .dbline 268
 0350           ;   case 2:displaydata=DataTab[Data2];
 0350 80E0              ldi R24,<_DataTab
 0352 90E0              ldi R25,>_DataTab
 0354 E22F              mov R30,R18
 0356 FF27              clr R31
 0358 E80F              add R30,R24
 035A F91F              adc R31,R25
 035C 4491              lpm R20,Z
 035E                   .dbline 269
 035E           ;               displaydata_2=DataTab[Data2]&0xc0;
 035E E22F              mov R30,R18
 0360 FF27              clr R31
 0362 E80F              add R30,R24
 0364 F91F              adc R31,R25
 0366 6491              lpm R22,Z
 0368 607C              andi R22,192
 036A                   .dbline 271
 036A           ; 
 036A           ;                                       PORTD=0x37|displaydata_2;
 036A 862F              mov R24,R22
 036C 8763              ori R24,55
 036E 82BB              out 0x12,R24
 0370                   .dbline 272
 0370           ;                               PORTB=displaydata;
 0370 48BB              out 0x18,R20
 0372                   .dbline 273
 0372           ;                                    break;
 0372 23C0              rjmp L45
 0374           L49:
 0374                   .dbline 274
 0374           ; case 3:       displaydata=DataTab[Data3];
 0374 80E0              ldi R24,<_DataTab
 0376 90E0              ldi R25,>_DataTab
 0378 EC81              ldd R30,y+4
 037A FF27              clr R31
 037C E80F              add R30,R24
 037E F91F              adc R31,R25
 0380 4491              lpm R20,Z
 0382                   .dbline 275
 0382           ;               displaydata_2=DataTab[Data3]&0xc0;
 0382 EC81              ldd R30,y+4
 0384 FF27              clr R31
 0386 E80F              add R30,R24
 0388 F91F              adc R31,R25
 038A 6491              lpm R22,Z
 038C 607C              andi R22,192
 038E                   .dbline 276
 038E           ;                                       PORTD=0x2F|displaydata_2;
 038E 862F              mov R24,R22
 0390 8F62              ori R24,47
 0392 82BB              out 0x12,R24
 0394                   .dbline 277
 0394           ;                                       PORTB=displaydata;
 0394 48BB              out 0x18,R20
 0396                   .dbline 278
 0396           ;                                    break;
 0396 11C0              rjmp L45
 0398           L50:
 0398                   .dbline 279
 0398 80E0              ldi R24,<_DataTab
 039A 90E0              ldi R25,>_DataTab
 039C EE81              ldd R30,y+6
 039E FF27              clr R31
 03A0 E80F              add R30,R24
 03A2 F91F              adc R31,R25
 03A4 4491              lpm R20,Z
 03A6                   .dbline 280
 03A6 EE81              ldd R30,y+6
 03A8 FF27              clr R31
 03AA E80F              add R30,R24
 03AC F91F              adc R31,R25
 03AE 6491              lpm R22,Z
 03B0 607C              andi R22,192
 03B2                   .dbline 281
 03B2 862F              mov R24,R22
 03B4 8F61              ori R24,31
 03B6 82BB              out 0x12,R24
 03B8                   .dbline 282
 03B8 48BB              out 0x18,R20
 03BA                   .dbline 283
 03BA                   .dbline 285
 03BA           L45:
 03BA                   .dbline -2
 03BA           L43:
 03BA 00D0              rcall pop_gset2
 03BC                   .dbline 0 ; func end
 03BC 0895              ret
 03BE                   .dbsym r displaydata_2 22 c
 03BE                   .dbsym r displaydata 20 c
 03BE                   .dbsym l Data4 6 c
 03BE                   .dbsym l Data3 4 c
 03BE                   .dbsym r Data2 18 c
 03BE                   .dbsym r Data1 16 c
 03BE                   .dbend
 03BE                   .dbfunc e DisplayTimer _DisplayTimer fV
 03BE           ;     temptimer4 -> R12
 03BE           ;     temptimer2 -> R22
 03BE           ;     temptimer3 -> R10
 03BE           ;     temptimer1 -> R20
 03BE           ;          timer -> R22,R23
                        .even
 03BE           _DisplayTimer::
 03BE 00D0              rcall push_gset4
 03C0 B801              movw R22,R16
 03C2 2397              sbiw R28,3
 03C4                   .dbline -1
 03C4                   .dbline 291
 03C4           ; case 4:       displaydata=DataTab[Data4];
 03C4           ;               displaydata_2=DataTab[Data4]&0xc0;
 03C4           ;                                       PORTD=0x1F|displaydata_2;
 03C4           ;                                        PORTB=displaydata;
 03C4           ;                                    break;
 03C4           ;                           default:
 03C4           ;                                    break;
 03C4           ;                                    
 03C4           ;                       }
 03C4           ; 
 03C4           ; }
 03C4           ; void DisplayTimer(unsigned int timer)
 03C4           ; { 
 03C4                   .dbline 293
 03C4           ; unsigned char  temptimer1,temptimer2,temptimer3,temptimer4;
 03C4           ; temptimer1=timer%60;
 03C4 2CE3              ldi R18,60
 03C6 30E0              ldi R19,0
 03C8 8B01              movw R16,R22
 03CA 00D0              rcall mod16u
 03CC 402F              mov R20,R16
 03CE                   .dbline 294
 03CE           ; temptimer3=timer/60;
 03CE 2CE3              ldi R18,60
 03D0 30E0              ldi R19,0
 03D2 8B01              movw R16,R22
 03D4 00D0              rcall div16u
 03D6 A02E              mov R10,R16
 03D8                   .dbline 295
 03D8           ; temptimer2=temptimer1/10;
 03D8 1AE0              ldi R17,10
 03DA 042F              mov R16,R20
 03DC 00D0              rcall div8u
 03DE 602F              mov R22,R16
 03E0                   .dbline 296
 03E0           ; temptimer1=temptimer1%10;
 03E0 1AE0              ldi R17,10
 03E2 042F              mov R16,R20
 03E4 00D0              rcall mod8u
 03E6 402F              mov R20,R16
 03E8                   .dbline 297
 03E8           ; temptimer4=temptimer3/10;
 03E8 1AE0              ldi R17,10
 03EA 0A2D              mov R16,R10
 03EC 00D0              rcall div8u
 03EE C02E              mov R12,R16
 03F0                   .dbline 298
 03F0           ; temptimer3=temptimer3%10;
 03F0 1AE0              ldi R17,10
 03F2 0A2D              mov R16,R10
 03F4 00D0              rcall mod8u
 03F6 A02E              mov R10,R16
 03F8                   .dbline 299
 03F8           ; Display_Data_LED(temptimer1,temptimer2,temptimer3,temptimer4);
 03F8 CA82              std y+2,R12
 03FA A882              std y+0,R10
 03FC 262F              mov R18,R22
 03FE 042F              mov R16,R20
 0400 7FDF              rcall _Display_Data_LED
 0402                   .dbline -2
 0402           L51:
 0402 2396              adiw R28,3
 0404 00D0              rcall pop_gset4
 0406                   .dbline 0 ; func end
 0406 0895              ret
 0408                   .dbsym r temptimer4 12 c
 0408                   .dbsym r temptimer2 22 c
 0408                   .dbsym r temptimer3 10 c
 0408                   .dbsym r temptimer1 20 c
 0408                   .dbsym r timer 22 i
 0408                   .dbend
 0408                   .dbfunc e Key_Decode _Key_Decode fc
                        .even
 0408           _Key_Decode::
 0408                   .dbline -1
 0408                   .dbline 304
 0408           ; 
 0408           ; }
 0408           ; 
 0408           ; unsigned char  Key_Decode(void)
 0408           ; {   Delay(10);
 0408                   .dbline 304
 0408 0AE0              ldi R16,10
 040A 10E0              ldi R17,0
 040C F9DD              rcall _Delay
 040E                   .dbline 306
 040E           ; 
 040E           ;       DDRC&=0x79;
 040E 84B3              in R24,0x14
 0410 8977              andi R24,121
 0412 84BB              out 0x14,R24
 0414                   .dbline 307
 0414           ;        PORTC|=0x30;
 0414 85B3              in R24,0x15
 0416 8063              ori R24,48
 0418 85BB              out 0x15,R24
 041A                   .dbline 308
 041A           ;       PORTC&=0x59;
 041A 85B3              in R24,0x15
 041C 8975              andi R24,89
 041E 85BB              out 0x15,R24
 0420                   .dbline 309
 0420           ;       Delay(10);
 0420 0AE0              ldi R16,10
 0422 10E0              ldi R17,0
 0424 EDDD              rcall _Delay
 0426                   .dbline 310
 0426           ;       if (!(PINC & 0x02)) 
 0426 9999              sbic 0x13,1
 0428 02C0              rjmp L53
 042A                   .dbline 311
 042A           ;       { return key_inc;}
 042A                   .dbline 311
 042A 0EEF              ldi R16,254
 042C 16C0              rjmp L52
 042E           L53:
 042E                   .dbline 312
 042E           ;       if (!(PINC & 0x04)) 
 042E 9A99              sbic 0x13,2
 0430 02C0              rjmp L55
 0432                   .dbline 313
 0432           ;     {return key_enter;} 
 0432                   .dbline 313
 0432 0BEF              ldi R16,251
 0434 12C0              rjmp L52
 0436           L55:
 0436                   .dbline 314
 0436           ;       PORTC|=0x30;
 0436 85B3              in R24,0x15
 0438 8063              ori R24,48
 043A 85BB              out 0x15,R24
 043C                   .dbline 315
 043C           ;       PORTC&=0x69;
 043C 85B3              in R24,0x15
 043E 8976              andi R24,105
 0440 85BB              out 0x15,R24
 0442                   .dbline 316
 0442           ;       Delay(10);
 0442 0AE0              ldi R16,10
 0444 10E0              ldi R17,0
 0446 DCDD              rcall _Delay
 0448                   .dbline 317
 0448           ;        if (!(PINC & 0x02)) 
 0448 9999              sbic 0x13,1
 044A 02C0              rjmp L57
 044C                   .dbline 318
 044C           ;        {return key_dec;}
 044C                   .dbline 318
 044C 0DEF              ldi R16,253
 044E 05C0              rjmp L52
 0450           L57:
 0450                   .dbline 319
 0450           ;         if (!(PINC & 0x04)) 
 0450 9A99              sbic 0x13,2
 0452 02C0              rjmp L59
 0454                   .dbline 320
 0454           ;        {return key_mode;}  
 0454                   .dbline 320
 0454 0CEF              ldi R16,252
 0456 01C0              rjmp L52
 0458           L59:
 0458                   .dbline 321
 0458           ;       return key_no;
 0458 0FEF              ldi R16,255
 045A                   .dbline -2
 045A           L52:
 045A                   .dbline 0 ; func end
 045A 0895              ret
 045C                   .dbend
 045C                   .dbfunc e Key_Task _Key_Task fV
                        .even
 045C           _Key_Task::
 045C 00D0              rcall push_gset1
 045E                   .dbline -1
 045E                   .dbline 325
 045E           ;        
 045E           ; }
 045E           ; void Key_Task(void)
 045E           ; {
 045E                   .dbline 327
 045E           ; 
 045E           ; switch(key_state)
 045E 40910800          lds R20,_key_state
 0462 5527              clr R21
 0464 4030              cpi R20,0
 0466 4507              cpc R20,R21
 0468 F1F0              breq L65

⌨️ 快捷键说明

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