📄 at980.lst
字号:
04AC E031 LDI R19,1
04AD 940E1BD1 CALL 0x1BD1
04AF 01B8 MOVW R22,R16
(0670) if(g_ui_timing_cnt%300>10)
04B0 E22C LDI R18,0x2C
04B1 E031 LDI R19,1
04B2 940E1BD8 CALL 0x1BD8
04B4 E08A LDI R24,0xA
04B5 E090 LDI R25,0
04B6 1780 CP R24,R16
04B7 0791 CPC R25,R17
04B8 F410 BCC 0x04BB
(0671) value++;
04B9 5F6F SUBI R22,0xFF
04BA 4F7F SBCI R23,0xFF
(0672) if(value==0)
04BB 3060 CPI R22,0
04BC 0767 CPC R22,R23
04BD F459 BNE 0x04C9
(0673) {
(0674) g_vfd_grid_buffer[4] = VFD_alpha_O;
04BE E283 LDI R24,0x23
04BF E391 LDI R25,0x31
04C0 940E1CE1 CALL 0x1CE1
(0675) g_vfd_grid_buffer[3] = VFD_alpha_F;
04C2 EE81 LDI R24,0xE1
04C3 E190 LDI R25,0x10
04C4 940E1AD9 CALL 0x1AD9
04C6 940E1B13 CALL 0x1B13
(0676) g_vfd_grid_buffer[2] = VFD_alpha_F;
(0677) }
04C8 C085 RJMP 0x054E
(0678) else
(0679) {
(0680) display_digit(value);
04C9 018B MOVW R16,R22
04CA DD5D RCALL _display_digit
(0681) g_vfd_grid_buffer[0] = VFD_LED_SLEEP;
04CB E080 LDI R24,0
04CC E890 LDI R25,0x80
04CD 940E1C6A CALL 0x1C6A
(0682)
(0683) // radio_vfd = g_ui_timing_cnt%300;
(0684) // radio_vfd = radio_vfd/5;
(0685) // r2 = radio_vfd%10;
(0686) // r3 = radio_vfd/10;
(0687) // g_vfd_grid_buffer[3] |= num_xlate[r3];
(0688) // g_vfd_grid_buffer[2] |= num_xlate[r2];
(0689)
(0690) }
(0691) break;
04CF C07E RJMP 0x054E
(0692) case DISPLAY_WELCOME:
(0693) switch(work_mode)
04D0 91600148 LDS R22,0x148
04D2 2777 CLR R23
04D3 3061 CPI R22,1
04D4 E0E0 LDI R30,0
04D5 077E CPC R23,R30
04D6 F40C BGE 0x04D8
04D7 C076 RJMP 0x054E
04D8 E084 LDI R24,4
04D9 E090 LDI R25,0
04DA 1786 CP R24,R22
04DB 0797 CPC R25,R23
04DC F40C BGE 0x04DE
04DD C070 RJMP 0x054E
04DE EB80 LDI R24,0xB0
04DF E090 LDI R25,0
04E0 01FB MOVW R30,R22
04E1 9731 SBIW R30,1
04E2 940E1AA8 CALL <created procedures>
04E4 9409 IJMP
(0694) {
(0695) case TUNER_MODE:
(0696) Set_String(" TUNER");
04E5 E705 LDI R16,0x75
04E6 E010 LDI R17,0
04E7 D0A0 RCALL _Set_String
(0697) break;
04E8 C065 RJMP 0x054E
(0698) case AV1_MODE:
(0699) Set_String(" AV1");
04E9 E60E LDI R16,0x6E
04EA E010 LDI R17,0
04EB D09C RCALL _Set_String
(0700) break;
04EC C061 RJMP 0x054E
(0701) case AV2_MODE:
(0702) Set_String(" AV2");
04ED E607 LDI R16,0x67
04EE E010 LDI R17,0
04EF D098 RCALL _Set_String
(0703) break;
04F0 C05D RJMP 0x054E
(0704) case AV3_MODE:
(0705) Set_String(" AV3");
04F1 E600 LDI R16,0x60
04F2 E010 LDI R17,0
04F3 D094 RCALL _Set_String
(0706) break;
(0707) }
(0708) break;
04F4 C059 RJMP 0x054E
(0709) default:
(0710) if(work_mode!=POWER_OFF_MODE)
04F5 91800148 LDS R24,0x148
04F7 3085 CPI R24,5
04F8 F151 BEQ 0x0523
(0711) {
(0712) g_vfd_grid_buffer[1] = num_xlate_left[Mchvol/10];//(Mchvolume-MAX_VOLUME)/10];
04F9 E02A LDI R18,0xA
04FA E030 LDI R19,0
04FB 9100014F LDS R16,0x14F
04FD 2711 CLR R17
04FE 940E19A0 CALL div16s
0500 01F8 MOVW R30,R16
0501 0FEE LSL R30
0502 1FFF ROL R31
0503 E986 LDI R24,0x96
0504 E091 LDI R25,1
0505 940E1AB0 CALL 0x1AB0
0507 93F0019C STS R31,_g_vfd_grid_buffer+3
0509 93E0019B STS R30,_g_vfd_grid_buffer+2
(0713) g_vfd_grid_buffer[1] |= num_xlate_right[Mchvol%10];//(Mchvolume-MAX_VOLUME)%10];
050B E02A LDI R18,0xA
050C E030 LDI R19,0
050D 9100014F LDS R16,0x14F
050F 2711 CLR R17
0510 940E199E CALL mod16s
0512 01F8 MOVW R30,R16
0513 0FEE LSL R30
0514 1FFF ROL R31
0515 EA8A LDI R24,0xAA
0516 E091 LDI R25,1
0517 940E1AB0 CALL 0x1AB0
0519 9030019C LDS R3,_g_vfd_grid_buffer+3
051B 9020019B LDS R2,_g_vfd_grid_buffer+2
051D 2A2E OR R2,R30
051E 2A3F OR R3,R31
051F 9230019C STS R3,_g_vfd_grid_buffer+3
0521 9220019B STS R2,_g_vfd_grid_buffer+2
(0714)
(0715) };
(0716) switch(work_mode)
0523 91600148 LDS R22,0x148
0525 2777 CLR R23
0526 3061 CPI R22,1
0527 E0E0 LDI R30,0
0528 077E CPC R23,R30
0529 F40C BGE 0x052B
052A C023 RJMP 0x054E
052B 940E1CDC CALL 0x1CDC
052D F104 BLT 0x054E
052E EB88 LDI R24,0xB8
052F E090 LDI R25,0
0530 01FB MOVW R30,R22
0531 9731 SBIW R30,1
0532 940E1AA8 CALL <created procedures>
0534 9409 IJMP
(0717) {
(0718) case TUNER_MODE:
(0719) tuner_display();
0535 DD15 RCALL _tuner_display
(0720) break;
0536 C017 RJMP 0x054E
(0721) case TAPE_MODE:
(0722) Set_String(" AV1");
0537 E60E LDI R16,0x6E
0538 E010 LDI R17,0
0539 D04E RCALL _Set_String
(0723) break;
053A C013 RJMP 0x054E
(0724) case AV2_MODE:
(0725) Set_String(" AV2");
053B E607 LDI R16,0x67
053C E010 LDI R17,0
053D D04A RCALL _Set_String
(0726) break;
053E C00F RJMP 0x054E
(0727) case AV3_MODE:
(0728) Set_String(" AV3");
053F E600 LDI R16,0x60
0540 E010 LDI R17,0
0541 D046 RCALL _Set_String
(0729) break;
0542 C00B RJMP 0x054E
(0730) case POWER_OFF_MODE:
(0731) #ifdef CLOCK_STANDBY
(0732) g_vfd_grid_buffer[7] = num_trans(time_val[0]/10);
(0733) g_vfd_grid_buffer[6] = (num_trans(time_val[0]%10)|VFD_LED_COL);
(0734) g_vfd_grid_buffer[5] = num_trans(time_val[1]/10);
(0735) g_vfd_grid_buffer[4] = (num_trans(time_val[1]%10)|VFD_LED_COL);
(0736) g_vfd_grid_buffer[3] = num_trans(time_val[2]/10);
(0737) g_vfd_grid_buffer[2] = num_trans(time_val[2]%10);
(0738) #endif
(0739) //Set_FS1_H();
(0740) //Set_FS2_H();
(0741) muted = 1;
0543 940E1B8B CALL 0x1B8B
0545 940E1B05 CALL 0x1B05
(0742) MCU_mute();
(0743) delay_ms(100);
(0744) led_val = 0x01;
0547 E081 LDI R24,1
0548 93800141 STS R24,0x141
(0745) decoder_power_off();
054A 2700 CLR R16
054B 2711 CLR R17
054C D0CE RCALL _DEC_power
054D 0000 NOP
(0746) break;
(0747) }
(0748) break;
(0749)
(0750)
(0751) }
(0752)
(0753) };
(0754) if(work_mode != POWER_OFF_MODE)
054E 91800148 LDS R24,0x148
0550 3085 CPI R24,5
0551 F0D1 BEQ 0x056C
(0755) {
(0756) if(muted)
0552 90200242 LDS R2,_muted
0554 2022 TST R2
0555 F049 BEQ 0x055F
(0757) g_vfd_grid_buffer[7] |= VFD_LED_MUTE;
0556 919001A8 LDS R25,0x1A8
0558 918001A7 LDS R24,0x1A7
055A 6490 ORI R25,0x40
055B 939001A8 STS R25,0x1A8
055D 938001A7 STS R24,0x1A7
(0758) if(g_ui_timing_cnt)
055F 90300198 LDS R3,_g_ui_timing_cnt+1
0561 90200197 LDS R2,_g_ui_timing_cnt
0563 2022 TST R2
0564 F411 BNE 0x0567
0565 2033 TST R3
0566 F029 BEQ 0x056C
(0759) g_vfd_grid_buffer[0] |= VFD_LED_SLEEP;
0567 940E1D31 CALL 0x1D31
0569 6890 ORI R25,0x80
056A 940E1C6A CALL 0x1C6A
(0760) //if(g_tape_s.pstate==TAPE_FWD_REC)
(0761) //g_vfd_grid_buffer[10] |= VFD_LED_REC;
(0762) };
(0763) VFD_LL_SetGrid();
056C 940E133E CALL _VFD_LL_SetGrid
(0764) for(i=0; i<VFD_BUFFER_SIZE; i++)
056E 2744 CLR R20
056F C00F RJMP 0x057F
(0765) {
(0766) VFD_LL_WriteDisplayRAM( i, g_vfd_grid_buffer[i]);
0570 E989 LDI R24,0x99
0571 E091 LDI R25,1
0572 2FE4 MOV R30,R20
0573 27FF CLR R31
0574 940E1AB6 CALL 0x1AB6
0576 8120 LDD R18,0+Z
0577 8131 LDD R19,1+Z
0578 2F04 MOV R16,R20
0579 2711 CLR R17
057A 940E1366 CALL _VFD_LL_WriteDisplayRAM
057C 940E1C85 CALL 0x1C85
(0767)
(0768) VFD_LL_RefreshLED(led_val);
(0769) #ifdef MORE_THAN_16SEGMENT
(0770) VFD_LL_WriteExtDisplayRAM(i,g_vfd_grid_ext_buffer[i]);
(0771) #endif
(0772) };
057E 9543 INC R20
057F 304C CPI R20,0xC
0580 F378 BCS 0x0570
(0773) VFD_LL_SetDim(0x0f);
0581 E00F LDI R16,0xF
0582 E010 LDI R17,0
0583 940E1333 CALL _VFD_LL_SetDim
(0774) }
0585 940E1A18 CALL pop_gset2
0587 9508 RET
_Set_String:
pos --> R20
str --> R16
0588 940E19F5 CALL push_gset1
(0775)
(0776) unsigned char Set_String(unsigned char *str)
(0777) {
(0778) // int position;
(0779) // int counter = 0;
(0780) int pos;
(0781) // int letter_index;
(0782)
(0783) for(pos = 9; pos > 1; pos--)
058A E049 LDI R20,0x9
058B E050 LDI R21,0
(0784) {
(0785) if (*str)
058C 01F8 MOVW R30,R16
058D 8020 LDD R2,0+Z
058E 2022 TST R2
058F F409 BNE 0x0591
0590 C05A RJMP 0x05EB
(0786) {
(0787) if ( ((*str)>='A') && ((*str)<='Z'))
0591 2433 CLR R3
0592 01C1 MOVW R24,R2
0593 3481 CPI R24,0x41
0594 E0E0 LDI R30,0
0595 079E CPC R25,R30
0596 F084 BLT 0x05A7
0597 E58A LDI R24,0x5A
0598 E090 LDI R25,0
0599 1582 CP R24,R2
059A 0593 CPC R25,R3
059B F05C BLT 0x05A7
(0788) {
(0789) g_vfd_grid_buffer[pos] = vfd_alpha[(*str)-'A'];
059C EB8E LDI R24,0xBE
059D E091 LDI R25,1
059E 2DE2 MOV R30,R2
059F 27FF CLR R31
05A0 54E1 SUBI R30,0x41
05A1 40F0 SBCI R31,0
05A2 940E1AA8 CALL <created procedures>
05A4 940E1BA2 CALL 0x1BA2
(0790) }
05A6 C041 RJMP 0x05E8
(0791) else if ( (*str) == '-' )
05A7 01F8 MOVW R30,R16
05A8 8180 LDD R24,0+Z
05A9 328D CPI R24,0x2D
05AA F451 BNE 0x05B5
(0792) {
(0793) g_vfd_grid_buffer[pos] = VFD_alpha_DASH;
05AB E989 LDI R24,0x99
05AC E091 LDI R25,1
05AD 01FA MOVW R30,R20
05AE 940E1AB6 CALL 0x1AB6
05B0 E080 LDI R24,0
05B1 E290 LDI R25,0x20
05B2 8380 STD R24,0+Z
05B3 8391 STD R25,1+Z
(0794) }
05B4 C033 RJMP 0x05E8
(0795) else if ( ((*str)>='0') && ((*str)<='9'))
05B5 01F8 MOVW R30,R16
05B6 8020 LDD R2,0+Z
05B7 2433 CLR R3
05B8 01C1 MOVW R24,R2
05B9 3380 CPI R24,0x30
05BA E0E0 LDI R30,0
05BB 079E CPC R25,R30
05BC F07C BLT 0x05CC
05BD E389 LDI R24,0x39
05BE E090 LDI R25,0
05BF 1582 CP R24,R2
05C0 0593 CPC R25,R3
05C1 F054 BLT 0x05CC
(0796) {
(0797)
(0798) g_vfd_grid_buffer[pos] = num_xlate[(*str)-'0'];
05C2 E882 LDI R24,0x82
05C3 E091 LDI R25,1
05C4 2DE2 MOV R30,R2
05C5 27FF CLR R31
05C6 97F0 SBIW R30,0x30
05C7 940E1AA8 CALL <created procedures>
05C9 940E1BA2 CALL 0x1BA2
(0799) }
05CB C01C RJMP 0x05E8
(0800) else if((*str)=='*')
05CC 01F8 MOVW R30,R16
05CD 8180 LDD R24,0+Z
05CE 328A CPI R24,0x2A
05CF F451 BNE 0x05DA
(0801) {
(0802) g_vfd_grid_buffer[pos] = VFD_alpha_aster;
05D0 E989 LDI R24,0x99
05D1 E091 LDI R25,1
05D2 01FA MOVW R30,R20
05D3 940E1AB6 CALL 0x1AB6
05D5 ED8C LDI R24,0xDC
05D6 E09E LDI R25,0xE
05D7 8380 STD R24,0+Z
05D8 8391 STD R25,1+Z
(0803) }
05D9 C00E RJMP 0x05E8
(0804) else if((*str)==0x0D)
05DA 01F8 MOVW R30,R16
05DB 8180 LDD R24,0+Z
05DC 308D CPI R24,0xD
05DD F419 BNE 0x05E1
(0805) return 0;
05DE 2700 CLR R16
05DF 2711 CLR R17
05E0 C017 RJMP 0x05F8
(0806) else if((*str)==0x0A)
05E1 01F8 MOVW R30,R16
05E2 8180 LDD R24,0+Z
05E3 308A CPI R24,0xA
05E4 F419 BNE 0x05E8
(0807) return 1;
05E5 E001 LDI R16,1
05E6 E010 LDI R17,0
05E7 C010 RJMP 0x05F8
(0808) str++;
05E8 5F0F SUBI R16,0xFF
05E9 4F1F SBCI R17,0xFF
(0809)
(0810) }
05EA C003 RJMP 0x05EE
(0811) else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -