📄 osdfunc.lst
字号:
C51 COMPILER V7.50 OSDFUNC 03/18/2008 22:29:10 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE OSDFUNC
OBJECT MODULE PLACED IN ..\1out\OSDFunc.obj
COMPILER INVOKED BY: D:\设计软件\Keil\C51\BIN\C51.EXE ..\UI\OSDFunc.c BROWSE INCDIR(..\INC\;..\PANEL\;..\UI\;..\OPTION\;
-..\SCALER\DSP\) DEFINE(MCU_TYPE_SEL=0) DEBUG OBJECTEXTEND PRINT(..\1out\OSDFunc.lst) OBJECT(..\1out\OSDFunc.obj)
line level source
1 /******************************************************************************
2 Copyright (c) 2005 MStar Semiconductor, Inc.
3 All rights reserved.
4
5 [Module Name]: OSDFunc.c
6 [Date]: 04-Feb-2005
7 [Comment]:
8 OSD functions for Maria(MST7XXX) Chip.
9 [Reversion History]:
10 *******************************************************************************/
11 #define _OSDFUNC_C_
12
13 /********************
14 * INCLUDE FILES *
15 *********************/
16 #include "Project.h"
17 #include "Global.h"
18 #include "TypeDef.h"
19 #include "debug.h"
20 #include "Ms_rwreg.h"
21 #include "Misc.h"
22 #include "Ms7x_reg.h"
23 #include "Mst7x.h"
24 #include "Ms_Func.h"
25 #include "OSDMenu.h"
26 #include "OSDFunc.h"
27 #include "Font.h"
28 #include "PANEL.h"
29
30 /********************
31 * VARIABLEV DEFINE *
32 *********************/
33 //BYTE g_ucOsdFontColor;
34
35 /**********************
36 * FUNCTION PROTOTYPES *
37 ***********************/
38 void osdOSDWriteByte(BYTE address, BYTE value)
39 {
40 1 mstWriteByte(BK0_A1_OSDRA, address);
41 1 mstWriteByte(BK0_A2_OSDRD, value);
42 1
43 1 }
44
45 /*BYTE OSD_mStar_ReadOSDByte(BYTE address)
46 {
47 mstWriteByte(BK0_A1_OSDRA, address);
48 return mstReadByte(BK0_A2_OSDRD);
49 }*/
50
51 void osdOSDLoadPalette(BYTE *colorPtr, BYTE num)
52 {
53 1 mstWriteByte(BK0_A1_OSDRA, OSD_28_CLR0R);
54 1 mstWriteData(BK0_A2_OSDRD, colorPtr, num, 0);
C51 COMPILER V7.50 OSDFUNC 03/18/2008 22:29:10 PAGE 2
55 1 }
56
57 void osdOSDLoadFont(BYTE addr, BYTE *fontPtr, WORD num)
58 {
59 1 mstWriteByte(BK0_A3_RAMFA, addr);
60 1
61 1 mstWriteData(BK0_A4_RAMFD, fontPtr, num, 0);
62 1 /*mStar_WriteDDRByte(BK0_A3_RAMFA, addr);
63 1 while (num--)
64 1 mStar_WriteDDRByte(BK0_A4_RAMFD, *(fontPtr++));*/
65 1 }
66
67 void osdOSDClearAll(void)
68 {
69 1 BYTE ucRetry = 10;
70 1 mstWriteByte(BK0_A0_OSDIOA, CLR_B);
71 1
72 1 while (ucRetry--)
73 1 {
74 2 miscDelay1ms(3);
75 2 if ((mstReadByte(BK0_A0_OSDIOA)&CLR_B)==0)
76 2 break;
77 2 }
78 1 }
79
80 void osdOSDEnable(void)
81 {
82 1 osdOSDWriteByte(OSD_0C_IOSDC1, (((OSD_WIN_VZOOM&0x03)<<6)+((OSD_WIN_HZOOM&0x03)<<4)+MWIN_B));
83 1 }
84
85 void osdOSDDisable(void)
86 {
87 1 osdOSDWriteByte(OSD_0C_IOSDC1, 0x00);
88 1 miscDelay1ms(20);
89 1 mstPowerManagement(PM_OSD_TURN_OFF);
90 1 g_ucSystemFlag |= SAVE_SETTING_FLAG;
91 1 }
92
93
94 void osdOSDSetFrame(BYTE PositionX, BYTE PositionY, BYTE Width, BYTE Height)
95 {
96 1 DWORD ulTemp;
97 1 // Set X position
98 1 ulTemp=((DWORD)PositionX*(PANEL_WIDTH-(WORD)Width*12*(OSD_WIN_HZOOM+1)))/100+PANEL_HSTART-48;
99 1 //ulTemp=ulTemp/4;
100 1 osdOSDWriteByte(OSD_02_OHSTA_L, ulTemp&0xFF);
101 1 osdOSDWriteByte(OSD_03_OHSTA_H, ulTemp>>8);
102 1 // Set Y position
103 1 ulTemp=((DWORD)PositionY*(PANEL_HEIGHT-(WORD)Height*18*(OSD_WIN_VZOOM+1)))/100;
104 1 //ulTemp=ulTemp/4;;
105 1 osdOSDWriteByte(OSD_04_OVSTA_L, ulTemp&0xFF);
106 1 osdOSDWriteByte(OSD_05_OVSTA_H, ulTemp>>8);
107 1
108 1 // Set OSD frame width size
109 1 osdOSDWriteByte(OSD_06_OSDW, Width-1);
110 1 // Set OSD frame height size
111 1 osdOSDWriteByte(OSD_07_OSDH, Height-1);
112 1 // Frame Offset
113 1 //mStar_WriteOSDByte(OSD_12_OCBUFO, Width-1);
114 1 osdOSDWriteByte(OSD_12_OCBUFO, 0x00);
115 1
116 1 }
C51 COMPILER V7.50 OSDFUNC 03/18/2008 22:29:10 PAGE 3
117
118 void osdOSDSetStringColor(BYTE FGC, BYTE BGC)
119 {
120 1 g_ucOsdFontColor = ((FGC&0x0F)<<4)+(BGC&0x0F);
121 1 }
122
123 void osdOSDPrintString(BYTE xPos, BYTE yPos, BYTE ucLanguage, BYTE *str, BYTE FGC, BYTE BGC)
124 {
125 1 WORD uwAddress;
126 1 BYTE ucLoop,x;
127 1 BYTE ucDrawCode=TRUE;
128 1
129 1 if (yPos&_BIT7)
130 1 ucDrawCode=FALSE;
131 1
132 1 yPos&=0x3F;//~(BIT7|BIT6);
133 1 ucLoop = 0;
134 1 uwAddress=(WORD)yPos*OSD_MAINMENU_WIDTH+xPos; // get real address
135 1
136 1 osdOSDSetStringColor(FGC, BGC);
137 1
138 1 x=0;
139 1 ucLoop=0;
140 1
141 1 for (x=0;x<255;x++)
142 1 {
143 2 if(ucLoop==ucLanguage)
144 2 break;
145 2 if(str[x]==0xff)
146 2 ucLoop+=1;
147 2
148 2 }
149 1
150 1 mstWriteWord(BK0_A9_DISPAA_H, uwAddress); // BK0_A8_DISPAA_L, BK0_A9_DISPAA_H
151 1
152 1 for (ucLoop = x; ucLoop<0xff; ucLoop++)
153 1 {
154 2 if (str[ucLoop]!=0xff)
155 2 mstWriteByte(BK0_AA_DISPAD, g_ucOsdFontColor);
156 2 else
157 2 break;
158 2 }
159 1
160 1 if (ucDrawCode==TRUE)
161 1 {
162 2 mstWriteWord(BK0_A6_DISPCA_H, uwAddress); // BK0_A5_DISPCA_L, BK0_A6_DISPCA_H
163 2
164 2 for (ucLoop = x; ucLoop<0xff; ucLoop++)
165 2 {
166 3 if (str[ucLoop]!=0xff)
167 3 mstWriteByte(BK0_A7_DISPCD, str[ucLoop]);
168 3 else
169 3 break;
170 3 }
171 2
172 2 }
173 1 }
174
175 void osdOSDPrintIcon(BYTE xPos, BYTE yPos, BYTE icon, BYTE FGC, BYTE BGC)
176 {
177 1 WORD uwAddress;
178 1
C51 COMPILER V7.50 OSDFUNC 03/18/2008 22:29:10 PAGE 4
179 1 uwAddress=yPos*OSD_MAINMENU_WIDTH+xPos;
180 1
181 1 osdOSDSetStringColor(FGC, BGC);
182 1
183 1 mstWriteWord(BK0_A6_DISPCA_H, uwAddress); // BK0_A5_DISPCA_L, BK0_A6_DISPCA_H
184 1 mstWriteByte(BK0_A7_DISPCD, icon);
185 1
186 1 mstWriteWord(BK0_A9_DISPAA_H, uwAddress); // BK0_A8_DISPAA_L, BK0_A9_DISPAA_H
187 1 mstWriteByte(BK0_AA_DISPAD, g_ucOsdFontColor);
188 1
189 1 }
190
191 #if 1
192 void osdOSDPrintValue(BYTE xPos, BYTE yPos, SINT dt, BYTE FGC, BYTE BGC)
193 {
194 1 BYTE ucDat;
195 1 WORD i;
196 1 bit fz;
197 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -