📄 ir.lst
字号:
129 4 if(RedBit!=RedData7) goto RClear;
130 4 break;
131 4 case 8: /*检验重复发送的第9 位数据*/
132 4 if(RedBit!=RedData8) goto RClear;
133 4 break;
134 4 case 9: /*检验重复发送的第10 位数据*/
135 4 if(RedBit!=RedData9) goto RClear;
136 4 break;
137 4 case 10: /*检验重复发送的第11 位数据*/
138 4 if(RedBit!=RedData10) goto RClear;
139 4 break;
140 4 case 11: /*检验重复发送的第12 位数据*/
141 4 if(RedBit!=RedData11) goto RClear;
142 4 RedMsg=1; /*接受到经过检验正确的编码后置位遥控消息*/
143 4 RedBit=0; /*复位接收位*/
144 4 RSend=0; /*复位重新发送标志*/
145 4 RedRead=0; /*复位接收过程标志*/
146 4 RedCon=0; /*复位载波计数*/
147 4 return;
148 4 default: /*重复发送的数据多于12 位时判断为错误*/
149 4 goto RClear;
150 4 }
151 3 }
152 2 else
153 2 {
154 3 switch(RedDataL&0xF)
155 3 {
156 4 case 0: /*保存首次发送的第1 位数据*/
157 4 RedData0=RedBit;
158 4 break;
159 4 case 1: /*保存首次发送的第2 位数据*/
160 4 RedData1=RedBit;
161 4 break;
162 4 case 2: /*保存首次发送的第3 位数据*/
163 4 RedData2=RedBit;
164 4 break;
165 4 case 3: /*保存首次发送的第4 位数据*/
166 4 RedData3=RedBit;
167 4 break;
168 4 case 4: /*保存首次发送的第5 位数据*/
169 4 RedData4=RedBit;
170 4 break;
171 4 case 5: /*保存首次发送的第6 位数据*/
172 4 RedData5=RedBit;
173 4 break;
174 4 case 6: /*保存首次发送的第7 位数据*/
175 4 RedData6=RedBit;
176 4 break;
177 4 case 7: /*保存首次发送的第8 位数据*/
178 4 RedData7=RedBit;
179 4 break;
C51 COMPILER V7.00 IR 08/21/2006 21:45:38 PAGE 4
180 4 case 8: /*保存首次发送的第9 位数据*/
181 4 RedData8=RedBit;
182 4 break;
183 4 case 9: /*保存首次发送的第10 位数据*/
184 4 RedData9=RedBit;
185 4 break;
186 4 case 10: /*保存首次发送的第11 位数据*/
187 4 RedData10=RedBit;
188 4 break;
189 4 case 11: /*保存首次发送的第12 位数据*/
190 4 RedData11=RedBit;
191 4 break;
192 4 default: /*首次发送的数据多于12 位时判断为错误*/
193 4 goto RClear;
194 4 }
195 3 }
196 2 RedDataL++; /*位位移加1*/
197 2 RedBit=0; /*复位接收位*/
198 2 RedRead=0; /*复位接收过程标志*/
199 2 RedCon=0; /*复位载波计数*/
200 2 nTimer=423; /*用定时140a 检测同步信号208a*/
201 2 TF1=0; /*复位定时器T01 益出标志*/
202 2 ET1=1;/*启动定时器*/
203 2 }
204 1 else if(RSend)
205 1 { /*在位接收没有结束时发生定时中断需要复位接收信息(同步)*/
206 2 RClear:
207 2 RedDataL=0; /*复位红外数据*/
208 2 RedDataH=0; /*复位红外数据*/
209 2 RedBit=0; /*复位接收位*/
210 2 RedRead=0; /*复位接收过程标志*/
211 2 RSend=0; /*复位重新发送标志*/
212 2 RedCon=0; /*复位载波计数*/
213 2 ET1=0; /*关闭T01 定时*/
214 2 }
215 1 }
216
217 void ir_init()
218 {
219 1 /*看门狗陷阱复位时无需初始化*/
220 1 Message=0; /*无消息*/
221 1 State=0; /*正常复位无任何状态*/
222 1
223 1 return;
224 1 }
225
226 unsigned char ir_read()
227 {
228 1 EX1= RedControl; /*设置遥控中断INT1 */
229 1 if(RedMsg)
230 1 { /*执行遥控指令*/
231 2 EX1=0; /*在指令没有处理完之前不能重复中断*/
232 2 switch(RedDataH)
233 2 {
234 3 /*这里加入红外指令的控制过程*/
235 3 case 0x82: /*Channel 1*/
236 3 break;
237 3 case 0xA0: /*Channel 2*/
238 3 break;
239 3 }
240 2 EX1=1;
241 2 RedDataL=0; /*复位红外数据*/
C51 COMPILER V7.00 IR 08/21/2006 21:45:38 PAGE 5
242 2 RedDataH=0; /*复位红外数据*/
243 2 RedMsg=0;
244 2 } /*复位红外遥控消息*/
245 1
246 1 return SOMEBODY_COMMING;
247 1 }
248
249 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 566 ----
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 + -