📄 osddrow.lst
字号:
C51 COMPILER V7.06 OSDDROW 03/01/2007 08:05:40 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE OSDDROW
OBJECT MODULE PLACED IN OSDDROW.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\OSDDROW.C BROWSE INCDIR(Z:\CB\T112项目\原始资料\AV总备份\1.8\include
-\) DEBUG OBJECTEXTEND PRINT(.\OSDDROW.lst) OBJECT(OSDDROW.obj)
stmt level source
1 #include <reg51.h>
2 #include "common.h"
3 #include "System.h"
4 #include "Struct.h"
5 #include "TwoWire.h"
6 #include "TW10xReg.h"
7 #include "panel.h"
8 #include "timer0.h"
9 #include "DEF.H"
10
11
12 extern uCHAR VOL;
13 extern uCHAR Pauto;
14 extern uCHAR menu_num;
15 extern bit OSD_open;
16 extern bit AV;
17 extern code unsigned char *page1_Fonts[];
18
19 /*********************************************************************************************************
-*******************
20 color for OSDDROW
21 **********************************************************************************************************
-******************/
22
23 code unsigned char cOSDMenuLutData[]={
24 0x0f,0x00, //1 blue
25 0x00,0x00, //2 black
26 0x0f,0x0a, //3 purple
27 0x0f,0x00, //4 blue
28 0xf8,0x00, //5 green
29 0x22,0x0A, //6 red
30 0x1f,0x01, //7 light blue//olive
31 0x88,0x05, //8 light grey
32 0xb9,0x0b, //9 purple
33 0xBD,0x05, //A purple
34 0x0f,0x0f, //B
35 0xA3,0x0A, //C Yellow
36 0xcc,0x0c, //D light grey
37 0x68,0x03, //E Light Blue Main Menu Background or 0x79, 0x04 which is a litter light
38 0xff,0x0f, //F white
39 0x00,0x00, //0
40 };
41
42 code unsigned char DIG[]={0,'1','2','3','4','5','6','7','8','9','0'};//digital
43 code unsigned char source1_font[]={'C','H','1'};
44 code unsigned char source2_font[]={'C','H','2'};
45 code unsigned char source3_font[]={'C','H','3'};
46 code unsigned char source4_font[]={'C','H','4'};
47 code unsigned char *source_font[]={source1_font,source2_font,source3_font,source4_font};
48
49 /*****************************************************************************/
50
51 void OSDLoadColor(void)
52 {
C51 COMPILER V7.06 OSDDROW 03/01/2007 08:05:40 PAGE 2
53 1 uCHAR i;
54 1 I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
55 1 for(i=0;i<32;i++)
56 1 {
57 2 I2CWriteByte(TW101,OSD_CFG_DATA,cOSDMenuLutData[i]);
58 2 }
59 1 }
60
61 void OSDSetRamAddr(uWORD address) ///设置DATA_OSDRAM地址
62 {
63 1 I2CWriteByte(TW101,OSD_RAM_AH,(uCHAR)(address>>8)); ///0xa3
64 1 I2CWriteByte(TW101,OSD_RAM_AL,(uCHAR)(address & 0xff)); ///0xa2
65 1 }
66
67 void OSDEnable(void) /// 使能OSD功能
68 {
69 1 if(AV)
70 1 {
71 2 OSDCfgWr(OSD_CTRL,0x8d);
72 2 AV=0;
73 2 }
74 1 else
75 1 OSDCfgWr(OSD_CTRL,0x84);
76 1 Timer0Start();
77 1 }
78
79 void OSDDisable(void)
80 {
81 1 OSDCfgWr(OSD_CTRL,0x18);
82 1 }
83
84 void OSDCleanLine(uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength) ///x为列地址,y为行地址
85 {
86 1 if((x < 30) && ( y < OSD_LINE_NUM)) ///OSD_LINE_NUM = 10;
87 1 {
88 2 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x); ///设置OSDRAM地址[ROW_ATTR_ADDR = ROW_ADDR +
-COLU_ADDR)
89 2 twdWr_Burst_A(OSD_RAM_DL); /// Write OSD index //写T112的数据口 note by chen 06'12'1
90 2 while((x < 30) && (x < cLength))
91 2 {
92 3 twdWr_Burst_D(BLANK); ///BLANK=0x3a/0x00;
93 3 twdWr_Burst_D(cColor);
94 3 x++;
95 3 }
96 2 twdWr_Burst_P();
97 2 }
98 1 }
99
100 void send(uCHAR c,uCHAR cColor)
101 {
102 1 if(c>0x40) // Character
103 1 twdWr_Burst_D(c-IndexCharacterOffset);
104 1 else if(c>=0x30) // number
105 1 twdWr_Burst_D(c-IndexNumOffset);
106 1 else
107 1 twdWr_Burst_D(c);
108 1
109 1 twdWr_Burst_D(cColor );
110 1 }
111
112 void OSDShowLine(uCHAR *string,uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
113 {
C51 COMPILER V7.06 OSDDROW 03/01/2007 08:05:40 PAGE 3
114 1 uCHAR c;
115 1 if((x < 30) && ( y < OSD_LINE_NUM))
116 1 {
117 2 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
118 2 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
119 2 while((*string) != 0xff && (x < cLength)){
120 3 c=*string++;
121 3 send(c,cColor);
122 3 x++;
123 3 }
124 2 }
125 1 twdWr_Burst_P();
126 1 }
127
128 void OSDShowDig(uCHAR x,uCHAR y,uCHAR cColor,uCHAR num)
129 {
130 1 uCHAR c,b,d;
131 1 d =DIG[num/100];
132 1 num =num%100;
133 1 c =DIG[num/10];
134 1 b =DIG[num%10];
135 1 if(d!=0&&c==0)c=DIG[10];
136 1 if(b==0)b=DIG[10];
137 1 if((x < 30) && ( y < OSD_LINE_NUM))
138 1 {
139 2 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
140 2 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
141 2 send(d,cColor);
142 2 send(c,cColor);
143 2 send(b,cColor);
144 2 }
145 1 twdWr_Burst_P();
146 1 }
147
148 void OSDSetLineAttribute(uCHAR cLine,uCHAR cAttribute)
149 {
150 1 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)cLine << 5)+31);
151 1 twdWr_Burst_A(OSD_RAM_DL);
152 1 twdWr_Burst_D(0);
153 1 twdWr_Burst_D(cAttribute);
154 1 twdWr_Burst_P();
155 1 }
156
157 void OSDPosition(uCHAR cPos)
158 {
159 1 if(cPos==RIGHT_TOP){
160 2 OSDCfgWr(CHAR_DLY_0,Y0RightTop);
161 2 OSDCfgWr(CHAR_DLY_1,Y1RightTop);
162 2 OSDCfgWr(CHAR_DLY_2,Y2RightTop);
163 2 }
164 1 if(cPos==CENTER){
165 2 OSDCfgWr(CHAR_DLY_0,Y0Center);
166 2 OSDCfgWr(CHAR_DLY_1,Y1Center);
167 2 OSDCfgWr(CHAR_DLY_2,Y2Center);
168 2 }
169 1 else if(cPos==LEFT_BOTTOM){
170 2 OSDCfgWr(CHAR_DLY_0,Y0LeftBottom);
171 2 OSDCfgWr(CHAR_DLY_1,Y1LeftBottom);
172 2 OSDCfgWr(CHAR_DLY_2,Y2LeftBottom);
173 2 }
174 1 }
175
C51 COMPILER V7.06 OSDDROW 03/01/2007 08:05:40 PAGE 4
176 void OSDShowSource(uCHAR P) ///显示选择源
177 {
178 1 uCHAR i;
179 1 AV=1;
180 1 OSDDisable();
181 1 for(i=0;i<10;i++)
182 1 {
183 2 OSDCleanLine(0,i,0,30);
184 2 OSDSetLineAttribute(i,0x80);
185 2 }
186 1 OSDPosition(RIGHT_TOP);
187 1 OSDShowLine(source_font[P],1,0,0x0c,4);
188 1 OSDEnable();
189 1 }
190
191 void OSDDrawGauge(uCHAR cVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor)///进度条显示
192 {
193 1 int index,i;
194 1 int step_size=100/25;
195 1 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y<< 5)+x);
196 1 twdWr_Burst_A(OSD_RAM_DL);
197 1 index= (int)cVal*25/(int)cMax;
198 1 twdWr_Burst_D(34);
199 1 twdWr_Burst_D(cColor);
200 1 for(i=0;i<index;i++)
201 1 {
202 2 twdWr_Burst_D(2);
203 2 twdWr_Burst_D(cColor);
204 2 }
205 1 for(i=index;i<25;i++)
206 1 {
207 2 twdWr_Burst_D(1);
208 2 twdWr_Burst_D(cColor);
209 2 }
210 1 twdWr_Burst_D(36);
211 1 twdWr_Burst_D(cColor);
212 1
213 1 twdWr_Burst_P();
214 1 }
215
216 void DRWA_VOL(uCHAR num,uCHAR max_num) ///进度条
217 {
218 1 OSDPosition(LEFT_BOTTOM);
219 1 {
220 2 OSDShowLine(page1_Fonts[menu_num],0,0,0x06,10);
221 2 OSDShowDig(23,0,0x06,num);
222 2 OSDDrawGauge(num,max_num, 0, 1, 0x06);
223 2 }
224 1 OSDEnable();
225 1 }
226
227 void OSDShowpage1(void)
228 {
229 1 OSDShowLine(page1_Fonts[0],0,0,0x06,28);
230 1 OSDShowLine(page1_Fonts[6],0,1,0x06,28);
231 1 if(Pauto==0)
232 1 {
233 2 OSDShowLine(page1_Fonts[8],18,1,0x06,28);
234 2 }
235 1 else
236 1 {
237 2 OSDShowLine(page1_Fonts[7],18,1,0x06,28);
C51 COMPILER V7.06 OSDDROW 03/01/2007 08:05:40 PAGE 5
238 2 }
239 1 }
240 void OSDExit(void)
241 {
242 1 uCHAR i;
243 1 OSDCfgWr(OSD_CTRL,0x18);
244 1 OSDCfgWr(0x10,0x00); ///Disable window
245 1 OSDDisable();
246 1 for(i=0;i<10;i++)
247 1 {
248 2 OSDCleanLine(0,i,0,30);
249 2 OSDSetLineAttribute(i,0x80);
250 2 }
251 1 }
252
253
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1013 ----
CONSTANT SIZE = 67 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 42
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -