📄 ir.lst
字号:
C51 COMPILER V7.50 IR 07/06/2006 10:40:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN .\obj\Ir.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Ir.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\Ir.lst) OBJECT(.\obj\Ir.obj)
line level source
1
2 #include "board.h"
3
4 #include "keypaddef.h"
5 #if DebugIRCode
#include "debug.h"
#endif
8 #include "ir.h"
9 #include "global.h"
10 #include "Power.h"
11
12 #if DebugIRCode
BYTE xdata IRDebugCode0=0;
BYTE xdata IRDebugCode1=0;
BYTE xdata IRDebugData=0;
#endif
17 BYTE IR_Status;
18 WORD IR_Width;
19 BYTE IR_Bit_Count;
20 BYTE IR_Data;
21 BYTE IR_Data_Backup;
22 BYTE IR_ErrTimeCount;
23
24
25
26 void IR_Init(void)
27 {
28 1 BYTE tmp;
29 1
30 1 IT0 = 1; //set edge trigger -(INT1)
31 1 EX0 = 1;
32 1 tmp = TMOD&0xf0;//timer0
33 1 TMOD = tmp|0x01;
34 1 Set_IR_ResetFlag();
35 1 Clr_IR_Data_OKFlag();
36 1 IR_Data = 0;
37 1 IR_Bit_Count = 0;
38 1 IR_ErrTimeCount = 0;
39 1 }
40
41
42
43 void ir_interrupt(void) interrupt 0
44 {
45 1 EA = 0;
46 1 EX0 = 0;
47 1 //------------------------
48 1 TR0 = 0;
49 1 IR_Width = TH0;IR_Width <<=8;IR_Width |= TL0;
50 1 // TMOD = 0x11; //change timer1 mode
51 1 TH0 = IR_Parameter_Table[8]>>8;
52 1 TL0 = IR_Parameter_Table[8]&0xFF; // timer 1 counter
53 1 TF0 = 0;
54 1 ET0 = 1;
55 1 TR0 = 1;
C51 COMPILER V7.50 IR 07/06/2006 10:40:56 PAGE 2
56 1 IR_Width -= IR_Parameter_Table[8];
57 1 //-----------------------------------------------------------------------
58 1
59 1
60 1
61 1 if(IR_ResetFlag)
62 1 {
63 2
64 2 Clr_IR_ResetFlag();
65 2 Clr_IR_Data_OKFlag();
66 2 IR_Data = 0;
67 2 IR_Bit_Count = 0;
68 2 // IR_ErrTimeCount = 110;
69 2 // IR_ErrTimeCount = 108+IR_ErrTimeCountTorlance; //jt update 2004-04-27
70 2 IR_ErrTimeCount = 9;
71 2 }
72 1 else
73 1 {
74 2 if(IR_Bit_Count==0)//decode lead
75 2 {
76 3 if(IR_Width>IR_Parameter_Table[4] && IR_Width<IR_Parameter_Table[5])
77 3 IR_Bit_Count++;
78 3 }
79 2 else if(IR_Bit_Count<17)//decode customer code
80 2 {
81 3 //--------------------------------------------------------------
82 3 if(IR_Width>IR_Parameter_Table[0] && IR_Width<IR_Parameter_Table[1])
83 3 {
84 4 IR_Data >>= 1;IR_Bit_Count++;
85 4 }
86 3 if(IR_Width>IR_Parameter_Table[2] && IR_Width<IR_Parameter_Table[3])
87 3 {
88 4 IR_Data >>= 1;IR_Data |= 0x80;IR_Bit_Count++;
89 4 }
90 3 //--------------------------------------------------------------
91 3 if(IR_Bit_Count==9)
92 3 {
93 4 #if DebugIRCode
IRDebugCode0 = IR_Data;
Set_IR_DebugCustomerCode0_OKFlag();
#endif
97 4
98 4 if(IR_Data!=IR_Customer_Code[0])
99 4 IR_Bit_Count = 0;
100 4
101 4 }
102 3 if(IR_Bit_Count==17)
103 3 {
104 4 #if DebugIRCode
IRDebugCode1 = IR_Data;
Set_IR_DebugCustomerCode1_OKFlag();
#endif
108 4
109 4 if(IR_Data!=IR_Customer_Code[1])
110 4 IR_Bit_Count = 0;
111 4
112 4 }
113 3 }
114 2 else if(IR_Bit_Count<33)//decode data code
115 2 {
116 3 //test++;
117 3 //--------------------------------------------------------------
C51 COMPILER V7.50 IR 07/06/2006 10:40:56 PAGE 3
118 3 if(IR_Width>IR_Parameter_Table[0] && IR_Width<IR_Parameter_Table[1])
119 3 {
120 4 IR_Data >>= 1;IR_Bit_Count++;
121 4 }
122 3 if(IR_Width>IR_Parameter_Table[2] && IR_Width<IR_Parameter_Table[3])
123 3 {
124 4 IR_Data >>= 1;IR_Data |= 0x80;IR_Bit_Count++;
125 4 }
126 3 //--------------------------------------------------------------
127 3 if(IR_Bit_Count==25)
128 3 {
129 4
130 4 IR_Data_Backup = IR_Data;
131 4 }
132 3 if(IR_Bit_Count==33)
133 3 {
134 4 IR_Data = IR_Data^IR_Data_Backup;
135 4 if(IR_Data==0xff)
136 4 {
137 5 #if DebugIRCode
IRDebugData = IR_Data_Backup;
Set_IR_DebugData_OKFlag();
#endif
141 5
142 5 Set_IR_Data_OKFlag();
143 5 }
144 4 else
145 4 IR_Bit_Count = 0;
146 4 }
147 3 }
148 2 else if(IR_Width>IR_Parameter_Table[6] && IR_Width<IR_Parameter_Table[7])//decode stop and repeat
-code
149 2 {
150 3 // IR_ErrTimeCount = 110;
151 3 //IR_ErrTimeCount = 108+IR_ErrTimeCountTorlance; //jt update 2004-04-27
152 3 IR_ErrTimeCount = 9;
153 3
154 3 #if DebugIRCode
IRDebugData = IR_Data_Backup;
Set_IR_DebugData_OKFlag();
#endif
158 3
159 3 if(IR_Bit_Count==33)
160 3 Set_IR_Data_OKFlag();
161 3 }
162 2 }
163 1 EX0 = 1;
164 1 EA = 1;
165 1 }
166
167
168 void timer0(void) interrupt 1
169 {
170 1 // Int Vector at 001BH, Reg Bank 1
171 1 EA = 0;
172 1 ET0 = 0; // inhibit timer0 interrupt
173 1 TR0 = 0; // stop timer0
174 1
175 1
176 1 if(!IR_ErrTimeCount)
177 1 {
178 2 Set_IR_ResetFlag();
C51 COMPILER V7.50 IR 07/06/2006 10:40:56 PAGE 4
179 2 }
180 1 EA = 1;
181 1
182 1 }
183 /*
184 void timer1(void) interrupt 3
185 {
186 // Int Vector at 001BH, Reg Bank 1
187 EA = 0;
188 ET1 = 0; // inhibit timer1 interrupt
189 TR1 = 0; // stop timer1
190
191
192 if(!IR_ErrTimeCount)
193 {
194 Set_IR_ResetFlag();
195 }
196 EA = 1;
197
198 }
199
200 */
201
202 BYTE Get_IR_Key(void)
203 {
204 1 BYTE tmp;
205 1 tmp = KEY_NOTHING;
206 1
207 1 if(IR_Data_OKFlag)
208 1 {
209 2
210 2 tmp = IR_Key_Table[IR_Data_Backup];
211 2 Clr_IR_Data_OKFlag();
212 2 //test = IR_Data_Backup;
213 2 }
214 1 //----------------------------------
215 1
216 1 return tmp;
217 1 }
218
219
220 /*
221 void PC_Interrupt(void) interrupt 6
222 {
223 GreenLedOn();
224 //ForceDelay1ms(2);
225 //GreenLedOn();
226
227 }*/
228
229 /*
230 void Reset_Ir_Key(void)
231 {
232 Clr_IR_Data_OKFlag();
233 }
234 */
235 #if 0//DebugIRCode
void DebugIRHandler(void)
{
if(IR_DebugCustomerCode0_OKFlag)
{
Clr_IR_DebugCustomerCode0_OKFlag();
C51 COMPILER V7.50 IR 07/06/2006 10:40:56 PAGE 5
printData("IR CustomerCode0 %x",IRDebugCode0);
}
if(IR_DebugCustomerCode1_OKFlag)
{
Clr_IR_DebugCustomerCode1_OKFlag();
printData("IR CustomerCode1 %x",IRDebugCode1);
}
if(IR_DebugData_OKFlag)
{
Clr_IR_DebugData_OKFlag();
printData("IR Data %x",IRDebugData);
}
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 508 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -