irint.lst
来自「宏芯T102芯片驱动(51单片机作主控)」· LST 代码 · 共 304 行 · 第 1/2 页
LST
304 行
139 1 /************************************/
140 1 if(ir_enable==TRUE)
141 1 {
142 2 TMOD=0x11; /*counter start with INT0 and TR0*/
143 2 ir_code=0; /*初始化变量*/
144 2 for(i=0;i<16;i++)
145 2 {
146 3 while(INT1==0);
147 3 TL0=0;
148 3 TH0=0;
149 3 TR0=1;
150 3 do
151 3 {
152 4 count=(TL0+TH0*256); /*count :us unit */
153 4 if(Filter13(0)==1) break;
154 4 }while(count<=(CODE_1_TIME+DELTA)); /*INT0为高电平时计时*/
155 3 TR0=0;
156 3 ir_code<<=1;
157 3 if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA))) /*detect 1 code 2.24mS-0.56mS=1.68mS*/
158 3 ir_code++;
159 3 else if((count>(CODE_0_TIME-DELTA))&&(count<=(CODE_0_TIME+DELTA))); /*detect 0 code 1.12mS-0.56mS=0.56
-mS*/
160 3 else
161 3 {
162 4 ir_enable=FALSE;
163 4 TR0=1;
164 4 break; /*not suitable for address code */
165 4 }
166 3 } /*end for*/
167 2 }
168 1 /************************************/
169 1 /* Detect 16 bit data code */
170 1 /************************************/
171 1 if(ir_enable==TRUE&&ir_code==IR_SYSTEM_CODE)/**/
172 1 {
173 2 TMOD=0x11; /*counter start with INT0 and TR0*/
174 2 ir_code=0;
175 2 for(i=0;i<16;i++)
176 2 {
177 3 while(INT1==0);
C51 COMPILER V7.06 IRINT 12/28/2004 10:14:05 PAGE 4
178 3 TL0=0;
179 3 TH0=0;
180 3 TR0=1;
181 3 do
182 3 {
183 4 count=(TL0+TH0*256);
184 4 if(Filter13(0)==1) break;
185 4 }while(count<=(CODE_1_TIME+DELTA)); /*INT0为高电平时计时*/
186 3 TR0=0;
187 3 //count=(TL0+TH0*256); /*count :us unit */
188 3 ir_code<<=1;
189 3 if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA))) /*detect 1 code 1.68mS*/
190 3 ir_code++;
191 3 else if((count>(CODE_0_TIME-DELTA)&&count<=(CODE_0_TIME+DELTA))); /*detect 0 code 0.56mS*/
192 3 else
193 3 {
194 4 ir_enable=FALSE;
195 4 TR0=1;
196 4 break; /*not suitable for address code */
197 4 }
198 3 } /*end for*/
199 2 if(ir_enable==TRUE)
200 2 {
201 3 temp0=ir_code&0xff00;
202 3 temp0=~temp0;
203 3 temp0>>=8;
204 3 temp1=ir_code&0x00ff;
205 3 if(temp0!=temp1)
206 3 ir_enable=FALSE;
207 3 else
208 3 {
209 4 ir_data=(BYTE)(temp1); /*true code effective*/
210 4 ir_enable=TRUE; /*set ir flag*/
211 4 EX1=0;
212 4 return;
213 4 }
214 3 }
215 2 }
216 1 else
217 1 { ir_enable=FALSE;
218 2 EX1=1;}
219 1 }
220
221 void RemoteEvent(void)
222 {
223 1 bit bTemp=0;
224 1 switch(ir_data)
225 1 {
226 2 case REMOTE_KEY_POWER: bTemp=kyPOWEREvent(); break;
227 2 case REMOTE_KEY_SOURCE: IRSourceSelKeyCtrl(); break;
228 2 case REMOTE_KEY_DISPLAY:IRNTSC_PALCtrl();break;
229 2 case REMOTE_KEY_DECR: bTemp=kyDECREASEEvent(); break;
230 2 case REMOTE_KEY_INCR: bTemp=kyINCREASEEvent(); break;
231 2 //Ruby 2004-06-07 case REMOTE_KEY_OK: OSDExit(); break;
232 2 case REMOTE_KEY_MENU: bTemp=kyMENUEvent();break;
233 2 case REMOTE_KEY_SCALER : kySCALEREvent(); break;
234 2
235 2
236 2 case REMOTE_KEY_VO_INC: bTemp=IRVolUpKeyCtrl(); break;
237 2 case REMOTE_KEY_VO_DEC: bTemp=IRVolDownKeyCtrl(); break;
238 2
239 2 case REMOTE_KEY_DEC_P: bTemp=IRDownKeyCtrl(); break;
C51 COMPILER V7.06 IRINT 12/28/2004 10:14:05 PAGE 5
240 2 case REMOTE_KEY_INC_P: bTemp=IRUpKeyCtrl();break;
241 2
242 2 //Ruby 2004-06-21 for display mode
243 2 #ifdef ROTATE
244 2 case REMOTE_KEY_AIRCABLE : kyDismodeEvent();
245 2 #endif
246 2 #ifdef TV
247 2 //Kuo case REMOTE_KEY_MUTE: bTemp=IRSetupKeyCtrl(); break;
248 2 // case REMOTE_KEY_DEC_P: bTemp=IRDownKeyCtrl(); break;
249 2 // case REMOTE_KEY_INC_P: bTemp=IRUpKeyCtrl();break;
250 2 case REMOTE_KEY_NUM0: IRNumKeyCtrl(0); break;
251 2 case REMOTE_KEY_NUM1: IRNumKeyCtrl(1); break;
252 2 case REMOTE_KEY_NUM2: IRNumKeyCtrl(2); break;
253 2 case REMOTE_KEY_NUM3: IRNumKeyCtrl(3); break;
254 2 case REMOTE_KEY_NUM4: IRNumKeyCtrl(4); break;
255 2 case REMOTE_KEY_NUM5: IRNumKeyCtrl(5); break;
256 2 case REMOTE_KEY_NUM6: IRNumKeyCtrl(6); break;
257 2 case REMOTE_KEY_NUM7: IRNumKeyCtrl(7); break;
258 2 case REMOTE_KEY_NUM8: IRNumKeyCtrl(8); break;
259 2 case REMOTE_KEY_NUM9: IRNumKeyCtrl(9); break;
260 2 case REMOTE_KEY_NUM_Bites: IRNumKeyCtrl(10); break;
261 2 #endif
262 2 }
263 1 if(bTemp)
264 1 OSDEventMgr();
265 1
266 1
267 1 EX1=1;
268 1 }
269 //#endif
270
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 860 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?