📄 irint.lst
字号:
C51 COMPILER V7.06 IRINT 05/20/2005 14:34:58 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IRINT
OBJECT MODULE PLACED IN C:\T100_S~1\IRINT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\T100_S~1\IRINT.C DB SB OE OT(6)
stmt level source
1 #include "reg51.h"
2 #include <intrins.h>
3 #include "Common.h"
4 #include "Remote.h"
5 #include "OSDDraw.h"
6 #include "TwoWire.h"
7 #include "T100_Util.h"
*** WARNING C318 IN LINE 7 OF C:\T100_S~1\IRINT.C: can't open file 'T100_Util.h'
8 #include "SYSTEM.h"
9
10 extern bit bNTSC_PAL = 0; //0:PAL 1:NTSC
11 extern bit bFULL_43 = 1; //0:4:3 1:FULL
12 extern bit bUP_DOWN = 1; //0:Down to Up 1:Up to Down
13 extern bit bLEFT_RIGHT = 1;
14
15 bit ir_enable=0;
16 uCHAR idata ir_data;
17 extern uCHAR idata cSource;
18 void IRSourceSelCtrl(void);
19 void IRSCALEREvent(void);
20 void IRDismodeEvent(void);
21 extern void Delay_ms(uCHAR);
22
23 bit Filter13(bit le)
24 {
25 1 bit r;
26 1 r=INT1;
27 1 if(le==1)
28 1 {
29 2 _nop_();
30 2 _nop_();
31 2 _nop_();
32 2 r&=INT1;
33 2 _nop_();
34 2 _nop_();
35 2 _nop_();
36 2 r&=INT1;
37 2 }
38 1 else
39 1 {
40 2 _nop_();
41 2 _nop_();
42 2 _nop_();
43 2 r|=INT1;
44 2 _nop_();
45 2 _nop_();
46 2 _nop_();
47 2 r|=INT1;
48 2 }
49 1 if(r==le)
50 1 return 1;
51 1 else
52 1 return 0;
53 1 }
54 /*遥控接收在此中断程序内完成
C51 COMPILER V7.06 IRINT 05/20/2005 14:34:58 PAGE 2
55 数据放在ir_data内*/
56 /************************************/
57 /* Interrupt for IR subroutine */
58 /* external interrupt source INT0 */
59 /************************************/
60 void int1Remote(void) interrupt 2
61 {
62 1 register BYTE i;
63 1 unsigned int count; /*计时变量*/
64 1 unsigned int temp0,temp1,ir_code=0;
65 1 ir_enable=TRUE;
66 1 TMOD=0x11; /*timer 0 operate in 16 bit mode*/
67 1 EX1=0;
68 1 TL0=0;
69 1 TH0=0;
70 1 TR0=1;
71 1 /************************************/
72 1 /* Detect IR Head */
73 1 /************************************/
74 1 do /*Detect IR head 9mS*/
75 1 {
76 2 count=(TL0+TH0*256); /*count :us unit */
77 2 if(Filter13(1)==1) break;
78 2 }while(count<=(IR_HEAD+DELTA));
79 1 TR0=0; /*停止计时*/
80 1
81 1 if(Filter13(0)==1||count<(IR_HEAD-DELTA*25)) /*for some noise disturb IR*/
82 1 {
83 2 ir_enable=FALSE; /* no IR head or not suitable for Ir head*/
84 2 EX1=1;
85 2 TR0=1;
86 2 return;
87 2 }
88 1 /************************************/
89 1 /* Detect OFF CODE 4.5mS */
90 1 /************************************/
91 1 while(Filter13(0)==1);
92 1 TR0=0;
93 1 TL0=0;
94 1 TH0=0;
95 1 TR0=1;
96 1 do /*Detect IR OFF CODE*/
97 1 {
98 2 count=(TL0+TH0*256); /*count :us unit */
99 2 if(Filter13(0)==1) break;
100 2 }while(count<(OFF_CODE+DELTA));
101 1 TR0=0;
102 1 count=(TL0+TH0*256); /*count :us unit */
103 1 if(count<=(OFF_CODE-DELTA*4))
104 1 {
105 2 /*重复码OFF=2.25*/
106 2 if((count>(OFF_REP-DELTA)&&count<(OFF_REP+DELTA)))
107 2 { TR0=0;
108 3 TL0=0;
109 3 TH0=0;
110 3 TR0=1;
111 3
112 3 do
113 3 {
114 4 count=(TL0+TH0*256); /*count :us unit */
115 4 if(Filter13(1)==1) break;
116 4 }while(count<=(REP_CODE+DELTA));
C51 COMPILER V7.06 IRINT 05/20/2005 14:34:58 PAGE 3
117 3 TR0=0;
118 3 count=(TL0+TH0*256); /*count :us unit */
119 3 if(INT1==1)
120 3 {
121 4 TR0=0;
122 4 if(
123 4 //#ifdef SINAI_REMOTE
124 4 ir_data==REMOTE_KEY_VO_DEC||ir_data==REMOTE_KEY_VO_INC||
125 4 //#endif
126 4 ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR )
127 4
128 4 {
129 5
130 5 ir_enable=TRUE; /*注意:ir_data不变*/
131 5 EX1=0;
132 5 }
133 4 else
134 4 {
135 5 ir_data=0;
136 5 ir_enable=FALSE;
137 5 EX1=1;
138 5 TR0=1;
139 5 }
140 4 return;
141 4 }
142 3 }
143 2 else if(count>(OFF_REP+DELTA))
144 2 {
145 3
146 3 ir_enable=TRUE; /*注意:ir_data不变*/
147 3 EX1=0;
148 3
149 3 }
150 2 else
151 2 {
152 3 ir_enable=FALSE; /*not suitable for off code*/
153 3 EX1=1;
154 3 TR0=1;
155 3 return;
156 3 }
157 2 }
158 1
159 1 /************************************/
160 1 /* Detect 16 bit address code */
161 1 /************************************/
162 1 if(ir_enable==TRUE)
163 1 {
164 2 TMOD=0x11; /*counter start with INT0 and TR0*/
165 2 ir_code=0; /*初始化变量*/
166 2 for(i=0;i<16;i++)
167 2 {
168 3 while(INT1==0);
169 3 TL0=0;
170 3 TH0=0;
171 3 TR0=1;
172 3 do
173 3 {
174 4 count=(TL0+TH0*256); /*count :us unit */
175 4 if(Filter13(0)==1) break;
176 4 }while(count<=(CODE_1_TIME+DELTA)); /*INT0为高电平时计时*/
177 3 TR0=0;
178 3 ir_code<<=1;
C51 COMPILER V7.06 IRINT 05/20/2005 14:34:58 PAGE 4
179 3 if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA))) /*detect 1 code 2.24mS-0.56mS=1.68mS*/
180 3 ir_code++;
181 3 else if((count>(CODE_0_TIME-DELTA))&&(count<=(CODE_0_TIME+DELTA))); /*detect 0 code 1.12mS-0.56mS=0.56
-mS*/
182 3 else
183 3 {
184 4 ir_enable=FALSE;
185 4 TR0=1;
186 4 break; /*not suitable for address code */
187 4 }
188 3 } /*end for*/
189 2 }
190 1 /************************************/
191 1 /* Detect 16 bit data code */
192 1 /************************************/
193 1 if(ir_enable==TRUE&&ir_code==IR_SYSTEM_CODE)/**/
194 1 {
195 2 TMOD=0x11; /*counter start with INT0 and TR0*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -