📄 main.lis
字号:
05A6 ; if(led_time<80 && flas4)
05A6 80910500 lds R24,_led_time
05AA 8035 cpi R24,80
05AC 48F4 brsh L130
05AE 20900000 lds R2,_flas4
05B2 2220 tst R2
05B4 29F0 breq L130
05B6 .dbline 368
05B6 ; {
05B6 .dbline 369
05B6 ; CLR_LED1;
05B6 5C98 cbi 0xb,4
05B8 .dbline 370
05B8 ; CLR_LED2;
05B8 5B98 cbi 0xb,3
05BA .dbline 371
05BA ; CLR_LED3;
05BA 5998 cbi 0xb,1
05BC .dbline 372
05BC ; CLR_LED4;
05BC 5898 cbi 0xb,0
05BE .dbline 373
05BE ; }
05BE 04C0 rjmp L131
05C0 L130:
05C0 .dbline 375
05C0 ; else
05C0 ; {
05C0 .dbline 376
05C0 ; CLR_LED1;
05C0 5C98 cbi 0xb,4
05C2 .dbline 377
05C2 ; CLR_LED2;
05C2 5B98 cbi 0xb,3
05C4 .dbline 378
05C4 ; CLR_LED3;
05C4 5998 cbi 0xb,1
05C6 .dbline 379
05C6 ; SET_LED4;
05C6 589A sbi 0xb,0
05C8 .dbline 380
05C8 ; }
05C8 L131:
05C8 .dbline 382
05C8 ;
05C8 ; }
05C8 L124:
05C8 L117:
05C8 L110:
05C8 L104:
05C8 .dbline 384
05C8 ;
05C8 ; temp = ((temp*125)/256)*5;
05C8 0DE7 ldi R16,125
05CA 10E0 ldi R17,0
05CC 9A01 movw R18,R20
05CE 00D0 rcall empy16s
05D0 9801 movw R18,R16
05D2 232F mov R18,R19
05D4 3327 clr R19
05D6 05E0 ldi R16,5
05D8 10E0 ldi R17,0
05DA 00D0 rcall empy16s
05DC A801 movw R20,R16
05DE .dbline 386
05DE ;
05DE ; }
05DE 2AC0 rjmp L102
05E0 L101:
05E0 .dbline 387
05E0 ; else if(mode==1)
05E0 80911000 lds R24,_mode
05E4 8130 cpi R24,1
05E6 41F4 brne L132
05E8 .dbline 388
05E8 ; {
05E8 .dbline 389
05E8 ; SET_LED1;
05E8 5C9A sbi 0xb,4
05EA .dbline 390
05EA ; SET_LED2;
05EA 5B9A sbi 0xb,3
05EC .dbline 391
05EC ; CLR_LED3;
05EC 5998 cbi 0xb,1
05EE .dbline 392
05EE ; CLR_LED4;
05EE 5898 cbi 0xb,0
05F0 .dbline 393
05F0 ; temp = out_time;
05F0 40910F00 lds R20,_out_time
05F4 5527 clr R21
05F6 .dbline 394
05F6 ; }
05F6 1EC0 rjmp L133
05F8 L132:
05F8 .dbline 395
05F8 ; else if(mode==2)
05F8 80911000 lds R24,_mode
05FC 8230 cpi R24,2
05FE 41F4 brne L134
0600 .dbline 396
0600 ; {
0600 .dbline 397
0600 ; SET_LED1;
0600 5C9A sbi 0xb,4
0602 .dbline 398
0602 ; SET_LED2;
0602 5B9A sbi 0xb,3
0604 .dbline 399
0604 ; SET_LED3;
0604 599A sbi 0xb,1
0606 .dbline 400
0606 ; CLR_LED4;
0606 5898 cbi 0xb,0
0608 .dbline 401
0608 ; temp = out_time;
0608 40910F00 lds R20,_out_time
060C 5527 clr R21
060E .dbline 402
060E ; }
060E 12C0 rjmp L135
0610 L134:
0610 .dbline 403
0610 ; else if(mode==3)
0610 80911000 lds R24,_mode
0614 8330 cpi R24,3
0616 71F4 brne L136
0618 .dbline 404
0618 ; {
0618 .dbline 405
0618 ; SET_LED1;
0618 5C9A sbi 0xb,4
061A .dbline 406
061A ; SET_LED2;
061A 5B9A sbi 0xb,3
061C .dbline 407
061C ; SET_LED3;
061C 599A sbi 0xb,1
061E .dbline 408
061E ; SET_LED4;
061E 589A sbi 0xb,0
0620 .dbline 409
0620 ; temp = (CH.temp+5)/10;
0620 2AE0 ldi R18,10
0622 30E0 ldi R19,0
0624 00912200 lds R16,_CH
0628 10912300 lds R17,_CH+1
062C 0B5F subi R16,251 ; offset = 5
062E 1F4F sbci R17,255
0630 00D0 rcall div16u
0632 A801 movw R20,R16
0634 .dbline 410
0634 ; }
0634 L136:
0634 L135:
0634 L133:
0634 L102:
0634 .dbline 412
0634 ;
0634 ; h = temp/100;
0634 24E6 ldi R18,100
0636 30E0 ldi R19,0
0638 8A01 movw R16,R20
063A 00D0 rcall div16u
063C A02E mov R10,R16
063E .dbline 413
063E ; m = temp%100/10;
063E 24E6 ldi R18,100
0640 30E0 ldi R19,0
0642 8A01 movw R16,R20
0644 00D0 rcall mod16u
0646 2AE0 ldi R18,10
0648 30E0 ldi R19,0
064A 00D0 rcall div16u
064C 602F mov R22,R16
064E .dbline 414
064E ; l = temp%100%10;
064E 24E6 ldi R18,100
0650 30E0 ldi R19,0
0652 8A01 movw R16,R20
0654 00D0 rcall mod16u
0656 2AE0 ldi R18,10
0658 30E0 ldi R19,0
065A 00D0 rcall mod16u
065C 402F mov R20,R16
065E .dbline 416
065E ;
065E ; dip_bit ++;
065E 80911300 lds R24,_dip_bit
0662 8F5F subi R24,255 ; addi 1
0664 80931300 sts _dip_bit,R24
0668 .dbline 418
0668 ;
0668 ; if(dip_bit==2)
0668 8230 cpi R24,2
066A 79F4 brne L138
066C .dbline 419
066C ; {
066C .dbline 420
066C ; SET_COM1;
066C 5F9A sbi 0xb,7
066E .dbline 421
066E ; CLR_COM2;
066E 5E98 cbi 0xb,6
0670 .dbline 422
0670 ; CLR_COM3;
0670 5D98 cbi 0xb,5
0672 .dbline 423
0672 ; PORTB = Char_tab[h] | dp;
0672 80E0 ldi R24,<_Char_tab
0674 90E0 ldi R25,>_Char_tab
0676 EA2D mov R30,R10
0678 FF27 clr R31
067A E80F add R30,R24
067C F91F adc R31,R25
067E E491 lpm R30,Z
0680 20900100 lds R2,_dp
0684 E229 or R30,R2
0686 E5B9 out 0x5,R30
0688 .dbline 424
0688 ; }
0688 22C0 rjmp L139
068A L138:
068A .dbline 425
068A ; else if(dip_bit==4)
068A 80911300 lds R24,_dip_bit
068E 8430 cpi R24,4
0690 61F4 brne L140
0692 .dbline 426
0692 ; {
0692 .dbline 427
0692 ; CLR_COM1;
0692 5F98 cbi 0xb,7
0694 .dbline 428
0694 ; SET_COM2;
0694 5E9A sbi 0xb,6
0696 .dbline 429
0696 ; CLR_COM3;
0696 5D98 cbi 0xb,5
0698 .dbline 430
0698 ; PORTB = Char_tab[m];
0698 80E0 ldi R24,<_Char_tab
069A 90E0 ldi R25,>_Char_tab
069C E62F mov R30,R22
069E FF27 clr R31
06A0 E80F add R30,R24
06A2 F91F adc R31,R25
06A4 E491 lpm R30,Z
06A6 E5B9 out 0x5,R30
06A8 .dbline 431
06A8 ; }
06A8 12C0 rjmp L141
06AA L140:
06AA .dbline 432
06AA ; else if(dip_bit==6)
06AA 80911300 lds R24,_dip_bit
06AE 8630 cpi R24,6
06B0 71F4 brne L142
06B2 .dbline 433
06B2 ; {
06B2 .dbline 434
06B2 ; CLR_COM1;
06B2 5F98 cbi 0xb,7
06B4 .dbline 435
06B4 ; CLR_COM2;
06B4 5E98 cbi 0xb,6
06B6 .dbline 436
06B6 ; SET_COM3;
06B6 5D9A sbi 0xb,5
06B8 .dbline 437
06B8 ; PORTB = Char_tab[l];
06B8 80E0 ldi R24,<_Char_tab
06BA 90E0 ldi R25,>_Char_tab
06BC E42F mov R30,R20
06BE FF27 clr R31
06C0 E80F add R30,R24
06C2 F91F adc R31,R25
06C4 E491 lpm R30,Z
06C6 E5B9 out 0x5,R30
06C8 .dbline 438
06C8 ; dip_bit = 0;
06C8 2224 clr R2
06CA 20921300 sts _dip_bit,R2
06CE .dbline 439
06CE ; }
06CE L142:
06CE L141:
06CE L139:
06CE .dbline -2
06CE L100:
06CE 00D0 rcall pop_gset3
06D0 .dbline 0 ; func end
06D0 0895 ret
06D2 .dbsym l temp1 1 i
06D2 .dbsym r l 20 c
06D2 .dbsym r m 22 c
06D2 .dbsym r h 10 c
06D2 .dbsym r temp 20 i
06D2 .dbend
06D2 .dbfunc e key_scan _key_scan fV
06D2 ; temp -> R16
.even
06D2 _key_scan::
06D2 .dbline -1
06D2 .dbline 448
06D2 ; }
06D2 ;
06D2 ;
06D2 ; /*---------------------------------------------------------------
06D2 ; 按键扫描
06D2 ; ----------------------------------------------------------------*/
06D2 ;
06D2 ; void key_scan(void)
06D2 ; {
06D2 .dbline 451
06D2 ; uchar temp;
06D2 ;
06D2 ; PORTC |= 0x0C;
06D2 88B1 in R24,0x8
06D4 8C60 ori R24,12
06D6 88B9 out 0x8,R24
06D8 .dbline 453
06D8 ;
06D8 ; asm("nop"); asm("nop");
06D8 0000 nop
06DA .dbline 453
06DA 0000 nop
06DC .dbline 455
06DC ;
06DC ; temp = PINC & 0x0C;
06DC 06B1 in R16,0x6
06DE 0C70 andi R16,12
06E0 .dbline 457
06E0 ;
06E0 ; if(temp==0x00) // 双键
06E0 09F0 breq X7
06E2 49C0 rjmp L145
06E4 X7:
06E4 .dbline 458
06E4 ; {
06E4 .dbline 459
06E4 ; key ++;
06E4 80910D00 lds R24,_key
06E8 90910E00 lds R25,_key+1
06EC 0196 adiw R24,1
06EE 90930E00 sts _key+1,R25
06F2 80930D00 st
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -