osdctrl.lst
来自「采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序」· LST 代码 · 共 1,185 行 · 第 1/5 页
LST
1,185 行
C51 COMPILER V6.23a OSDCTRL 09/10/2004 16:09:03 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE OSDCTRL
OBJECT MODULE PLACED IN OSDCTRL.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE OSDCTRL.C OPTIMIZE(6,SIZE) ORDER DEFINE(DEBUGMSG=0,DEBUGTOOL=0) DEBUG OBJEC
-TEXTEND CODE SYMBOLS
stmt level source
1 /************************************************
2 * *
3 * OSDCTRL.C: OSD control routines. *
4 * *
5 *************************************************/
6 #include <reg51.h>
7 #include <math.h>
8 #include "mascot.h"
9 #include "OSD.h"
10 #include "osd_data.h"
11 #include "prg_font.h"
12 #include "global.h"
13
14
15
16
17
18 /************************************************
19 * intialize OSD registers *
20 *************************************************/
21 void osd_init(void)
22 {
23 1
24 1 statusBefore = 0x1F;
25 1
26 1 /* initialize OSD control regs */
27 1 OSDRegDataOut(0x00, osdInitData, sizeof(osdInitData));
28 1
29 1 /* initialize palette */
30 1 PortDataOut(0x00, PORT_PALETTE, PaletteData, sizeof(PaletteData) / sizeof(char));
31 1
32 1
33 1
34 1
35 1 /* Define Color Key PaletteData No.4*/
36 1 RegByteOut(0xC0, 0xBC); // Select OSD Registers
37 1 RegBitOut(0x80, 0x00, 0x00); //disable transparency color
38 1 RegByteOut(0x83, 0xF8); //OR83 - Color Key B[7:3]
39 1 RegByteOut(0x84, 0xF8); //OR84 - Color Key G[7:3]
40 1 RegByteOut(0x85, 0x00); //OR85 - Color Key R[7:3]
41 1 RegBitOut(0x75, 0x00, 0x20); //OR80 - P-Font as Color font
42 1 RegByteOut(0xC0, 0x3C); // Select Normal Registers
43 1
44 1
45 1 /* check ID */
46 1 miscDelay(50);
47 1 eepDataIn(EEPHEADSTART, buff, 4);
48 1
49 1 #if DEBUGMSG
printf("%c %c %c %c\n",buff[0],buff[1],buff[2],buff[3]);
#endif
52 1
53 1
54 1
C51 COMPILER V6.23a OSDCTRL 09/10/2004 16:09:03 PAGE 2
55 1 if( (buff[0]==osdID[0]) && (buff[1]==osdID[1]) && (buff[2]==osdID[2]) && (buff[3]==osdID[3]) )
56 1 {
57 2 /* load OSD data from EEPROM */
58 2 eepDataIn(EEPDATASTART, (unsigned char *)&eepData, EEPDATASIZE);
59 2 }
60 1 else if( buff[0]==0xff && buff[1]==0xff && buff[2]==0xff && buff[3]==0xff ) //20030221
61 1 {
62 2 /* reset eeprom */
63 2 ResetEEPROM(RSTCOLOR+RSTEEP+RSTUSER+RSTPOT);
64 2 eepData.colorPos = COLOR_USER;
65 2 eepDataOut(EEPDATASTART+(&eepData.colorPos-&eepData),(unsigned char *)&eepData.colorPos, 1);
-
66 2 }
67 1 else
68 1 {
69 2 /* reset eeprom */
70 2 ResetEEPROM(RSTEEP+RSTUSER+RSTCOLOR);
71 2 }
72 1
73 1 setColorRGB(EEP_DATA);
74 1 setEepData();
75 1
76 1 }
77
78
79 /************************************************
80 * create the first main menu pattern *
81 *************************************************/
82 void informationMenu(void)
83 {
84 1
85 1 if (FactoryFlag)
86 1 {
87 2 // PortDataOut((MainMenuCols+1)*3+6, UPDATE_ATTR, factmessageATTRData,sizeof(factmessageATTRData) / sizeo
-f(char));
88 2 SetOSDData((MainMenuCols+1)*3+6, UPDATE_ATTR, 0x36, 15);
89 2 PortDataOut((MainMenuCols+1)*3+6, UPDATE_CODE, factmessageData, sizeof(factmessageData) / sizeof(char));
90 2 showPotTimer();
91 2 }
92 1
93 1 // VGA width
94 1 converInt(CurrentWidth);
95 1 if(CurrentWidth > 999)
96 1 PortDataOut((MainMenuCols+1)*4+10, UPDATE_CODE, buff, 4);
97 1 else
98 1 PortDataOut((MainMenuCols+1)*4+11, UPDATE_CODE, buff, 3);
99 1
100 1 // VGA height
101 1 converInt(CurrentHeight);
102 1 PortDataOut((MainMenuCols+1)*4+15, UPDATE_CODE, buff, 4);
103 1
104 1 buff[0] = _x;
105 1 PortDataOut((MainMenuCols+1)*4+14, UPDATE_CODE, buff, 1);
106 1
107 1 /* H sync */
108 1 ival = 100000L * HsyncCnt / 21845L /2;
109 1 converFlt(ival);
110 1 buff[1] = _H;
111 1 buff[2] = _DOT2; //:
112 1 buff[5] = _K;
113 1 buff[6] = _H;
114 1 buff[7] = _z;
C51 COMPILER V6.23a OSDCTRL 09/10/2004 16:09:03 PAGE 3
115 1 PortDataOut((MainMenuCols+1)*6+8, UPDATE_CODE, &buff[1], 7);
116 1
117 1 /* V sync */
118 1 ival = 18750000L / VsyncCnt;
119 1 converFlt(ival);
120 1 buff[1] = _V;
121 1 buff[2] = _DOT2; //:
122 1 buff[5] = _H;
123 1 buff[6] = _z;
124 1 PortDataOut((MainMenuCols+1)*6+16, UPDATE_CODE, &buff[1], 6);
125 1
126 1 PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE,analogInputData[eepData.language],sizeof(analogInputData[0]
-/sizeof(char)));
127 1 }
128
129
130 void menuDraw(void)
131 {
132 1 /* Clear SRAM */
133 1 SRAMClear();
134 1
135 1 /* disable window */
136 1 OSDRegDataOut(OSDWIN1_H_START, disWinData, sizeof(disWinData) / sizeof(char));
137 1 #if (NEW_OSD) //1
138 1 OSDRegByteOut(OSDNEWWINDOWCONTROL,0x00);
139 1 #endif
140 1
141 1
142 1
143 1 if(cursor == 0x00 || cursor == HOT_BRIGHTNESS || cursor == HOT_CONTRAST)
144 1 {
145 2 /* Change OSD frame size and location */
146 2 if (FactoryFlag)
147 2 osdChgFrame(MainMenuCols,11, 0, 0);
148 2 else if (ISPFlag)
149 2 osdChgFrame(MainMenuCols,11, 50, 50);
150 2 else
151 2 osdChgFrame(MainMenuCols,11,eepData.osdPosH,MAX_osdPosV-eepData.osdPosV);
152 2
153 2
154 2 if(eepData.language==5)
155 2 load_attention_font_data();
156 2 PortDataOut((MainMenuCols+1)*1+10,UPDATE_CODE,attentionData[eepData.language],sizeof(attentionData[0]) /
- sizeof(char));
157 2
158 2 OSDWindowSet(OSDWIN8_H_START, 29, 12, 0 ,0, 0x22, 0x10);
159 2 //OSDWindowSet(OSDWIN7_H_START, 27, 10, 1 ,1, 0x44, 0x10);
160 2 OSDWindowSet(OSDWIN6_H_START, 27, 6, 1 ,3, 0x66, 0x10);
161 2 }
162 1 else
163 1 {
164 2 /* Change OSD frame size and location */
165 2 if (FactoryFlag)
166 2 osdChgFrame(MainMenuCols,MainMenuLines, 0, 0);
167 2 else
168 2 osdChgFrame(MainMenuCols,MainMenuLines,eepData.osdPosH,MAX_osdPosV+MIN_osdPosV-eepData.osdPosV);
169 2
170 2
171 2 OSDWindowSet(OSDWIN8_H_START, 29, 13, 0 ,0, 0x22, 0x10);
172 2 //OSDWindowSet(OSDWIN7_H_START, 27, 11, 1 ,1, 0x44, 0x10);
173 2 OSDWindowSet(OSDWIN6_H_START, 27, 7, 1 ,3, 0x66, 0x10);
174 2 }
C51 COMPILER V6.23a OSDCTRL 09/10/2004 16:09:03 PAGE 4
175 1
176 1 OSDRegByteOut(OSDNEWWINDOWCONTROL,NEWWIN8ENABLE+NEWWIN7ENABLE+NEWWIN6ENABLE);
177 1 }
178
179 void subClear(void)
180 {
181 1 if (FactoryFlag)
182 1 {
183 2 dspStyle(0x36);
184 2 buff[0] = __;
185 2 PortDataOut((MainMenuCols+1)*4+1, UPDATE_HCD_REGATT, buff, 1);
186 2 // buff[0] = 0x36;
187 2 // PortDataOut((MainMenuCols+1)*4+1, UPDATE_ATTR, buff,1);
188 2 }
189 1 for(buff[20]=3;buff[20]<9;buff[20]++)
190 1 {
191 2 // PortDataOut((MainMenuCols+1)*buff[20]+3, UPDATE_CODE,clearData2, sizeof(clearData2) / sizeof(char));
192 2 SetOSDData((MainMenuCols+1)*buff[20]+3, UPDATE_CODE, 0x00, 23);
193 2 // PortDataOut((MainMenuCols+1)*buff[20]+7,UPDATE_ATTR,ScrollBarAttrData[1],sizeof(ScrollBarAttrData[1]/s
-izeof(char)));
194 2 SetOSDData((MainMenuCols+1)*buff[20]+7, UPDATE_ATTR, 0x06, 17);
195 2 }
196 1 }
197
198 /************************************************
199 * create the first main menu pattern *
200 *************************************************/
201 void mainMenu(void)
202 {
203 1 menuDraw();
204 1 mainIcon();
205 1 PortDataOut((MainMenuCols+1)*1+8,UPDATE_CODE,LuminanceData[eepData.language],sizeof(LuminanceData[0]) / s
-izeof(char));
206 1 enableOSD();
207 1 }
208
209 void mainIcon(void)
210 {
211 1 subClear();
212 1
213 1 // FACTORY
214 1 if (FactoryFlag)
215 1 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?