⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tft_7.lst

📁 7"车载液晶电视机 控制程序源码 WinRar3.2压缩 MCU ATMega8
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -