📄 tft_7.lst
字号:
044F C007 RJMP 0x0457
(0437) case 0x00:
(0438) return KUP;
0450 E605 LDI R16,0x65
0451 C005 RJMP 0x0457
(0439) case 0x01:
(0440) return KLEFT;
0452 E607 LDI R16,0x67
0453 C003 RJMP 0x0457
(0441) case 0x05:
(0442) return KRIGHT;
0454 E608 LDI R16,0x68
0455 C001 RJMP 0x0457
(0443) }
(0444) }
(0445) return 0xff;
0456 EF0F LDI R16,0xFF
0457 D96B RCALL pop_gset1
0458 9508 RET
_EEPROMwrite:
rw_add --> R20
j --> R22
d --> R10
a --> R12
0459 D983 RCALL push_gset4
045A 2EA2 MOV R10,R18
045B 2EC0 MOV R12,R16
045C 9721 SBIW R28,1
(0446) }
(0447) /*==========================================
(0448) ==========================================*/
(0449) void EEPROMwrite(unsigned char a,unsigned char d)
(0450) {
(0451) unsigned char j=0;
045D 2766 CLR R22
045E DAD1 RCALL 0x0F30
(0452) unsigned char rw_add;
(0453) switch(a/256){
045F D872 RCALL div16s
0460 01A8 MOVW R20,R16
0461 3000 CPI R16,0
0462 0701 CPC R16,R17
0463 F069 BEQ 0x0471
0464 3041 CPI R20,1
0465 E0E0 LDI R30,0
0466 075E CPC R21,R30
0467 F059 BEQ 0x0473
0468 3042 CPI R20,2
0469 E0E0 LDI R30,0
046A 075E CPC R21,R30
046B F049 BEQ 0x0475
046C 3043 CPI R20,3
046D E0E0 LDI R30,0
046E 075E CPC R21,R30
046F F039 BEQ 0x0477
0470 C00F RJMP 0x0480
(0454) case 0: rw_add=0xa0; break;
0471 EA40 LDI R20,0xA0
0472 C00D RJMP 0x0480
(0455) case 1: rw_add=0xa2; break;
0473 EA42 LDI R20,0xA2
0474 C00B RJMP 0x0480
(0456) case 2: rw_add=0xa4; break;
0475 EA44 LDI R20,0xA4
0476 C009 RJMP 0x0480
(0457) case 3: rw_add=0xa6; break;
0477 EA46 LDI R20,0xA6
(0458) default: break;
0478 C007 RJMP 0x0480
(0459) }
(0460) while(IICwrite(rw_add,a%256,d)==0)
(0461) {
(0462) WDR();
0479 95A8 WDR
(0463) if((++j)==10)
047A 2F86 MOV R24,R22
047B 5F8F SUBI R24,0xFF
047C 2F68 MOV R22,R24
047D 306A CPI R22,0xA
047E F409 BNE 0x0480
(0464) return;
047F C00B RJMP 0x048B
0480 82A8 STD Y+0,R10
0481 DAAE RCALL 0x0F30
0482 D84B RCALL mod16s
0483 2F20 MOV R18,R16
0484 2F04 MOV R16,R20
0485 DD8D RCALL _IICwrite
0486 2300 TST R16
0487 F389 BEQ 0x0479
(0465) }
(0466) delay(100);
0488 E604 LDI R16,0x64
0489 E010 LDI R17,0
048A DEF2 RCALL _delay
(0467) }
048B 9621 ADIW R28,1
048C D92F RCALL pop_gset4
048D 9508 RET
_EEPROMread:
rw_add --> R20
a --> R22
048E D948 RCALL push_gset2
048F 2F60 MOV R22,R16
0490 DA9A RCALL 0x0F2B
(0468) /*==========================================
(0469) ==========================================*/
(0470) unsigned char EEPROMread(unsigned char a)
(0471) {
(0472) unsigned char rw_add;
(0473) switch(a/256){
0491 D840 RCALL div16s
0492 01A8 MOVW R20,R16
0493 3000 CPI R16,0
0494 0701 CPC R16,R17
0495 F069 BEQ 0x04A3
0496 3041 CPI R20,1
0497 E0E0 LDI R30,0
0498 075E CPC R21,R30
0499 F059 BEQ 0x04A5
049A 3042 CPI R20,2
049B E0E0 LDI R30,0
049C 075E CPC R21,R30
049D F049 BEQ 0x04A7
049E 3043 CPI R20,3
049F E0E0 LDI R30,0
04A0 075E CPC R21,R30
04A1 F039 BEQ 0x04A9
04A2 C007 RJMP 0x04AA
(0474) case 0: rw_add=0xa0; break;
04A3 EA40 LDI R20,0xA0
04A4 C005 RJMP 0x04AA
(0475) case 1: rw_add=0xa2; break;
04A5 EA42 LDI R20,0xA2
04A6 C003 RJMP 0x04AA
(0476) case 2: rw_add=0xa4; break;
04A7 EA44 LDI R20,0xA4
04A8 C001 RJMP 0x04AA
(0477) case 3: rw_add=0xa6; break;
04A9 EA46 LDI R20,0xA6
(0478) default: break;
(0479) }
(0480) return IICread(rw_add,a%256);
04AA DA80 RCALL 0x0F2B
04AB D822 RCALL mod16s
04AC 2F20 MOV R18,R16
04AD 2F04 MOV R16,R20
04AE DD83 RCALL _IICread
04AF D908 RCALL pop_gset2
04B0 9508 RET
_CHwrite:
db2 --> R20
db1 --> R10
tmp --> R20
x --> R22
04B1 D928 RCALL push_gset3
04B2 2F60 MOV R22,R16
(0481) }
(0482) /*================================
(0483) ================================*/
(0484) unsigned int CHwrite(unsigned char x)
(0485) {
(0486) unsigned int tmp;
(0487) unsigned char db1,db2;
(0488) // volume_register=0;
(0489) db1=EEPROMread(x*2+48);
04B3 E082 LDI R24,2
04B4 9F86 MUL R24,R22
04B5 2D00 MOV R16,R0
04B6 5D00 SUBI R16,0xD0
04B7 DFD6 RCALL _EEPROMread
04B8 2EA0 MOV R10,R16
(0490) db2=EEPROMread(x*2+49);
04B9 E082 LDI R24,2
04BA 9F86 MUL R24,R22
04BB 2D00 MOV R16,R0
04BC 5C0F SUBI R16,0xCF
04BD DFD0 RCALL _EEPROMread
04BE 2F40 MOV R20,R16
(0491) tmp=db1*256+db2;
04BF 2D2A MOV R18,R10
04C0 2733 CLR R19
04C1 E000 LDI R16,0
04C2 E011 LDI R17,1
04C3 D8B8 RCALL empy16s
04C4 0118 MOVW R2,R16
04C5 2E44 MOV R4,R20
04C6 2455 CLR R5
04C7 0C24 ADD R2,R4
04C8 1C35 ADC R3,R5
04C9 01A1 MOVW R20,R2
(0492) EEPROMwrite(channel,x); //保存频道
04CA 2F26 MOV R18,R22
04CB E002 LDI R16,2
04CC DF8C RCALL _EEPROMwrite
(0493) FI1256write(tmp);
04CD 018A MOVW R16,R20
04CE DDC6 RCALL _FI1256write
(0494) return tmp;
04CF 018A MOVW R16,R20
04D0 D8E9 RCALL pop_gset3
04D1 9508 RET
_auto_tune:
ch_f --> R14
address --> R20
j --> R22
ftune --> R10
tmp --> R12
04D2 D90D RCALL push_gset5
04D3 9726 SBIW R28,6
(0495) }
(0496) /*================================
(0497) ================================*/
(0498) void auto_tune(void)
(0499) {
(0500) unsigned int tmp,ch_f,j,address=1;
04D4 E041 LDI R20,1
04D5 E050 LDI R21,0
(0501) unsigned char ftune=1;
04D6 24AA CLR R10
04D7 94A3 INC R10
(0502) volume_register=0;
04D8 2422 CLR R2
04D9 92200330 STS _volume_register,R2
(0503) gauge_num(tmp=Frequency_low); //加载最低频率
04DB EE80 LDI R24,0xE0
04DC E094 LDI R25,4
04DD 016C MOVW R12,R24
04DE 011C MOVW R2,R24
04DF 2444 CLR R4
04E0 2455 CLR R5
04E1 0181 MOVW R16,R2
04E2 0192 MOVW R18,R4
04E3 D727 RCALL _gauge_num
(0504) WDR();
04E4 95A8 WDR
(0505) OSD_out_1row(1,12,1,0,c_on_off[ON]);
04E5 EC8B LDI R24,0xCB
04E6 E090 LDI R25,0
04E7 839D STD Y+5,R25
04E8 838C STD Y+4,R24
04E9 D951 RCALL 0x0E3B
04EA E02C LDI R18,0xC
04EB E001 LDI R16,1
04EC D646 RCALL _OSD_out_1row
04ED D94D RCALL 0x0E3B
(0506) OSD_out_num(3,11,1,0);
04EE E02B LDI R18,0xB
04EF E003 LDI R16,3
04F0 D6AC RCALL _OSD_out_num
(0507) do
(0508) {
(0509) do
(0510) {
(0511) if(key(7)==KLEFT || tmp>Frequency_high)
04F1 E007 LDI R16,7
04F2 DEB1 RCALL _key
04F3 3607 CPI R16,0x67
04F4 F029 BEQ 0x04FA
04F5 E080 LDI R24,0
04F6 E399 LDI R25,0x39
04F7 158C CP R24,R12
04F8 059D CPC R25,R13
04F9 F408 BCC 0x04FB
(0512) ftune=0; //扫描停止命令
04FA 24AA CLR R10
(0513) j=0;
04FB 2766 CLR R22
04FC 2777 CLR R23
(0514) if(((tmp+=2)%8)==0);
04FD 01C6 MOVW R24,R12
04FE 9602 ADIW R24,2
04FF D969 RCALL 0x0E69
(0515) gauge_num(tmp);
0500 D70A RCALL _gauge_num
(0516) WDR();
0501 95A8 WDR
(0517) }while((0x0f&FI1256write(tmp))!=0 && ftune==1);
0502 0186 MOVW R16,R12
0503 DD91 RCALL _FI1256write
0504 2F80 MOV R24,R16
0505 708F ANDI R24,0xF
0506 F019 BEQ 0x050A
0507 2D8A MOV R24,R10
0508 3081 CPI R24,1
0509 F339 BEQ 0x04F1
(0518) ch_f=tmp;
050A 0176 MOVW R14,R12
(0519) do
(0520) {
(0521) if(key(7)==KLEFT || tmp>Frequency_high)
050B E007 LDI R16,7
050C DE97 RCALL _key
050D 3607 CPI R16,0x67
050E F029 BEQ 0x0514
050F E080 LDI R24,0
0510 E399 LDI R25,0x39
0511 158C CP R24,R12
0512 059D CPC R25,R13
0513 F408 BCC 0x0515
(0522) ftune=0; //扫描停止命令
0514 24AA CLR R10
(0523) j++;
0515 5F6F SUBI R22,0xFF
0516 4F7F SBCI R23,0xFF
(0524) if(((++tmp)%8)==0);
0517 01C6 MOVW R24,R12
0518 9601 ADIW R24,1
0519 D94F RCALL 0x0E69
(0525) gauge_num(tmp);
051A D6F0 RCALL _gauge_num
(0526) WDR();
051B 95A8 WDR
(0527) }while((0x0f&FI1256write(tmp))==0 && ftune==1);
051C 0186 MOVW R16,R12
051D DD77 RCALL _FI1256write
051E 2F80 MOV R24,R16
051F 708F ANDI R24,0xF
0520 F419 BNE 0x0524
0521 2D8A MOV R24,R10
0522 3081 CPI R24,1
0523 F339 BEQ 0x050B
(0528) if(j>5)
0524 E085 LDI R24,5
0525 E090 LDI R25,0
0526 1786 CP R24,R22
0527 0797 CPC R25,R23
0528 F498 BCC 0x053C
(0529) {
(0530) j=0;
0529 2766 CLR R22
052A 2777 CLR R23
(0531) channel_frequency[address++]=ch_f;
052B 011A MOVW R2,R20
052C 5F4F SUBI R20,0xFF
052D 4F5F SBCI R21,0xFF
052E E002 LDI R16,2
052F E010 LDI R17,0
0530 0191 MOVW R18,R2
0531 D84A RCALL empy16s
0532 01F8 MOVW R30,R16
0533 D96F RCALL 0x0EA3
0534 82F1 STD Z+1,R15
0535 82E0 STD Z+0,R14
(0532) OSD_out_num(3,11,address,0);
0536 2422 CLR R2
0537 822A STD Y+2,R2
0538 8348 STD Y+0,R20
0539 E02B LDI R18,0xB
053A E003 LDI R16,3
053B D661 RCALL _OSD_out_num
(0533) }
(0534) }while(ftune);
053C 20AA TST R10
053D F009 BEQ 0x053F
053E CFB2 RJMP 0x04F1
(0535) OSD_out_1row(1,12,1,0,c_on_off[OFF]);
053F EC89 LDI R24,0xC9
0540 E090 LDI R25,0
0541 839D STD Y+5,R25
0542 838C STD Y+4,R24
0543 D8F7 RCALL 0x0E3B
0544 E02C LDI R18,0xC
0545 E001 LDI R16,1
0546 D5EC RCALL _OSD_out_1row
(0536) FI1256write(channel_frequency[user_config[channel]=1]);
0547 E081 LDI R24,1
0548 93800069 STS 0x69,R24
054A E011 LDI R17,1
054B E002 LDI R16,2
054C 0201 MULS R16,R17
054D 01F0 MOVW R30,R0
054E D954 RCALL 0x0EA3
054F 8100 LDD R16,Z+0
0550 8111 LDD R17,Z+1
0551 DD43 RCALL _FI1256write
(0537) tmp=50;
0552 E382 LDI R24,0x32
0553 E090 LDI R25,0
0554 016C MOVW R12,R24
(0538) EEPROMwrite(ch_max,user_config[ch_max]=address);
0555 9340006A STS 0x6A,R20
0557 2F24 MOV R18,R20
0558 E003 LDI R16,3
0559 DEFF RCALL _EEPROMwrite
(0539) for(j=1;j<=address;j++)
055A E061 LDI R22,1
055B E070 LDI R23,0
055C C015 RJMP 0x0572
(0540) {
(0541) EEPROMwrite(tmp++,channel_frequency[j]/256);
055D E002 LDI R16,2
055E E010 LDI R17,0
055F 019B MOVW R18,R22
0560 D81B RCALL empy16s
0561 01F8 MOVW R30,R16
0562 D940 RCALL 0x0EA3
0563 D9C2 RCALL 0x0F26
0564 D987 RCALL 0x0EEC
0565 DEF3 RCALL _EEPROMwrite
(0542) EEPROMwrite(tmp++,channel_frequency[j]%256);
0566 E002 LDI R16,2
0567 E010 LDI R17,0
0568 019B MOVW R18,R22
0569 D812 RCALL empy16s
056A 01F8 MOVW R30,R16
056B D937 RCALL 0x0EA3
056C 8120 LDD R18,Z+0
056D 7030 ANDI R19,0
056E D97D RCALL 0x0EEC
056F DEE9 RCALL _EEPROMwrite
0570 5F6F SUBI R22,0xFF
0571 4F7F SBCI R23,0xFF
0572 1746 CP R20,R22
0573 0757 CPC R21,R23
0574 F008 BCS 0x0576
0575 CFE7 RJMP 0x055D
(0543) }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -