📄 irint.lst
字号:
C51 COMPILER V7.06 IRINT 03/23/2005 16:17:54 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
stmt level source
1 //#ifdef INTERRUPT1
2 #include "reg51.h"
3 #include <intrins.h>
4 //#include "Common.h"
5 #include "Remote.h"
6 //#include "KeyPad.h"
7 //#include "OSDDraw.h"
8 //#include "TwoWire.h"
9 //#include "T101_Util.h"
10
11 //extern uWORD XCLK_MCU;
12 extern bit ir_enable;
13 extern uCHAR ir_data;
*** ERROR C129 IN LINE 13 OF C:\T100_S~1\IRINT.C: missing ';' before 'ir_data'
14 uCHAR idata ir_data1;
15 //extern uWORD count1;
16 //extern bit IRFACTRY_Ctrl(uCHAR cCom);
17
18 bit Filter13(bit le)
19 {
20 bit r;
21 r=INT1;
22 if(le==1)
23 {
24 _nop_();
25 _nop_();
26 _nop_();
27 r&=INT1;
28 _nop_();
29 _nop_();
30 _nop_();
31 r&=INT1;
32 }
33 else
34 {
35 _nop_();
36 _nop_();
37 _nop_();
38 r|=INT1;
39 _nop_();
40 _nop_();
41 _nop_();
42 r|=INT1;
43 }
44 if(r==le)
45 return 1;
46 else
47 return 0;
48 }
49 /*遥控接收在此中断程序内完成
50 数据放在ir_data内*/
51 /************************************/
52 /* Interrupt for IR subroutine */
53 /* external interrupt source INT0 */
54 /************************************/
C51 COMPILER V7.06 IRINT 03/23/2005 16:17:54 PAGE 2
55 void int1Remote(void) interrupt 2
56 {
57 /* static uWORD IR_HEAD=20000;// = (XCLK_MCU*3/4);//10738//9000//7500
58 static uWORD OFF_CODE=10000;// = (IR_HEAD/2);//5369//4500//3750
59 uWORD OFF_REP;// = (IR_HEAD/4);//2684//2250// 1875
60 uWORD REP_CODE;// = (IR_HEAD/16);//667//467
61 uWORD DELTA ;// = 300;//250
62 uWORD CODE_0_TIME;//= (IR_HEAD/16);//667//557//467
63 uWORD CODE_1_TIME;//= (CODE_0_TIME*3);//2000//1670//1400*/
64 register BYTE i;
65 unsigned int count,count1; /*计时变量*/
66 unsigned int temp0,temp1,ir_code=0;
67 ir_enable=TRUE;
68 TMOD=0x11; /*timer 0 operate in 16 bit mode*/
69 EX1=0;
70 TL0=0;
71 TH0=0;
72 TR0=1;
73 /************************************/
74 /* Detect IR Head */
75 /************************************/
76 do /*Detect IR head 9mS*/
77 {
78 count=(TL0+TH0*256); /*count :us unit */
79 if(Filter13(1)==1) break;
80 }while(count<=(IR_HEAD+DELTA));
81 TR0=0; /*停止计时*/
82 count=(TL0+TH0*256); /*count :us unit */
83
84 if(Filter13(0)==1||((count<(IR_HEAD-DELTA*25))))//&&(IR_HEAD!=0xffff)))//||count<(7000))//IR_HEAD!=0xffff
-) /*for some noise disturb IR*/
85 {
86 ir_enable=FALSE; /* no IR head or not suitable for Ir head*/
87 EX1=1;
88 TR0=1;
89 return;
90 }
91 /************************************/
92 /* Detect OFF CODE 4.5mS */
93 /************************************/
94 while(Filter13(0)==1);
95 TR0=0;
96 TL0=0;
97 TH0=0;
98 TR0=1;
99 do /*Detect IR OFF CODE*/
100 {
101 count=(TL0+TH0*256); /*count :us unit */
102 if(Filter13(0)==1) break;
103 }while(count<(OFF_CODE+DELTA));
104 count1=count;
105 /* if(IR_HEAD==0xffff)IR_HEAD = count*2;//10738//9000//7500
106 OFF_CODE = IR_HEAD/2;//5369//4500//3750
107 OFF_REP = (IR_HEAD/4);//2684//2250// 1875
108 REP_CODE = (IR_HEAD/16);//667//467
109 DELTA = 300;//250
110 CODE_0_TIME= (IR_HEAD/16);//667//557//467
111 CODE_1_TIME= (CODE_0_TIME*3);//2000//1670//1400*/
112 TR0=0;
113 count=(TL0+TH0*256); /*count :us unit */
114 if(count<=(OFF_CODE-DELTA*2))
115 {
C51 COMPILER V7.06 IRINT 03/23/2005 16:17:54 PAGE 3
116 /*重复码OFF=2.25*/
117 if((count>(OFF_REP-DELTA)&&count<(OFF_REP+DELTA)))
118 {
119 TR0=0;
120 TL0=0;
121 TH0=0;
122 TR0=1;
123 do
124 {
125 count=(TL0+TH0*256); /*count :us unit */
126 if(Filter13(1)==1) break;
127 }while(count<=(REP_CODE+DELTA));
128 TR0=0;
129 count=(TL0+TH0*256); /*count :us unit */
130 if(INT1==1)
131 {
132 TR0=0;
133 if(ir_data==REMOTE_KEY_VO_DEC||ir_data==REMOTE_KEY_VO_INC||
134 ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR)
135 {
136 ir_enable=TRUE; /*注意:ir_data不变*/
137 EX1=0;
138 }
139 else
140 {
141 ir_data=0;
142 ir_enable=FALSE;
143 EX1=1;
144 TR0=1;
145 }
146 return;
147 }
148 }
149 else
150 {
151 ir_enable=FALSE; /*not suitable for off code*/
152 EX1=1;
153 TR0=1;
154 return;
155 }
156 }
157 /************************************/
158 /* Detect 16 bit address code */
159 /************************************/
160 if(ir_enable==TRUE)
161 {
162 TMOD=0x11; /*counter start with INT0 and TR0*/
163 ir_code=0; /*初始化变量*/
164 for(i=0;i<16;i++)
165 {
166 while(INT1==0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -