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

📄 tft_7.lst

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