📄 m8demo.lis
字号:
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 + -