main.lst
来自「宏芯T102芯片驱动(51单片机作主控)」· LST 代码 · 共 346 行
LST
346 行
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\MAIN.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\MAIN.c BROWSE INCDIR(.\include\;.\source\) DEBUG OBJECTEXTEND PRINT(
-.\MAIN.lst) OBJECT(.\obj\MAIN.obj)
stmt level source
1 //---------------------------------------------------------------------------
2 // Terawins Inc. Company Confidential Strictly Private
3 //
4 // $Archive: Main.c $
5 // $Revision: 1.01 $
6 // $Author: JasonGuo $
7 // $Date: 2004/05/06 $
8 //
9 // --------------------------------------------------------------------------
10 // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
11 // --------------------------------------------------------------------------
12 // Copyright 2004 (c) Terawins Inc.
13 //
14 // This is an unpublished work.
15 // --------------------------------------------------------------------------
16
17 #include "reg51.h"
18 #include "math.h"
19 #include "common.h"
20 #include "system.h"
21 #include "struct.h"
22 #include "TW101Reg.h"
23 #include "twowire.h"
24 #include "gamma.h"
25 #include "filter.h"
26 #include "keypad.h"
27 #include "Nvram.h"
28 #include "Video.h"
29 #include "T101_Util.h"
30 #include "remote.h"
31 #include "osddraw.h"
32 #include "tuner.h"
33
34 //****************************************************************************
35 // Private Function Prototypes
36 //****************************************************************************
37 void Initial (void);
38 void SysInit (void);
39
40 void SysInterruptEnable (void);
41 void ClosePanel (void);
42 void OpenPanel (void);
43 void BKPower (void);
44 void PowerManage (void);
45 //void Exchange_PAL_NTSC (void); //Kuo
46
47
48 #ifdef TIMER0
49 void Timer0Reset(void);
50 void Timer0Start(void);
51 void Timer0Stop(void);
52 #endif
53
54 uCHAR bdata Flag1;
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 2
55 uCHAR bdata Flag2;
56 uCHAR bdata Flag3;
57
58 uCHAR idata m_cOSDEvent;
59 uCHAR idata m_cOSDFunc;
60 uCHAR idata m_cSource;
61 uCHAR ir_data;
62 uCHAR m_cFactryCnt;
63 //uCHAR idata m_cStandard=4;//PAL
64 uCHAR idata m_cStandard=0;//NTSC
65 uCHAR idata m_cScaleratio=ScaleFULL;
66 uWORD m_wHRes;
67 uWORD m_wVRes;
68 uWORD idata m_wVTotal;
69
70 #ifdef TV
71 uCHAR idata m_cTV_Num;
72 uCHAR m_cSoundSystem=PAL_I;
73 #endif
74
75 sbit m_bPanelClose = Flag1 ^ 0;
76 sbit m_bBKPowerOn = Flag1 ^ 1;
77 sbit m_bKyPowerOn = Flag1 ^ 2;
78 sbit m_bChipPowerOn = Flag1 ^ 3;
79 sbit m_bTimer0Overflow = Flag1 ^ 4;
80 sbit m_bOSDEnable = Flag1 ^ 5;
81 sbit ir_enable = Flag1 ^ 6;
82 sbit m_bKyblocked = Flag1 ^ 7;
83 sbit m_bFactryMode = Flag2 ^ 0;
84 sbit m_bFactryReady = Flag2 ^ 1;
85 sbit m_bRelease = Flag2 ^ 2;
86 sbit m_bAir_Cable = Flag2 ^ 3;
87 sbit m_bTV_Num_Bits = Flag2 ^ 4;
88 sbit m_bTV_Skip = Flag2 ^ 5;
89 uWORD idata m_wBuff[3];
90 uCHAR idata m_cBuff[5];
91 uDWORD m_dwBuff[2];
92 //----------------------------------------------------------------------------
93 //Main Function
94 //----------------------------------------------------------------------------
95 void main(void)
96 {
97 1 Initial();
98 1 SysInterruptEnable();
99 1 //OSD Font Initial
100 1 OSDInit();
101 1
102 1 //上电开机流程
103 1 m_cSource = I2CReadByte(EEPVIDEOBLOCK, idVIDEO_SOURCE_INDEX)&0x0f;
104 1 if((m_cSource==0)||(m_cSource>=isrc_end)) m_cSource=1;
105 1 #ifdef TV
106 1 SetTuner(TVSetChannel(I2CReadByte(EEPVIDEOBLOCK, idTVCHANNEL_INDEX)-1));
107 1 #endif
108 1 SourceSelect();
109 1 OSDShowSource();
110 1 OpenPanel();
111 1
112 1
113 1 //Main loop
114 1 while(1)
115 1 {
116 2 //detect key press
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 3
117 2 kyKeypad();
118 2 //handle ir event
119 2 if(ir_enable)
120 2 {
121 3 RemoteEvent();
122 3 ir_enable=0;
123 3 }
124 2 else if(!EX1)
125 2 {
126 3 EX1=1;
127 3 ir_data=0;
128 3 }
129 2 //OSD Timeout
130 2 if(m_bTimer0Overflow)
131 2 {
132 3 if(m_bOSDEnable)
133 3 OSDExit();
134 3 }
135 2 // Detect_NTSCPAL();
136 2
137 2 }
138 1 }
139 //**************************************************************************
140 //Power ON/OFF BackLight ON/OFF
141 //**************************************************************************
142
143
144
145 void ClosePanel(void)
146 {
147 1 m_bPanelClose = 1;
148 1 I2CWriteByte(TW101, 0xC2, I2CReadByte(TW101, 0xC2)|(PSYNC_STR|IGNORE_VSYNC));
149 1 I2CWriteByte(TW101, PATTERN_CTRL, 0x87);//I2CReadByte(TW101, PATTERN_CTRL)|0x80); //Enable Frame Backgro
-und Color
150 1 }
151
152 void OpenPanel(void)
153 {
154 1 m_bPanelClose = 0;
155 1 I2CWriteByte(TW101, 0xC2, I2CReadByte(TW101, 0xC2)&~(PSYNC_STR|IGNORE_VSYNC));
156 1 I2CWriteByte(TW101, PATTERN_CTRL, I2CReadByte(TW101, PATTERN_CTRL)&~0x80); //Enable Frame Background Colo
-r
157 1 twdDelay(100);
158 1 }
159 void BKPower(void)
160 {
161 1 if(m_bBKPowerOn)
162 1 {
163 2 BKLIGHT_EN = 1; // BKLIGHT shut down
164 2 twdDelay(100);
165 2 m_bBKPowerOn = 0;
166 2 }
167 1 else
168 1 {
169 2 twdDelay(100);
170 2 BKLIGHT_EN = 0; // BKLIGHT power on
171 2 m_bBKPowerOn = 1;
172 2 #ifdef LEDCONTROL
m_bLedOn=1;
#endif
175 2
176 2 }
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 4
177 1 }
178
179 void PowerManage(void)
180 {
181 1 if(m_bKyPowerOn) //Power on
182 1 {
183 2 LED_RED = 1; //Turn Off
184 2 LED_GREEN = 0; //Turn On
185 2 I2CWriteByte(TW101, 0xE0, I2CReadByte(TW101, 0xE0)|TPDB);
186 2 m_cOSDEvent=0;
187 2 m_cOSDFunc=0;
188 2 //When power on chip, force to reset chip
189 2 // m_bForceReset=1;
190 2 m_bChipPowerOn=1;
191 2 //m_cSource=0x0F;
192 2 twdDelay(100);
193 2 OpenPanel();
194 2 //AUDIO_STANBY=0; //Audio on
195 2 }
196 1 else //Forced Power Off
197 1 {
198 2 if(m_bChipPowerOn)
199 2 {
200 3 LED_RED =0; //Turn On
201 3 LED_GREEN = 1; //Turn Off
202 3 twdDelay(100);
203 3 OSDExit();
204 3 if(m_bBKPowerOn)
205 3 BKPower();
206 3 ClosePanel();
207 3 twdDelay(200);
208 3 I2CWriteByte(TW101, 0xE0, I2CReadByte(TW101, 0xE0)&~TPDB|PDMD);
209 3 m_bChipPowerOn=0;
210 3 }
211 2 }
212 1 }
213
214 //**************************************************************************
215 //系统初始化函数
216 //**************************************************************************
217 void Initial(void)
218 {
219 1 extern EEPVIDEO idata EepVideo;
220 1 SysInit();
221 1 #ifdef TCON
222 1 TconInit();
223 1 #endif
224 1 #ifdef RSDS
RsdsInit();
#endif
227 1 //Ruby modify 2005-06-07
228 1 ClosePanel();
229 1 OSDDisable();
230 1 LoadGammaTable(0);
231 1 #ifdef T100
// LoadFilter(3); //Ruby 2004-10-07
EepVideo.cSharp=3;
LoadFilter(EepVideo.cSharp);
// LoadFilter(3); // For FAXCONN only Because their OSD did not have sharpness parameter
#else
237 1 // EepVideo.cSharp=4;
238 1 LoadFilter(0);
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 5
239 1 #endif
240 1 OSDLogo();
241 1 }
242
243 void SysInit(void)
244 {
245 1 P0=0xff;
246 1 P1=0xff;
247 1 P2=0xff;
248 1 P3=0xff;
249 1 //Chip Reset
250 1 CHIP_RESET = 0;
251 1 twdDelay(100);
252 1 CHIP_RESET = 1;
253 1 twdDelay(50);
254 1 //8051Register Set
255 1 IE = 0; // disable all interrupt
256 1 TMOD = 0x11; // Timer1 Mode 1, Timer0 Mode 1;
257 1 //TMOD = 0x01; // Timer0 Mode 1;
258 1 EX0 = 0; // disable external interrupt 0, IE[0]
259 1 EX1 = 0;
260 1 //ET0 = 1; // enable bTimer 0
261 1 //IT0 = 1; // falling endge generate interrupt, TCON[0]
262 1 INT0 = 1;
263 1 IT1 = 1; // falling endge generate interrupt, TCON[0]
264 1 INT1 = 1;
265 1
266 1 twdDelay(10);
267 1 if(!m_bPanelClose)
268 1 ClosePanel();
269 1
270 1 InitTW101();
271 1 #ifdef NVRAM
272 1 EEPLoadPubData();
273 1 #else
OSDFactryReset();
OSDResetPubData();
//OSDResetVideoData();
OSDSetValues();
#endif
279 1 kyKeypadInit();
280 1
281 1 m_bPanelClose = 0;
282 1 m_bBKPowerOn=0;
283 1 m_bKyPowerOn=1;
284 1 m_bChipPowerOn=1;
285 1 //m_bAir_Cable=1;
286 1
287 1 LED_GREEN=0;
288 1 //Ruby add
289 1 IRScaleratioCtrl();
290 1
291 1 }
292 void SysInterruptEnable(void)
293 {
294 1 #ifdef TIMER1
295 1 // Timer1Reset();
296 1 ET1 = 1; // Enable Timer1 interrupt
297 1 TR1=0;
298 1 #endif
299 1 #ifdef TIMER0
300 1 Timer0Reset();
C51 COMPILER V7.06 MAIN 12/28/2004 10:14:02 PAGE 6
301 1 ET0 = 1; // Enable Timer0 interrupt
302 1 TR0 = 0;
303 1 #endif
304 1 #ifdef INTERRUPT1
305 1 EX1 = 1; // Enable INT1 (IR)
306 1 #endif
307 1 EA = 1; // Enable Interrupt
308 1 }
309
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 412 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
IDATA SIZE = 19 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?