📄 function.lst
字号:
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN Function.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Function.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************************
2 Function.c
3 Copyright (c) HIMAX, Inc. All rights reserved.
4 Edit by Taylor Chen
5 *******************************************************************************/
6 #include "intrins.h"
7 #include "MCU_IO.h"
8 #include "COMMON.H"
9 #include "Function.H"
10 #include "MAIN.H"
11 #include "i2c_control.h"
12 #include "HX8824.h"
13 #include "Key.h"
14 #include "OSD.h"
15 #include "ModeTable.h"
16 /*==============================================================================*/
17
18 extern code unsigned char EEPDATA[64][16];
19 /*==============================================================================*/
20 /* -------------------------------------------------------------------
21 Name : BootFromLDROM
22 Purpose : Enter MCU ISP Mode
23 Passed : Word
24 Returns :
25 Notes :
26 ------------------------------------------------------------------- */
27
28 void BootFromLDROM(void)
29 {
30 1 IE = 0x00; // Disable all interrupt
31 1 CHPENR = 0x87; //
32 1 CHPENR = 0x59;
33 1 CHPCON = 0x03;
34 1 CHPENR = 0x00;
35 1 TCON = 0x00;
36 1 IP = 0x00;
37 1 TL0 = 0xfe;
38 1 TH0 = 0xff;
39 1 TMOD = 0x01;
40 1 IE = 0x82; // Enable interrupt Timer/counter 0
41 1 TCON = 0x10;
42 1 PCON = 0x01;
43 1 while(1);
44 1 }
45
46 /* -------------------------------------------------------------------
47 Name : DelayX1ms
48 Purpose : Delay 1ms Seconds
49 Passed :
50 Returns :
51 Notes :
52 ------------------------------------------------------------------- */
53
54 void DelayX1ms(unsigned int n)
55 {
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 2
56 1
57 1 unsigned int i;
58 1
59 1 while(n--!=0)
60 1 for (i=0; i<86; i++)
61 1 ;
62 1 }
63
64 /* -------------------------------------------------------------------
65 Name : DelayX10ms
66 Purpose : Delay 10ms Seconds
67 Passed :
68 Returns :
69 Notes :
70 ------------------------------------------------------------------- */
71 void DelayX10ms(unsigned int n)
72 {
73 1
74 1 unsigned int i;
75 1
76 1 while(n--!=0)
77 1 for (i=0; i<860; i++)
78 1 ;
79 1 }
80
81 /* -------------------------------------------------------------------
82 Name : Print_Icon
83 Purpose : Print ICON
84 Passed : Display area, attribute
85 Returns :
86 Notes :
87 ------------------------------------------------------------------- */
88 void Print_Icon(Byte Disp_R, Byte Disp_C, Byte Attr0, Byte Attr1, Byte Attr2)
89 {
90 1 BYTE Disp;
91 1 Disp = (Disp_R - 1)*32 + (Disp_C - 1);
92 1 I2CWrite2Byte(HX8824_ADDR, HX8824_DISPLAY_AREA, Disp, Disp >> 8); //0xBE
93 1 I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, Attr2); //0xC0
94 1 }
95 /* -------------------------------------------------------------------
96 Name : Print_String
97 Purpose : Print String
98 Passed : Display area, attribute
99 Returns :
100 Notes :
101 ------------------------------------------------------------------- */
102
103 void Print_String(Byte Disp_R, Byte Disp_C, Byte Attr0, Byte Attr1, Byte *string)
104 {
105 1 BYTE Disp, i = 0;
106 1 Disp = (Disp_R - 1)*32 + (Disp_C - 1);
107 1 while((*(string+i))!='\0')
108 1 {
109 2 I2CWrite2Byte(HX8824_ADDR, HX8824_DISPLAY_AREA, Disp, Disp >> 8); //0xBE
110 2 //I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, *(string + i) - 64); //0xC0
111 2 I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, *(string + i) - 47); //0xC0
112 2 Disp++;
113 2 i++;
114 2 }
115 1 }
116
117 /* -------------------------------------------------------------------
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 3
118 Name : Select_Item
119 Purpose : Select Item
120 Passed :
121 Returns :
122 Notes :
123 ------------------------------------------------------------------- */
124
125 void Select_Item(void)
126 {
127 1 unsigned char prev, next;
128 1 Byte i;
129 1
130 1 prev=(Item+(TOTAL_ICON-1))%TOTAL_ICON; //TOTAL_ICON = 12
131 1 next=(Item+(TOTAL_ICON+1))%TOTAL_ICON;
132 1 Puts_UART("Item = ");HexTobyStr(Item);Puts_UART(byStr);Puts_UART("\r\n");
133 1
134 1
135 1 for(i = 0; i < 3; i++)
136 1 {
137 2 Print_Icon(ICONPOS[prev][0], ICONPOS[prev][1], 0x00, 0x07, ICONGROUP[prev][0]);
138 2 Print_Icon(ICONPOS[prev][0], ICONPOS[prev][1] + 1, 0x00, 0x07, ICONGROUP[prev][1]);
139 2 Print_Icon(ICONPOS[next][0], ICONPOS[next][1], 0x00, 0x07, ICONGROUP[next][0]);
140 2 Print_Icon(ICONPOS[next][0], ICONPOS[next][1] + 1, 0x00, 0x07, ICONGROUP[next][1]);
141 2 Print_Icon(ICONPOS[Item][0], ICONPOS[Item][1], 0x03, 0x07, ICONGROUP[Item][0]);
142 2 Print_Icon(ICONPOS[Item][0], ICONPOS[Item][1] + 1, 0x03, 0x07, ICONGROUP[Item][1]);
143 2 }
144 1 OSDBarHandle(Item, 5, 6, 0x03, 0x05);
145 1 }
146
147 /* -------------------------------------------------------------------
148 Name : OSD_Bar_Handle
149 Purpose : Adjust OSD Bar
150 Passed : Item, row, column, attr0, attr1
151 Returns :
152 Notes :
153 ------------------------------------------------------------------- */
154 void OSDBarHandle(Byte Item, Byte row, Byte col, Byte attr0, Byte attr1)
155 {
156 1 Byte i, j;
157 1 Byte BarMaxValue, BarMaxCount = 20, Item_ADDR;
158 1 Word CurrentValue, OSDMaxValue, OSDMinValue;
159 1 Byte UpdateValue;
160 1
161 1 BarMaxValue = BarMaxCount * 5;
162 1 switch(Item)
163 1 {
164 2 case 0:
165 2 Item_ADDR = HX8824_BRIGHTNESS;
166 2 OSDMaxValue = 255;
167 2 OSDMinValue = 0;
168 2 break;
169 2 case 1:
170 2 Item_ADDR = HX8824_CONTRAST;
171 2 OSDMaxValue = 255;
172 2 OSDMinValue = 0;
173 2 break;
174 2 case 2:
175 2 Item_ADDR = HX8824_SATSINHUE;
176 2 OSDMaxValue = 511;
177 2 OSDMinValue = 0;
178 2 break;
179 2 case 3:
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 4
180 2 Item_ADDR = HX8824_SATCOSHUE;
181 2 OSDMaxValue = 511;
182 2 OSDMinValue = 0;
183 2 break;
184 2 case 6:
185 2 Item_ADDR = HX8824_SHARPNESS;
186 2 OSDMaxValue = 31;
187 2 OSDMinValue = 0;
188 2 break;
189 2 default:
190 2 break;
191 2 }
192 1 if(Item_ADDR == HX8824_SATSINHUE || Item_ADDR == HX8824_SATCOSHUE)
193 1 {
194 2 CurrentValue = (I2CReadByte(HX8824_ADDR, Item_ADDR + 1) << 8 | (I2CReadByte(HX8824_ADDR, Item_ADDR)))
-;
195 2 Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
196 2 CurrentValue = (CurrentValue * BarMaxValue) / (OSDMaxValue - OSDMinValue);
197 2 Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
198 2 }
199 1 else
200 1 {
201 2 CurrentValue = I2CReadByte(HX8824_ADDR, Item_ADDR);
202 2 Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
203 2 CurrentValue = (CurrentValue * BarMaxValue) / (OSDMaxValue - OSDMinValue);
204 2 Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
205 2 }
206 1 UpdateValue = CurrentValue;
207 1 Print_Icon(row, col, attr0, attr1, 0x2C); // left :1
208 1 j = UpdateValue / 5;
209 1 for(i = 1; i < (j + 1); i++)
210 1 {
211 2 Print_Icon(row, col + i, attr0, attr1, 0x32); // full :i = j
212 2 }
213 1 j = UpdateValue % 5;
214 1 Print_Icon(row, col + (i++), attr0, attr1, 0x2D + j); // nonfull :j+2
215 1 for(; i < (BarMaxCount + 1); i++)
216 1 {
217 2 Print_Icon(row, col + i, attr0, attr1, 0x2D); // empty :
218 2 }
219 1 Print_Icon(row, (col + (BarMaxCount + 1)), attr0, attr1, 0x33);
220 1 }
221
222 /* -------------------------------------------------------------------
223 Name : Sharpness_Adj
224 Purpose : Adjust Sharpness
225 Passed : +/-
226 Returns :
227 Notes :
228 ------------------------------------------------------------------- */
229 void Sharp_Adj(Byte S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -