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

📄 tft_7.lst

📁 7"车载液晶电视机 控制程序源码 WinRar3.2压缩 MCU ATMega8
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    019C E5CF      LDI	R28,0x5F
    019D E0D4      LDI	R29,4
    019E BFCD      OUT	0x3D,R28
    019F BFDE      OUT	0x3E,R29
    01A0 51C0      SUBI	R28,0x10
    01A1 40D0      SBCI	R29,0
    01A2 EA0A      LDI	R16,0xAA
    01A3 8308      STD	Y+0,R16
    01A4 2400      CLR	R0
    01A5 E5E3      LDI	R30,0x53
    01A6 E0F2      LDI	R31,2
    01A7 E013      LDI	R17,3
    01A8 33E1      CPI	R30,0x31
    01A9 07F1      CPC	R31,R17
    01AA F011      BEQ	0x01AD
    01AB 9201      ST	R0,Z+
    01AC CFFB      RJMP	0x01A8
    01AD 8300      STD	Z+0,R16
    01AE E4E5      LDI	R30,0x45
    01AF E0F1      LDI	R31,1
    01B0 E6A0      LDI	R26,0x60
    01B1 E0B0      LDI	R27,0
    01B2 E013      LDI	R17,3
    01B3 33E8      CPI	R30,0x38
    01B4 07F1      CPC	R31,R17
    01B5 F021      BEQ	0x01BA
    01B6 95C8      LPM
    01B7 9631      ADIW	R30,1
    01B8 920D      ST	R0,X+
    01B9 CFF9      RJMP	0x01B3
    01BA D635      RCALL	_main
_exit:
    01BB CFFF      RJMP	_exit
FILE: C:\_项目\7寸液晶电视\软件\hard_iic.h
(0001) /*====================
(0002) ====================*/
(0003) #define ERROR_ADD_UP 6000
(0004) unsigned char iic_start(void)
(0005) {
(0006)   unsigned int i=0;
_iic_start:
  i                    --> R16
    01BC 2700      CLR	R16
    01BD 2711      CLR	R17
(0007)   TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    01BE EA84      LDI	R24,0xA4
    01BF BF86      OUT	0x36,R24
    01C0 C008      RJMP	0x01C9
(0008)   while (!(TWCR & (1<<TWINT)))
(0009)   {
(0010)     i++;
    01C1 5F0F      SUBI	R16,0xFF
    01C2 4F1F      SBCI	R17,0xFF
(0011) 	if(i==ERROR_ADD_UP)
    01C3 3700      CPI	R16,0x70
    01C4 E1E7      LDI	R30,0x17
    01C5 071E      CPC	R17,R30
    01C6 F411      BNE	0x01C9
(0012) 	  return 0;
    01C7 2700      CLR	R16
    01C8 C00E      RJMP	0x01D7
    01C9 B626      IN	R2,0x36
    01CA FE27      SBRS	R2,7
    01CB CFF5      RJMP	0x01C1
(0013)   }
(0014)   if ((TWSR & 0xF8) == 0x08 || (TWSR & 0xF8) == 0x10)
    01CC B181      IN	R24,0x01
    01CD 7F88      ANDI	R24,0xF8
    01CE 3088      CPI	R24,0x8
    01CF F021      BEQ	0x01D4
    01D0 B181      IN	R24,0x01
    01D1 7F88      ANDI	R24,0xF8
    01D2 3180      CPI	R24,0x10
    01D3 F411      BNE	0x01D6
(0015)     return 1;
    01D4 E001      LDI	R16,1
    01D5 C001      RJMP	0x01D7
(0016)   return 0;
    01D6 2700      CLR	R16
    01D7 9508      RET
_iic_send:
  i                    --> R20
  x                    --> R16
    01D8 DBE7      RCALL	push_gset1
(0017) }
(0018) /////////////////////
(0019) unsigned char iic_send(unsigned char x)
(0020) {
(0021)   unsigned int i=0;
    01D9 2744      CLR	R20
    01DA 2755      CLR	R21
(0022)   TWDR = x;
    01DB B903      OUT	0x03,R16
(0023)   TWCR = (1<<TWINT) | (1<<TWEN);
    01DC E884      LDI	R24,0x84
    01DD BF86      OUT	0x36,R24
    01DE C008      RJMP	0x01E7
(0024)   while (!(TWCR & (1<<TWINT)))
(0025)   {
(0026)     i++;
    01DF 5F4F      SUBI	R20,0xFF
    01E0 4F5F      SBCI	R21,0xFF
(0027) 	if(i==ERROR_ADD_UP)
    01E1 3740      CPI	R20,0x70
    01E2 E1E7      LDI	R30,0x17
    01E3 075E      CPC	R21,R30
    01E4 F411      BNE	0x01E7
(0028) 	  return 0;
    01E5 2700      CLR	R16
    01E6 C012      RJMP	0x01F9
    01E7 B626      IN	R2,0x36
    01E8 FE27      SBRS	R2,7
    01E9 CFF5      RJMP	0x01DF
(0029)   }
(0030)   if ((TWSR & 0xF8) == 0x18 || (TWSR & 0xF8) == 0x28 || (TWSR & 0xF8) == 0x40)
    01EA B181      IN	R24,0x01
    01EB 7F88      ANDI	R24,0xF8
    01EC 3188      CPI	R24,0x18
    01ED F041      BEQ	0x01F6
    01EE B181      IN	R24,0x01
    01EF 7F88      ANDI	R24,0xF8
    01F0 3288      CPI	R24,0x28
    01F1 F021      BEQ	0x01F6
    01F2 B181      IN	R24,0x01
    01F3 7F88      ANDI	R24,0xF8
    01F4 3480      CPI	R24,0x40
    01F5 F411      BNE	0x01F8
(0031)     return 1;
    01F6 E001      LDI	R16,1
    01F7 C001      RJMP	0x01F9
(0032)   return 0;
    01F8 2700      CLR	R16
    01F9 DBC9      RCALL	pop_gset1
    01FA 9508      RET
(0033) //  return TWSR & 0xf8;
(0034) }
(0035) //////////////////////////
(0036) unsigned char iic_receive(void)
(0037) {
(0038)   unsigned int i=0;
_iic_receive:
  i                    --> R16
    01FB 2700      CLR	R16
    01FC 2711      CLR	R17
(0039)   TWCR = (1<<TWINT)|(1<<TWEN);
    01FD E884      LDI	R24,0x84
    01FE BF86      OUT	0x36,R24
    01FF C008      RJMP	0x0208
(0040)   while (!(TWCR & (1<<TWINT)))
(0041)   {
(0042)     i++;
    0200 5F0F      SUBI	R16,0xFF
    0201 4F1F      SBCI	R17,0xFF
(0043) 	if(i==ERROR_ADD_UP)
    0202 3700      CPI	R16,0x70
    0203 E1E7      LDI	R30,0x17
    0204 071E      CPC	R17,R30
    0205 F411      BNE	0x0208
(0044) 	  return 0;
    0206 2700      CLR	R16
    0207 C004      RJMP	0x020C
    0208 B626      IN	R2,0x36
    0209 FE27      SBRS	R2,7
    020A CFF5      RJMP	0x0200
(0045)   }
(0046)   return TWDR;
    020B B103      IN	R16,0x03
    020C 9508      RET
(0047) }
(0048) /////////////////////
(0049) void iic_stop(void)
(0050) {
(0051) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
_iic_stop:
    020D E984      LDI	R24,0x94
    020E BF86      OUT	0x36,R24
(0052) }
    020F 9508      RET
(0053) /////////////////////
(0054) void iic_init(void)
(0055) {
(0056) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
_iic_init:
    0210 E984      LDI	R24,0x94
    0211 BF86      OUT	0x36,R24
(0057) }
    0212 9508      RET
_IICwrite:
  tmp_data             --> Y+4
  tmp_address          --> R20
  drive                --> R22
    0213 DBC3      RCALL	push_gset2
    0214 2F42      MOV	R20,R18
    0215 2F60      MOV	R22,R16
(0058) 
(0059) /*=========================================
(0060) ************IIC写*********************
(0061) =========================================*/
(0062) unsigned char IICwrite(unsigned char drive,unsigned char tmp_address,unsigned char tmp_data)
(0063) {
(0064)   iic_init();
    0216 DFF9      RCALL	_iic_init
(0065)   if(iic_start()==0)
    0217 DFA4      RCALL	_iic_start
    0218 2300      TST	R16
    0219 F411      BNE	0x021C
(0066)     return 0;
    021A 2700      CLR	R16
    021B C014      RJMP	0x0230
(0067)   if(iic_send(drive)==0)
    021C 2F06      MOV	R16,R22
    021D DFBA      RCALL	_iic_send
    021E 2300      TST	R16
    021F F411      BNE	0x0222
(0068)     return 0;
    0220 2700      CLR	R16
    0221 C00E      RJMP	0x0230
(0069)   if(iic_send(tmp_address)==0)
    0222 2F04      MOV	R16,R20
    0223 DFB4      RCALL	_iic_send
    0224 2300      TST	R16
    0225 F411      BNE	0x0228
(0070)     return 0;
    0226 2700      CLR	R16
    0227 C008      RJMP	0x0230
(0071)   if(iic_send(tmp_data)==0)
    0228 810C      LDD	R16,Y+4
    0229 DFAE      RCALL	_iic_send
    022A 2300      TST	R16
    022B F411      BNE	0x022E
(0072)     return 0;
    022C 2700      CLR	R16
    022D C002      RJMP	0x0230
(0073)   iic_stop();
    022E DFDE      RCALL	_iic_stop
(0074)   return 1;
    022F E001      LDI	R16,1
    0230 DB87      RCALL	pop_gset2
    0231 9508      RET
_IICread:
  tmp                  --> R20
  tmp_address          --> R22
  drive                --> R20
    0232 DBA4      RCALL	push_gset2
    0233 2F62      MOV	R22,R18
    0234 2F40      MOV	R20,R16
(0075) }
(0076) /*=========================================
(0077) ************IIC读*********************
(0078) =========================================*/
(0079) unsigned char IICread(unsigned char drive,unsigned char tmp_address)
(0080) {
(0081)   register unsigned char tmp;
(0082)   iic_stop();
    0235 DFD7      RCALL	_iic_stop
(0083)   if(iic_start()==0)
    0236 DF85      RCALL	_iic_start
    0237 2300      TST	R16
    0238 F411      BNE	0x023B
(0084)     return 0;
    0239 2700      CLR	R16
    023A C01C      RJMP	0x0257
(0085)   if(iic_send(drive)==0)
    023B 2F04      MOV	R16,R20
    023C DF9B      RCALL	_iic_send
    023D 2300      TST	R16
    023E F411      BNE	0x0241
(0086)     return 0;
    023F 2700      CLR	R16
    0240 C016      RJMP	0x0257
(0087)   if(iic_send(tmp_address)==0)
    0241 2F06      MOV	R16,R22
    0242 DF95      RCALL	_iic_send
    0243 2300      TST	R16
    0244 F411      BNE	0x0247
(0088)     return 0;
    0245 2700      CLR	R16
    0246 C010      RJMP	0x0257
(0089)   if(iic_start()==0)
    0247 DF74      RCALL	_iic_start
    0248 2300      TST	R16
    0249 F411      BNE	0x024C
(0090)     return 0;
    024A 2700      CLR	R16
    024B C00B      RJMP	0x0257
(0091)   if(iic_send(drive|0x01)==0)
    024C 2F04      MOV	R16,R20
    024D 6001      ORI	R16,1
    024E DF89      RCALL	_iic_send
    024F 2300      TST	R16
    0250 F411      BNE	0x0253
(0092)     return 0;
    0251 2700      CLR	R16
    0252 C004      RJMP	0x0257
(0093)   tmp=iic_receive();
    0253 DFA7      RCALL	_iic_receive
    0254 2F40      MOV	R20,R16
(0094)   iic_stop();
    0255 DFB7      RCALL	_iic_stop
(0095)   return tmp;
    0256 2F04      MOV	R16,R20
    0257 DB60      RCALL	pop_gset2
    0258 9508      RET
_write_user_char:
  j                    --> R20
    0259 DB66      RCALL	push_gset1
FILE: C:\_项目\7寸液晶电视\软件\tft_7.h
(0001) /*=======================
(0002) 文件名:TFT.h
(0003) ========================*/
(0004) #include"hard_iic.h"
(0005) 
(0006) #define MAX     63    //调整的最大值
(0007) #define PLEDR   0x01  //PORTC  红色发光管
(0008) #define PVOL    0x20  //PORTB  音量控制
(0009) #define PNPC    0x08  //PORTB  制式
(0010) #define VSYNC   0x10  //PORTB  制式场频
(0011) #define NTSC    0     //PORTB  制式
(0012) #define PAL     1     //PORTB  制式
(0013) #define PBRI    0x80  //PORTB  亮度
(0014) #define PCON    0x10  //PORTD  对比度
(0015) #define PCOL    0x08  //PORTD  色饱和度
(0016) #define PHUE    0x40  //PORTB  色调
(0017) #define PTV     0x80  //PORTD  电视
(0018) #define TV      1     //PORTD  电视
(0019) #define PAV     0x40  //PORTD  外部视频
(0020) #define AV      2     //PORTD  外部视频
(0021) #define PBACK   0x20  //PORTD  后视
(0022) #define FPBACK  0x01  //PORTB  后视
(0023) #define BACK    3     //PORTD  后视
(0024) #define PMD1    0x04  //PORTC  电视
(0025) #define MD1     0     //PORTC  电视
(0026) #define PMD2    0x08  //PORTC  外部视频
(0027) #define MD2     1     //PORTC  外部视频
(0028) #define PMD3    0x04  //PORTD  后视
(0029) #define MD3     2     //PORTD  后视
(0030) #define PU_D    0x04  //PORTB  上下
(0031) #define PL_R    0x02  //PORTB  左右
(0032) #define OFF     0
(0033) #define ON      1
(0034) #define LEFT    0
(0035) #define RIGHT   1
(0036) #define UP      0
(0037) #define DOWN    1
(0038) 
(0039) 
(0040) #define Frequency_low  0x04e0                 //最低频率8
(0041) #define Frequency_high 0x3900                 //最高频率
(0042) #define OSD_TIME    500                       //OSD显示时间
(0043) 
(0044) #define WHITE   7
(0045) #define YELLOW  5
(0046) #define CYAN    3
(0047) #define GREEN   1
(0048) #define PURPLE  6
(0049) #define RED     4
(0050) #define BLUE    2
(0051) #define BLACK   0
(0052) 
(0053) #define KMENU    100
(0054) #define KUP      101
(0055) #define KDOWN    102
(0056) #define KLEFT    103
(0057) #define KRIGHT   104
(0058) #define KAV      105
(0059) #define KBACK    106
(0060) #define KRESERVE 107
(0061) 
(0062) #define DIS_VIDEO  1
(0063) #define DIS_MENU1  2
(0064) #define DIS_MENU2  3
(0065) #define DIS_VOLUME 4
(0066) 
(0067) #define VOLUME           20
(0068) #define CHANNEL           1
(0069) #define CHANNEL_AMOUNT   99
(0070) #define VIDEO_INPUT      TV
(0071) #define INVERSION        ON
(0072) 
(0073) #define volume      1
(0074) #define channel     2
(0075) #define ch_max      3
(0076) #define video_input 4
(0077) #define inversion   5
(0078) 
(0079) unsigned char FOSD=0;          //OSD指针
(0080) unsigned char volume_register;
(0081) unsigned char fkey=0;
(0082) unsigned char fcontinuous=0;
(0083) 
(0084) unsigned long int v_sync_count=0;
(0085) 
(0086) unsigned char user_config[]={
(0087) 0xaa,VOLUME,CHANNEL,CHANNEL_AMOUNT,VIDEO_INPUT,INVERSION};
(0088) 
(0089) unsigned int OSD_time=OSD_TIME;
(0090) 
(0091) unsigned char user_adjust[4][6]={
(0092) {30,30,30,33, 0, MD1},//机器
(0093) {23,50,40,33, 0, MD1},//电视
(0094) {23,50,40,33, 0, MD1},//视频
(0095) {23,50,40,33, 0, MD1},//后视
(0096) };
(0097) 
(0098) unsigned int channel_frequency[110];
(0099) 
(0100) unsigned int c_channel[]   ={0x07c,0x168,0x000};  //频道
(0101) unsigned int c_volume[]    ={0x062,0x000,0x063};  //音量
(0102) unsigned int c_tv[]        ={0x06a,0x000,0x07b};  //电视
(0103) unsigned int c_video[]     ={0x07b,0x000,0x07c};  //视频
(0104) unsigned int c_backsight[] ={0x169,0x000,0x07b};  //后视
(0105) unsigned int c_bright[]    ={0x03e,0x000,0x03f};  //亮度
(0106) unsigned int c_contrast[]  ={0x040,0x041,0x03f};  //对比度
(0107) unsigned int c_color[]     ={0x05e,0x000,0x03f};  //色度
(0108) unsigned int c_hue[]       ={0x05e,0x000,0x053};  //色调
(0109) unsigned int c_mirror[]    ={0x16a,0x000,0x16b};  //镜象

⌨️ 快捷键说明

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