📄 ir.lst
字号:
242 3
243 3 if(dataIR != SYSTEM_CODE)
244 3 {
245 4
246 4 reset = 1;
247 4 }
248 3
249 3 #ifdef DEBUG_PRINTF
sys_code = dataIR&0xff; /*jian add in 07-07-26*/
#endif
254 3
255 3 }
256 2 #endif //csg
257 2 if (cntIRbits == 24)
258 2 {
259 3
260 3 codeIR = dataIR&0xff;// | 0x100; /* Indicate a new code */
261 3
262 3 ir_enable = 1; /*jian add in 07-08-1*/
263 3
264 3 #ifdef IRREP
265 3 pre_code = codeIR;
266 3 #endif
267 3 //ir_enable = 1;
268 3 }
269 2 else if (cntIRbits == 32)
270 2 {
271 3
272 3 #ifdef DEBUG_PRINTF
ivcode = dataIR&0xff;
#endif
277 3 reset = 1;
278 3 }
279 2
280 2 }
281 1 #if 0
else if (stateIR == IR_LEADER_LOW)
{
if ((width >= LEADER_LOW_MIN) && (width <= LEADER_LOW_MAX))
{
stateIR = IR_LEADER_HIGH;
}
else
reset = 1;
}
#endif
292 1
293 1 else if(stateIR == IR_LEADER_LOW)
294 1 {
295 2 // tvbox_printf("h_vaule:",temp_data ,1);
296 2 // tvbox_printf("l_vaule:",temp_data1 ,1);
297 2
298 2 /* stateIR has to be equal to IR_LEADER_HIGH */
299 2 if ((width >= (LEADER_HIGH_MIN + LEADER_LOW_MIN)) && (width <= (LEADER_HIGH_MAX + LEADER_LOW_MAX)))
300 2 {
301 3 dataIR = cntIRbits = 0;
302 3 stateIR = IR_CUSTOM;
303 3 }
C51 COMPILER V8.08 IR 03/06/2008 13:41:14 PAGE 6
304 2 #ifdef IRREP
305 2 else if ((width >= (REPEAT_HIGH_MIN + LEADER_LOW_MIN)) && (width <= (REPEAT_HIGH_MAX + LEADER_LOW_MAX)))
306 2 {
307 3 /* if the width is 2.25 ms, it is repeat code leader */
308 3 stateIR = IR_REPEAT;
309 3 if(pre_code != _POWER_KEY)
310 3 {
311 4 codeIR = pre_code; /* Indicate a new code */
312 4 ir_enable = 1;
313 4 repeat_flag =1;
314 4 reset = 1; /*jian add in 07-07-20*/
315 4 }
316 3 /*power key needn't ireep!!!*/
317 3
318 3
319 3 }
320 2 #endif
321 2 else
322 2 reset = 1;
323 2 }
324 1 #if 0//def IRREP
else if (stateIR == IR_REPEAT)
{
if ((width >= REPEAT_DATA_MIN) && (width <= REPEAT_DATA_MAX))
{
/* the width is 0.56 ms */
codeIR = pre_code; /* Indicate a new code */
ir_enable = 1;
}
reset = 1;
}
#endif
336 1 else
337 1 {
338 2 reset = 1;
339 2 }
340 1
341 1 if (reset)
342 1 {
343 2 /* Reset all, start from the very beginning */
344 2 stateIR = IR_IDLE;
345 2 }
346 1 }
347
348 #endif
349
350 void EXTIRQ_interrupt_service(void) interrupt 0 using 1
351 {
352 1 EA = 0;
353 1 // ir_core_philips();
354 1 ir_core_nec();
355 1 EA = 1;
356 1 }
357
358 #if 0
void delay_889us()
/*
*FOR 4MHz CLOCK TO DELAY 889uS
*/
{
uint i = 220;
while(--i);
C51 COMPILER V8.08 IR 03/06/2008 13:41:14 PAGE 7
}
#endif
368
369
370 void Nec_send_vaule(unsigned char vaule)
371 {
372 1
373 1 unsigned char j;
374 1
375 1 for(j = 0; j < 8; j++)
376 1 {
377 2 delay(30);/*0.565ms 10 us*//*0.173ms*/
378 2 OUTPUT_IR = 1;
379 2 if(vaule & 0x80)
380 2
381 2 delay(100);/*1.69ms 10 us*//*0.173ms*/
382 2
383 2 else
384 2
385 2 delay(30);/*0.565ms 10 us*//*0.173ms*/
386 2
387 2 OUTPUT_IR = 0;
388 2
389 2 vaule <<= 1; /*低位开始传输*/
390 2 }
391 1
392 1 }
393
394
395 void send_ir(unsigned char code_value)
396 {
397 1
398 1 #if 0
uchar i = 0xCC,j = 0;
EA = 0;
// if(reversal_ir)
// i |= 0x20;
for(j = 0;j<6;j++)
{
if(i & 0x80)
{
OUTPUT_IR = 1;
}
else
{
OUTPUT_IR = 0;
}
delay_889us();
i <<= 1;
OUTPUT_IR = ~OUTPUT_IR;
delay_889us();
}
i = (uchar)(code_value);
for(j = 0;j<8;j++)
{
if(i & 0x80)
{
OUTPUT_IR = 1;
}
else
{
C51 COMPILER V8.08 IR 03/06/2008 13:41:14 PAGE 8
OUTPUT_IR = 0;
}
delay_889us();
i <<= 1;
OUTPUT_IR = ~OUTPUT_IR;
delay_889us();
}
// reversal_ir = ~reversal_ir;
OUTPUT_IR = 1;
EA = 1;
#else
440 1 {
441 2
442 2 EA = 0;
443 2 OUTPUT_IR = 0;
444 2 delay(520);/*9ms 10 us*//*0.173ms*/
445 2 OUTPUT_IR = 1;
446 2 #ifdef IRREP
447 2 if(repeat_flag == 1)
448 2 {
449 3 delay(130);/*2.25ms 10 us*//*0.173ms*/
450 3 OUTPUT_IR = 0;
451 3 delay(30);/*0.565ms 10 us*//*0.173ms */
452 3 OUTPUT_IR = 1;
453 3 repeat_flag =0 ;
454 3 EA = 1;
455 3 return;
456 3 }
457 2 #endif
458 2 delay(260);/*4.5ms 10 us*//*0.173ms*/
459 2 OUTPUT_IR = 0;
460 2
461 2 Nec_send_vaule(0xff);
462 2 Nec_send_vaule(0x00);
463 2 //code_value = ~code_value;
464 2 Nec_send_vaule(code_value);
465 2 code_value = ~code_value;
466 2 Nec_send_vaule(code_value);
467 2
468 2 delay(30);/*0.565ms 10 us*//*0.173ms */
469 2 OUTPUT_IR = 1;
470 2 delay(100);/*1.69ms 10 us 停止位!!!!*//*0.173ms*/
471 2 OUTPUT_IR = 0;
472 2 delay(30);/*0.565ms 10 us*//*0.173ms */
473 2 OUTPUT_IR = 1;
474 2 EA = 1;
475 2 }
476 1 #endif
477 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 531 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 7
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -