📄 tft_7.lst
字号:
(0318) else
(0319) PORTB&=~PL_R;
031D 98C1 CBI 0x18,1
(0320) }
031E C007 RJMP 0x0326
(0321) else
(0322) {
(0323) if(user_config[inversion]==ON)
031F 9180006C LDS R24,0x6C
0321 3081 CPI R24,1
0322 F411 BNE 0x0325
(0324) PORTB&=~PL_R;
0323 98C1 CBI 0x18,1
0324 C001 RJMP 0x0326
(0325) else
(0326) PORTB|=PL_R;
0325 9AC1 SBI 0x18,1
(0327) }
(0328) }
0326 9508 RET
_dis_video:
x --> R20
0327 DA98 RCALL push_gset1
0328 2F40 MOV R20,R16
0329 9726 SBIW R28,6
(0329)
(0330) /*========================
(0331) 显示视频源
(0332) ========================*/
(0333) void dis_video(unsigned char x)
(0334) {
(0335) OSD_window(0);
032A 2700 CLR R16
032B D7C4 RCALL _OSD_window
(0336) OSD_attrib_1row(0,0,10,3,0);
032C 2422 CLR R2
032D 822C STD Y+4,R2
032E E083 LDI R24,3
032F 838A STD Y+2,R24
0330 E08A LDI R24,0xA
0331 8388 STD Y+0,R24
0332 2722 CLR R18
0333 2700 CLR R16
0334 D955 RCALL _OSD_attrib_1row
0335 DBB1 RCALL 0x0EE7
(0337) switch(x)
0336 F049 BEQ 0x0340
0337 3042 CPI R20,2
0338 E0E0 LDI R30,0
0339 075E CPC R21,R30
033A F099 BEQ 0x034E
033B 3043 CPI R20,3
033C E0E0 LDI R30,0
033D 075E CPC R21,R30
033E F0A9 BEQ 0x0354
033F C019 RJMP 0x0359
(0338) {
(0339) case TV:
(0340) OSD_out_1row(0,0,3,1,c_channel);
0340 E887 LDI R24,0x87
0341 DB13 RCALL 0x0E55
0342 2722 CLR R18
0343 2700 CLR R16
0344 D7EE RCALL _OSD_out_1row
(0341) OSD_out_num(0,6,user_config[channel],1);
0345 E081 LDI R24,1
0346 838A STD Y+2,R24
0347 90200069 LDS R2,0x69
0349 8228 STD Y+0,R2
034A E026 LDI R18,6
034B 2700 CLR R16
034C D850 RCALL _OSD_out_num
(0342) break;
034D C00B RJMP 0x0359
(0343) case AV:
(0344) OSD_out_1row(0,2,3,1,c_video);
034E E989 LDI R24,0x99
034F DB05 RCALL 0x0E55
0350 E022 LDI R18,2
0351 2700 CLR R16
0352 D7E0 RCALL _OSD_out_1row
(0345) break;
0353 C005 RJMP 0x0359
(0346) case BACK:
(0347) OSD_out_1row(0,2,3,1,c_backsight);
0354 E98F LDI R24,0x9F
0355 DAFF RCALL 0x0E55
0356 E022 LDI R18,2
0357 2700 CLR R16
0358 D7DA RCALL _OSD_out_1row
(0348) break;
(0349) }
(0350) FOSD=DIS_VIDEO;
0359 E081 LDI R24,1
035A 93800060 STS 0x60,R24
(0351) }
035C 9626 ADIW R28,6
035D DA65 RCALL pop_gset1
035E 9508 RET
_dis_volume:
035F 9726 SBIW R28,6
(0352) /*========================
(0353) 显示音量
(0354) ========================*/
(0355) void dis_volume(void)
(0356) {
(0357) OSD_window(2);
0360 E002 LDI R16,2
0361 D78E RCALL _OSD_window
(0358) OSD_attrib_1row(0,0,16,1,0);
0362 2422 CLR R2
0363 822C STD Y+4,R2
0364 E081 LDI R24,1
0365 838A STD Y+2,R24
0366 E180 LDI R24,0x10
0367 8388 STD Y+0,R24
0368 2722 CLR R18
0369 2700 CLR R16
036A D91F RCALL _OSD_attrib_1row
(0359) OSD_out_1row(0,0,3,1,c_volume);
036B E88D LDI R24,0x8D
036C DAE8 RCALL 0x0E55
036D 2722 CLR R18
036E 2700 CLR R16
036F D7C3 RCALL _OSD_out_1row
(0360) OSD_out_num(0,10,user_config[volume],1);
0370 E081 LDI R24,1
0371 838A STD Y+2,R24
0372 90200068 LDS R2,0x68
0374 8228 STD Y+0,R2
0375 E02A LDI R18,0xA
0376 2700 CLR R16
0377 D825 RCALL _OSD_out_num
(0361) FOSD=DIS_VOLUME;
0378 E084 LDI R24,4
0379 93800060 STS 0x60,R24
(0362) }
037B 9626 ADIW R28,6
037C 9508 RET
_delay:
j --> R20
i --> R22
x --> R16
037D DA59 RCALL push_gset2
(0363) /*================================
(0364) ================================*/
(0365) void delay(unsigned int x)
(0366) {
(0367) unsigned int i,j;
(0368) for(j=0;j<x;j++)
037E 2744 CLR R20
037F 2755 CLR R21
0380 C00B RJMP 0x038C
(0369) {
(0370) for(i=0;i<x;i++)
0381 2766 CLR R22
0382 2777 CLR R23
0383 C003 RJMP 0x0387
(0371) WDR();
0384 95A8 WDR
0385 5F6F SUBI R22,0xFF
0386 4F7F SBCI R23,0xFF
0387 1760 CP R22,R16
0388 0771 CPC R23,R17
0389 F3D0 BCS 0x0384
038A 5F4F SUBI R20,0xFF
038B 4F5F SBCI R21,0xFF
038C 1740 CP R20,R16
038D 0751 CPC R21,R17
038E F390 BCS 0x0381
(0372) }
(0373) }
038F DA28 RCALL pop_gset2
0390 9508 RET
(0374) /*================================
(0375) ================================*/
(0376) unsigned ADC_read(unsigned char x)
(0377) {
(0378) ADCSR = 0x00; //disable adc
_ADC_read:
x --> R16
0391 2422 CLR R2
0392 B826 OUT 0x06,R2
(0379) ADMUX = 0x60|x; //select adc input x
0393 2F80 MOV R24,R16
0394 6680 ORI R24,0x60
0395 B987 OUT 0x07,R24
(0380) ACSR = 0x80;
0396 E880 LDI R24,0x80
0397 B988 OUT 0x08,R24
(0381) ADCSR = 0xC1;
0398 EC81 LDI R24,0xC1
0399 B986 OUT 0x06,R24
(0382) while(!(ADCSR&0x10))
039A 9B34 SBIS 0x06,4
039B CFFE RJMP 0x039A
(0383) ;
(0384) ADCL=ADCH;
039C B025 IN R2,0x05
039D B824 OUT 0x04,R2
(0385) ADCSR|=0x40;
039E 9A36 SBI 0x06,6
(0386) while(!(ADCSR&0x10))
039F 9B34 SBIS 0x06,4
03A0 CFFE RJMP 0x039F
(0387) ;
(0388) return ADCH;
03A1 B105 IN R16,0x05
03A2 2711 CLR R17
03A3 9508 RET
_key:
x --> R20
03A4 DA1B RCALL push_gset1
03A5 2F40 MOV R20,R16
(0389) }
(0390) /*================================
(0391) ================================*/
(0392) unsigned char key(unsigned char x)
(0393) {
(0394) unsigned char static old_key=0xff,j;
(0395) // unsigned char static k=0;
(0396) if((ADC_read(x)&0xe0)!=0xe0 && fkey==0)
03A6 2F04 MOV R16,R20
03A7 DFE9 RCALL _ADC_read
03A8 DB26 RCALL 0x0ECF
03A9 F409 BNE 0x03AB
03AA C07A RJMP 0x0425
03AB 90200061 LDS R2,0x61
03AD 2022 TST R2
03AE F009 BEQ 0x03B0
03AF C075 RJMP 0x0425
(0397) {
(0398) for(j=0;j<50;j++)
03B0 2422 CLR R2
03B1 92200253 STS 0x253,R2
03B3 C00B RJMP 0x03BF
(0399) {
(0400) if((ADC_read(x)&0xe0)==0xe0)
03B4 2F04 MOV R16,R20
03B5 DFDB RCALL _ADC_read
03B6 DB18 RCALL 0x0ECF
03B7 F411 BNE 0x03BA
(0401) return 0xff;
03B8 EF0F LDI R16,0xFF
03B9 C09D RJMP 0x0457
03BA 91800253 LDS R24,0x253
03BC 5F8F SUBI R24,0xFF
03BD 93800253 STS 0x253,R24
03BF 91800253 LDS R24,0x253
03C1 3382 CPI R24,0x32
03C2 F388 BCS 0x03B4
(0402) }
(0403) if(x==6)
03C3 3046 CPI R20,6
03C4 F441 BNE 0x03CD
(0404) old_key=ADC_read(x)&0xe0;
03C5 2F04 MOV R16,R20
03C6 DFCA RCALL _ADC_read
03C7 01C8 MOVW R24,R16
03C8 7E80 ANDI R24,0xE0
03C9 7090 ANDI R25,0
03CA 93800247 STS 0x247,R24
03CC C010 RJMP 0x03DD
(0405) else
(0406) old_key=((ADC_read(x)&0xe0)>>4)|1;
03CD 2F04 MOV R16,R20
03CE DFC2 RCALL _ADC_read
03CF 01C8 MOVW R24,R16
03D0 7E80 ANDI R24,0xE0
03D1 7090 ANDI R25,0
03D2 9596 LSR R25
03D3 9587 ROR R24
03D4 9596 LSR R25
03D5 9587 ROR R24
03D6 9596 LSR R25
03D7 9587 ROR R24
03D8 9596 LSR R25
03D9 9587 ROR R24
03DA 6081 ORI R24,1
03DB 93800247 STS 0x247,R24
(0407) fkey=1;
03DD E081 LDI R24,1
03DE 93800061 STS 0x61,R24
(0408) switch(old_key)
03E0 91400247 LDS R20,0x247
03E2 2755 CLR R21
03E3 304D CPI R20,0xD
03E4 E0E0 LDI R30,0
03E5 075E CPC R21,R30
03E6 F409 BNE 0x03E8
03E7 C039 RJMP 0x0421
03E8 E08D LDI R24,0xD
03E9 E090 LDI R25,0
03EA 1784 CP R24,R20
03EB 0795 CPC R25,R21
03EC F0AC BLT 0x0402
03ED 3040 CPI R20,0
03EE 0745 CPC R20,R21
03EF F149 BEQ 0x0419
03F0 3041 CPI R20,1
03F1 E0E0 LDI R30,0
03F2 075E CPC R21,R30
03F3 F139 BEQ 0x041B
03F4 3045 CPI R20,5
03F5 E0E0 LDI R30,0
03F6 075E CPC R21,R30
03F7 F129 BEQ 0x041D
03F8 3040 CPI R20,0
03F9 E0E0 LDI R30,0
03FA 075E CPC R21,R30
03FB F40C BGE 0x03FD
03FC C033 RJMP 0x0430
03FD 3049 CPI R20,0x9
03FE E0E0 LDI R30,0
03FF 075E CPC R21,R30
0400 F0F1 BEQ 0x041F
0401 C02E RJMP 0x0430
0402 3840 CPI R20,0x80
0403 E0E0 LDI R30,0
0404 075E CPC R21,R30
0405 F079 BEQ 0x0415
0406 E880 LDI R24,0x80
0407 E090 LDI R25,0
0408 1784 CP R24,R20
0409 0795 CPC R25,R21
040A F02C BLT 0x0410
040B 3440 CPI R20,0x40
040C E0E0 LDI R30,0
040D 075E CPC R21,R30
040E F041 BEQ 0x0417
040F C020 RJMP 0x0430
0410 3C40 CPI R20,0xC0
0411 E0E0 LDI R30,0
0412 075E CPC R21,R30
0413 F079 BEQ 0x0423
0414 C01B RJMP 0x0430
(0409) {
(0410) case 0x80:
(0411) return KMENU;
0415 E604 LDI R16,0x64
0416 C040 RJMP 0x0457
(0412) case 0x40:
(0413) return KDOWN;
0417 E606 LDI R16,0x66
0418 C03E RJMP 0x0457
(0414) case 0x00:
(0415) return KUP;
0419 E605 LDI R16,0x65
041A C03C RJMP 0x0457
(0416) case 0x01:
(0417) return KLEFT;
041B E607 LDI R16,0x67
041C C03A RJMP 0x0457
(0418) case 0x05:
(0419) return KRIGHT;
041D E608 LDI R16,0x68
041E C038 RJMP 0x0457
(0420) case 0x09:
(0421) return KAV;
041F E609 LDI R16,0x69
0420 C036 RJMP 0x0457
(0422) case 0x0d:
(0423) return KBACK;
0421 E60A LDI R16,0x6A
0422 C034 RJMP 0x0457
(0424) case 0xc0:
(0425) return KRESERVE;
0423 E60B LDI R16,0x6B
0424 C032 RJMP 0x0457
(0426) }
(0427) }
(0428) else if(ADC_read(6)>0xf0 && ADC_read(7)>0xf0)
0425 E006 LDI R16,6
0426 DF6A RCALL _ADC_read
0427 DB0D RCALL 0x0F35
0428 F438 BCC 0x0430
0429 E007 LDI R16,7
042A DF66 RCALL _ADC_read
042B DB09 RCALL 0x0F35
042C F418 BCC 0x0430
(0429) fkey=0;
042D 2422 CLR R2
042E 92200061 STS 0x61,R2
(0430) if(fcontinuous==1)
0430 91800062 LDS R24,0x62
0432 3081 CPI R24,1
0433 F511 BNE 0x0456
(0431) {
(0432) fcontinuous=0;
0434 2422 CLR R2
0435 92200062 STS 0x62,R2
(0433) switch(old_key)
0437 91400247 LDS R20,0x247
0439 2755 CLR R21
043A 3040 CPI R20,0
043B 0745 CPC R20,R21
043C F099 BEQ 0x0450
043D 3041 CPI R20,1
043E E0E0 LDI R30,0
043F 075E CPC R21,R30
0440 F089 BEQ 0x0452
0441 3045 CPI R20,5
0442 E0E0 LDI R30,0
0443 075E CPC R21,R30
0444 F079 BEQ 0x0454
0445 3040 CPI R20,0
0446 E0E0 LDI R30,0
0447 075E CPC R21,R30
0448 F06C BLT 0x0456
0449 3440 CPI R20,0x40
044A E0E0 LDI R30,0
044B 075E CPC R21,R30
044C F009 BEQ 0x044E
044D C008 RJMP 0x0456
(0434) {
(0435) case 0x40:
(0436) return KDOWN;
044E E606 LDI R16,0x66
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -