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

📄 tft_7.lst

📁 7"车载液晶电视机 控制程序源码 WinRar3.2压缩 MCU ATMega8
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0110) unsigned int c_mode[]      ={0x14f,0x000,0x150};  //模式
(0111) 
(0112) unsigned int c_on_off[2][1]    ={0x05f,0x16c};
(0113) unsigned int mode_1_2_3[3][1]  ={0x002,0x003,0x004};
(0114) 
(0115) unsigned int c_menu[10][3]={
(0116) {0x06a,0x000,0x07b},  //电视
(0117) {0x07b,0x000,0x07c},  //视频
(0118) {0x169,0x000,0x07b},  //后视
(0119) {0x07c,0x168,0x000},  //频道
(0120) {0x03e,0x000,0x03f},  //亮度
(0121) {0x040,0x041,0x03f},  //对比度
(0122) {0x05e,0x000,0x03f},  //色度
(0123) {0x05e,0x000,0x053},  //色调
(0124) {0x16a,0x000,0x16b},  //镜象
(0125) {0x14f,0x000,0x150},  //模式
(0126) };
(0127) unsigned int c_menu2[3][4]={
(0128) {0x074,0x133,0x16d,0x16e},  //自动搜台
(0129) {0x16f,0x133,0x16d,0x16e},  //手动搜台
(0130) {0x07c,0x000,0x000,0x168},  //频道
(0131) };
(0132) 
(0133) unsigned char user_character[8][36]={  //道后镜像开搜台手
(0134) {//道
(0135) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x20,0x22,0x40,0x0F,0xF0,0x01,0x00,
(0136) 0xE7,0xE0,0x24,0x20,0x27,0xE0,0x24,0x20,0x27,0xE0,0x24,0x20,0x50,0x00,0x8F,0xF0,
(0137) 0x00,0x00,0x00,0x00},
(0138) {//后
(0139) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0x70,0x00,0x20,0x00,
(0140) 0x3F,0xF0,0x20,0x00,0x20,0x00,0x2F,0xE0,0x28,0x20,0x48,0x20,0x4F,0xE0,0x88,0x20,
(0141) 0x00,0x00,0x00,0x00},
(0142) {//镜
(0143) 0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x27,0xE0,0x72,0x40,0x4F,0xF0,0x80,0x00,
(0144) 0x77,0xE0,0x24,0x20,0x27,0xE0,0xFC,0x20,0x27,0xE0,0x2A,0x80,0x32,0x90,0x2C,0x70,
(0145) 0x00,0x00,0x00,0x00},
(0146) {//像
(0147) 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xC0,0x14,0x80,0x2F,0xF0,0x39,0x10,0x6F,0xF0,
(0148) 0xA2,0x00,0x25,0x30,0x2B,0xC0,0x24,0xC0,0x29,0xA0,0x22,0x90,0x2C,0x80,0x21,0x80,
(0149) 0x00,0x00,0x00,0x00},
(0150) {//开
(0151) 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,
(0152) 0x11,0x00,0xFF,0xF0,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x81,0x00,
(0153) 0x00,0x00,0x00,0x00},
(0154) {//搜
(0155) 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x26,0xB0,0x24,0x90,0xFE,0xB0,0x24,0x90,
(0156) 0x27,0xF0,0x37,0x70,0xE7,0xF0,0x22,0x20,0x21,0x40,0x20,0x80,0xA1,0x40,0x46,0x30,
(0157) 0x00,0x00,0x00,0x00},
(0158) {//台
(0159) 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x10,0x80,0x20,0x40,0x40,0x20,
(0160) 0xFF,0xF0,0x00,0x10,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,
(0161) 0x00,0x00,0x00,0x00},
(0162) {//手
(0163) 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0xFC,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,
(0164) 0x04,0x00,0x04,0x00,0xFF,0xF0,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x00,0x18,0x00,
(0165) 0x00,0x00,0x00,0x00},
(0166) };
(0167) 
(0168) extern void OSD_window(unsigned char x);
(0169) extern unsigned char OSD_out_1row(unsigned char row,unsigned char col,unsigned char extent,unsigned char size,unsigned int *string);
(0170) extern unsigned char OSD_out_num(unsigned char row,unsigned char col,unsigned char value,unsigned char size);
(0171) extern unsigned char OSD_attrib_1row(unsigned char row,unsigned char col,unsigned char extent,unsigned char fg_color,unsigned char bg_color);
(0172) extern void write_custom_char(unsigned char j,unsigned char *x);
(0173) extern unsigned char gauge_num(unsigned long value);
(0174) extern void OSD_off(void);
(0175) /*=======================
(0176) 写入用户字符
(0177) ========================*/
(0178) void write_user_char(void)
(0179) {
(0180)   unsigned char j;
(0181)   for(j=0;j<8;j++)
    025A 2744      CLR	R20
    025B C00A      RJMP	0x0266
(0182)     write_custom_char(j,user_character[j]);
    025C E284      LDI	R24,0x24
    025D 9F84      MUL	R24,R20
    025E 0190      MOVW	R18,R0
    025F E287      LDI	R24,0x27
    0260 E091      LDI	R25,1
    0261 0F28      ADD	R18,R24
    0262 1F39      ADC	R19,R25
    0263 2F04      MOV	R16,R20
    0264 D867      RCALL	_write_custom_char
    0265 9543      INC	R20
    0266 3048      CPI	R20,0x8
    0267 F3A0      BCS	0x025C
(0183) }
    0268 DB5A      RCALL	pop_gset1
    0269 9508      RET
_FI1256read:
  tmp                  --> R20
    026A DB55      RCALL	push_gset1
(0184) //**************读取FI1256hm数据****************/
(0185) unsigned char FI1256read(void)
(0186) {
(0187)   unsigned char tmp;
(0188)   iic_start();
    026B DF50      RCALL	_iic_start
(0189)   if(iic_send(0xc1))
    026C EC01      LDI	R16,0xC1
    026D DF6A      RCALL	_iic_send
    026E 2300      TST	R16
    026F F029      BEQ	0x0275
(0190)   {
(0191)     tmp=iic_receive();
    0270 DF8A      RCALL	_iic_receive
    0271 2F40      MOV	R20,R16
(0192) 	iic_stop();
    0272 DF9A      RCALL	_iic_stop
(0193) 	return tmp;
    0273 2F04      MOV	R16,R20
    0274 C002      RJMP	0x0277
(0194)   }
(0195)   iic_stop();
    0275 DF97      RCALL	_iic_stop
(0196)   return 0;
    0276 2700      CLR	R16
    0277 DB4B      RCALL	pop_gset1
    0278 9508      RET
_update_user_adjust:
  j                    --> R20
    0279 DB46      RCALL	push_gset1
(0197) }
(0198) /*=======================
(0199) 更新用户设定
(0200) ========================*/
(0201) void update_user_adjust(void)
(0202) {
(0203)   unsigned char j;
(0204)   if((FI1256read()&0x0f)!=0)
    027A DFEF      RCALL	_FI1256read
    027B 2F80      MOV	R24,R16
    027C 708F      ANDI	R24,0xF
    027D F021      BEQ	0x0282
(0205) 	volume_register=0;
    027E 2422      CLR	R2
    027F 92200330  STS	_volume_register,R2
    0281 C004      RJMP	0x0286
(0206)   else
(0207)     volume_register=user_config[volume];
    0282 90200068  LDS	R2,0x68
    0284 92200330  STS	_volume_register,R2
(0208)   for(j=0;j<4;j++)
    0286 2744      CLR	R20
    0287 C009      RJMP	0x0291
(0209)     user_adjust[0][j]=user_adjust[user_config[video_input]][j];
    0288 DB90      RCALL	<created procedures>
    0289 DBA2      RCALL	0x0E2C
    028A DC8B      RCALL	0x0F16
    028B 2FE4      MOV	R30,R20
    028C 27FF      CLR	R31
    028D 0FE8      ADD	R30,R24
    028E 1FF9      ADC	R31,R25
    028F 8220      STD	Z+0,R2
    0290 9543      INC	R20
    0291 3044      CPI	R20,4
    0292 F3A8      BCS	0x0288
(0210) }
    0293 DB2F      RCALL	pop_gset1
    0294 9508      RET
_FI1256write:
  db2                  --> R22
  db1                  --> R10
  PB                   --> R20
  Fosc                 --> R12
    0295 DB47      RCALL	push_gset4
    0296 0168      MOVW	R12,R16
(0211) //**************向FI1256hm写入数据****************
(0212) unsigned char FI1256write(unsigned int Fosc)
(0213) {
(0214)   unsigned char db1,db2,PB;
(0215)   db1=Fosc/256;
    0297 0156      MOVW	R10,R12
    0298 2CAB      MOV	R10,R11
    0299 24BB      CLR	R11
(0216)   db2=Fosc%256;
    029A 2D6C      MOV	R22,R12
    029B 7070      ANDI	R23,0
(0217)   if(Fosc<0x0c80) 
    029C 01C6      MOVW	R24,R12
    029D 3880      CPI	R24,0x80
    029E E0EC      LDI	R30,0xC
    029F 079E      CPC	R25,R30
    02A0 F408      BCC	0x02A2
(0218)     PB=0x80;
    02A1 E840      LDI	R20,0x80
(0219)   if(Fosc>0x0c80 && Fosc<0x1d60) 
    02A2 E880      LDI	R24,0x80
    02A3 E09C      LDI	R25,0xC
    02A4 158C      CP	R24,R12
    02A5 059D      CPC	R25,R13
    02A6 F430      BCC	0x02AD
    02A7 01C6      MOVW	R24,R12
    02A8 3680      CPI	R24,0x60
    02A9 E1ED      LDI	R30,0x1D
    02AA 079E      CPC	R25,R30
    02AB F408      BCC	0x02AD
(0220)     PB=0x82;
    02AC E842      LDI	R20,0x82
(0221)   if(Fosc>0x1d60) 
    02AD E680      LDI	R24,0x60
    02AE E19D      LDI	R25,0x1D
    02AF 158C      CP	R24,R12
    02B0 059D      CPC	R25,R13
    02B1 F408      BCC	0x02B3
(0222)     PB=0x84;
    02B2 E844      LDI	R20,0x84
(0223)   iic_init();
    02B3 DF5C      RCALL	_iic_init
(0224)   iic_start();
    02B4 DF07      RCALL	_iic_start
(0225)   if(iic_send(0xc0))
    02B5 EC00      LDI	R16,0xC0
    02B6 DF21      RCALL	_iic_send
    02B7 2300      TST	R16
    02B8 F099      BEQ	0x02CC
(0226)   {
(0227)     if(iic_send(db1) && iic_send(db2) && iic_send(PB) && iic_send(0x00))
    02B9 2D0A      MOV	R16,R10
    02BA DF1D      RCALL	_iic_send
    02BB 2300      TST	R16
    02BC F079      BEQ	0x02CC
    02BD 2F06      MOV	R16,R22
    02BE DF19      RCALL	_iic_send
    02BF 2300      TST	R16
    02C0 F059      BEQ	0x02CC
    02C1 2F04      MOV	R16,R20
    02C2 DF15      RCALL	_iic_send
    02C3 2300      TST	R16
    02C4 F039      BEQ	0x02CC
    02C5 2700      CLR	R16
    02C6 DF11      RCALL	_iic_send
    02C7 2300      TST	R16
    02C8 F019      BEQ	0x02CC
(0228) 	{
(0229) 	  iic_stop();
    02C9 DF43      RCALL	_iic_stop
(0230) 	  return FI1256read();
    02CA DF9F      RCALL	_FI1256read
    02CB C002      RJMP	0x02CE
(0231) 	}
(0232)   }
(0233)   iic_stop();
    02CC DF40      RCALL	_iic_stop
(0234)   return 0;
    02CD 2700      CLR	R16
    02CE DAED      RCALL	pop_gset4
    02CF 9508      RET
_video_choose:
  x                    --> R16
    02D0 DAEF      RCALL	push_gset1
(0235) }
(0236) /*========================
(0237) 视频源选择
(0238) ========================*/
(0239) void video_choose(unsigned char x)
(0240) {
(0241)   switch(x)
    02D1 2F40      MOV	R20,R16
    02D2 DC14      RCALL	0x0EE7
    02D3 F049      BEQ	0x02DD
    02D4 3042      CPI	R20,2
    02D5 E0E0      LDI	R30,0
    02D6 075E      CPC	R21,R30
    02D7 F051      BEQ	0x02E2
    02D8 3043      CPI	R20,3
    02D9 E0E0      LDI	R30,0
    02DA 075E      CPC	R21,R30
    02DB F059      BEQ	0x02E7
    02DC C00E      RJMP	0x02EB
(0242)   {
(0243)   case 1:  //TV
(0244)     PORTD|=PAV|PBACK;
    02DD B382      IN	R24,0x12
    02DE 6680      ORI	R24,0x60
    02DF BB82      OUT	0x12,R24
(0245) 	PORTD&=~PTV;
    02E0 9897      CBI	0x12,7
(0246) 	break;
    02E1 C009      RJMP	0x02EB
(0247)   case 2:  //AV
(0248)     PORTD|=PTV|PBACK;
    02E2 B382      IN	R24,0x12
    02E3 6A80      ORI	R24,0xA0
    02E4 BB82      OUT	0x12,R24
(0249) 	PORTD&=~PAV;
    02E5 9896      CBI	0x12,6
(0250) 	break;
    02E6 C004      RJMP	0x02EB
(0251)   case 3:  //BACK
(0252)     PORTD|=PAV|PTV;
    02E7 B382      IN	R24,0x12
    02E8 6C80      ORI	R24,0xC0
    02E9 BB82      OUT	0x12,R24
(0253) 	PORTD&=~PBACK;
    02EA 9895      CBI	0x12,5
(0254) 	break;
(0255)   }
(0256) }
    02EB DAD7      RCALL	pop_gset1
    02EC 9508      RET
_screen_mode:
  x                    --> R16
    02ED DAD2      RCALL	push_gset1
(0257) /*========================
(0258) 模式
(0259) ========================*/
(0260) void screen_mode(unsigned char x)
(0261) {
(0262)   switch(x)
    02EE 2F40      MOV	R20,R16
    02EF 2755      CLR	R21
    02F0 3040      CPI	R20,0
    02F1 0745      CPC	R20,R21
    02F2 F049      BEQ	0x02FC
    02F3 3041      CPI	R20,1
    02F4 E0E0      LDI	R30,0
    02F5 075E      CPC	R21,R30
    02F6 F049      BEQ	0x0300
    02F7 3042      CPI	R20,2
    02F8 E0E0      LDI	R30,0
    02F9 075E      CPC	R21,R30
    02FA F049      BEQ	0x0304
    02FB C00B      RJMP	0x0307
(0263)   {
(0264)   case MD1:  //16:9
(0265)     PORTC&=~PMD2;
    02FC 98AB      CBI	0x15,3
(0266)     PORTC&=~PMD1;
    02FD 98AA      CBI	0x15,2
(0267) 	PORTD&=~PMD3;
    02FE 9892      CBI	0x12,2
(0268)     break;
    02FF C007      RJMP	0x0307
(0269)   case MD2:  //4:3 适应高
(0270)     PORTC|=PMD1;
    0300 9AAA      SBI	0x15,2
(0271)     PORTC&=~PMD2;
    0301 98AB      CBI	0x15,3
(0272) 	PORTD&=~PMD3;
    0302 9892      CBI	0x12,2
(0273)     break;
    0303 C003      RJMP	0x0307
(0274)   case MD3:  //4:3 适应宽
(0275)     PORTC&=~PMD1;
    0304 98AA      CBI	0x15,2
(0276)     PORTC&=~PMD2;
    0305 98AB      CBI	0x15,3
(0277) 	PORTD|=PMD3;
    0306 9A92      SBI	0x12,2
(0278)     break;
(0279)   }
(0280) }
    0307 DABB      RCALL	pop_gset1
    0308 9508      RET
(0281) /*========================
(0282) PAL/NTSC
(0283) ========================*/
(0284) void pal_ntsc(unsigned char x)
(0285) {
(0286)   if(x==NTSC)
_pal_ntsc:
  x                    --> R16
    0309 2300      TST	R16
    030A F411      BNE	0x030D
(0287)   {
(0288)     PORTB|=PNPC;
    030B 9AC3      SBI	0x18,3
(0289)   }
    030C C001      RJMP	0x030E
(0290)   else
(0291)   {
(0292)     PORTB&=~PNPC;
    030D 98C3      CBI	0x18,3
(0293)   }
(0294) }
    030E 9508      RET
(0295) /*========================
(0296) 倒置
(0297) ========================*/
(0298) void screen_inversion(unsigned char x)
(0299) {
(0300)   if(x==ON)
_screen_inversion:
  x                    --> R16
    030F 3001      CPI	R16,1
    0310 F411      BNE	0x0313
(0301)   {
(0302)     PORTB&=~PU_D;
    0311 98C2      CBI	0x18,2
(0303)   }
    0312 C001      RJMP	0x0314
(0304)   else
(0305)   {
(0306)     PORTB|=PU_D;
    0313 9AC2      SBI	0x18,2
(0307)   }
(0308) }
    0314 9508      RET
(0309) /*========================
(0310) 镜像
(0311) ========================*/
(0312) void screen_mirror(unsigned char x)
(0313) {
(0314)   if(x==ON)
_screen_mirror:
  x                    --> R16
    0315 3001      CPI	R16,1
    0316 F441      BNE	0x031F
(0315)   {
(0316)     if(user_config[inversion]==ON)
    0317 9180006C  LDS	R24,0x6C
    0319 3081      CPI	R24,1
    031A F411      BNE	0x031D
(0317)       PORTB|=PL_R;
    031B 9AC1      SBI	0x18,1
    031C C009      RJMP	0x0326

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -