📄 irda.ls1
字号:
221 ; dispaly(unsigned char keynum);
222 ; void delay1ms(unsigned int count);
223 ; /*分别存放红外线译码后的数据*/
224 ; unsigned char data e1 _at_ 0x1A; /*存放低8位地址码*/
225 ; unsigned char data w1 _at_ 0x1B; /*存放高8位地址码*/
226 ; unsigned char data e2 _at_ 0x1C; /*存放8位数据码*/
227 ; unsigned char data w2 _at_ 0x1D; /*存放8位数据反码*/
228 ; //sbit IrInput=P3^2; //红外线输入引脚,可自定义
229 ; unsigned char LEDdata[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//0-9段码
230 ; /*代表遥控器上的1--28按键红外码值*/
231 ; unsigned char Irda_data[]={0x5f,0x50,0x5d,0x44,0x41,0x0a,0x42,0x46,0x47,0x49,
232 ; 0x05,0x06,0x07,0x09,0x45,0x03,0x5c,0x1e,0x5e,0x02,
233 ; 0x58,0x1a,0x5b,0x01,0x1b,0x59,0x5a,0x18};//1--28
234 ; /*********************主程序***************************/
235 ;
236 ; void main(void)
237
---- 238 RSEG ?PR?main?IRDA
0000 239 main:
240 USING 0
241 ; SOURCE LINE # 31
242 ; {
243 ; SOURCE LINE # 32
244 ; unsigned char i;
245 ; IT0 = 1; //INT0下降沿有效
246 ; SOURCE LINE # 34
0000 D288 247 SETB IT0
248 ; EX0 = 1; //开INT0中断;
249 ; SOURCE LINE # 35
0002 D2A8 250 SETB EX0
251 ; P0=0xff;
252 ; SOURCE LINE # 36
0004 7580FF 253 MOV P0,#0FFH
254 ; P1=0xff;
255 ; SOURCE LINE # 37
0007 7590FF 256 MOV P1,#0FFH
A51 MACRO ASSEMBLER IRDA 11/25/2005 22:56:48 PAGE 5
257 ; P2=0xff;
258 ; SOURCE LINE # 38
000A 75A0FF 259 MOV P2,#0FFH
260 ; P3=0xff;
261 ; SOURCE LINE # 39
000D 75B0FF 262 MOV P3,#0FFH
263 ; EA = 1; //允许CPU中断
264 ; SOURCE LINE # 40
0010 D2AF 265 SETB EA
0012 266 ?C0001:
267 ; while(1)
268 ; SOURCE LINE # 41
269 ; {
270 ; SOURCE LINE # 42
271 ; if(keynumber!=0xff)
272 ; SOURCE LINE # 43
0012 E500 F 273 MOV A,keynumber
0014 F4 274 CPL A
0015 60FB 275 JZ ?C0001
276 ; {
277 ; SOURCE LINE # 44
278 ; for(i=0;i<10;i++)
279 ; SOURCE LINE # 45
0017 E4 280 CLR A
0018 F500 F 281 MOV i?040,A
001A 282 ?C0004:
283 ; dispaly(keynumber);
284 ; SOURCE LINE # 46
001A AF00 F 285 MOV R7,keynumber
001C 120000 F 286 LCALL _dispaly
001F 0500 F 287 INC i?040
0021 E500 F 288 MOV A,i?040
0023 C3 289 CLR C
0024 940A 290 SUBB A,#0AH
0026 40F2 291 JC ?C0004
0028 292 ?C0005:
293 ; keynumber=0XFF;
294 ; SOURCE LINE # 47
0028 7500FF F 295 MOV keynumber,#0FFH
296 ; }
297 ; SOURCE LINE # 48
298 ;
299 ; }
300 ; SOURCE LINE # 50
002B 80E5 301 SJMP ?C0001
302 ; END OF main
303
304 ;
305 ; }
306 ;
307 ; /*******************红外线解码子程序*******************/
308 ; void Irda(void)
309
---- 310 RSEG ?PR?Irda?IRDA
0000 311 Irda:
312 ; SOURCE LINE # 55
313 ; {
314 ; SOURCE LINE # 56
315 ; #pragma asm
316 ; SB:
0000 317 SB:
318 ; MOV R4,#8 ;8毫秒为高电平错误
0000 7C08 319 MOV R4,#8 ;8毫秒为高电平错误
320 ; SBA:
0002 321 SBA:
322 ; MOV R5,#250
A51 MACRO ASSEMBLER IRDA 11/25/2005 22:56:48 PAGE 6
0002 7DFA 323 MOV R5,#250
324 ; SBB:
0004 325 SBB:
326 ; JB P3.2,SXB1
0004 20B208 327 JB P3.2,SXB1
328 ; DJNZ R5,SBB
0007 DDFB 329 DJNZ R5,SBB
330 ; DJNZ R4,SBA
0009 DCF7 331 DJNZ R4,SBA
332 ; MOV R4,#2
000B 7C02 333 MOV R4,#2
334 ; JMP SBC
000D 8008 335 JMP SBC
336 ; SXB1:
000F 337 SXB1:
338 ; MOV R5,#5
000F 7D05 339 MOV R5,#5
340 ; SXB2: ;去掉20US的尖峰干扰信号
0011 341 SXB2: ;去掉20US的尖峰干扰信号
342 ; JNB P3.2,SBB
0011 30B2F0 343 JNB P3.2,SBB
344 ; DJNZ R5,SXB2
0014 DDFB 345 DJNZ R5,SXB2
346 ; RET
0016 22 347 RET
348 ; SBC:
0017 349 SBC:
350 ; MOV R5,#250
0017 7DFA 351 MOV R5,#250
352 ; SB1:
0019 353 SB1:
354 ; JB P3.2,SB2 ;2MS内不为高电平错误(监测9MS的低电平引导码)
0019 20B205 355 JB P3.2,SB2 ;2MS内不为高电平错误(监测9MS的低电平引导码)
356 ; DJNZ R5,SB1
001C DDFB 357 DJNZ R5,SB1
358 ; DJNZ R4,SBC
001E DCF7 359 DJNZ R4,SBC
360 ; RET
0020 22 361 RET
362 ; SB2: ;去掉20US的尖峰干扰信号
0021 363 SB2: ;去掉20US的尖峰干扰信号
364 ; MOV R5,#5
0021 7D05 365 MOV R5,#5
366 ; SB2_A:
0023 367 SB2_A:
368 ; JNB P3.2,SB1
0023 30B2F3 369 JNB P3.2,SB1
370 ; DJNZ R5,SB2_A
0026 DDFB 371 DJNZ R5,SB2_A
372 ; MOV R4,#3
0028 7C03 373 MOV R4,#3
374 ; SB2_1:
002A 375 SB2_1:
376 ; MOV R5,#250
002A 7DFA 377 MOV R5,#250
378 ; SB3: ;监测4.5MS高电平,如3MS内出现低电平错误
002C 379 SB3: ;监测4.5MS高电平,如3MS内出现低电平错误
380 ; JNB P3.2,SXC
002C 30B208 381 JNB P3.2,SXC
382 ; DJNZ R5,SB3
002F DDFB 383 DJNZ R5,SB3
384 ; DJNZ R4,SB2_1
0031 DCF7 385 DJNZ R4,SB2_1
386 ; MOV R4,#2
0033 7C02 387 MOV R4,#2
388 ; JMP SB3_1
A51 MACRO ASSEMBLER IRDA 11/25/2005 22:56:48 PAGE 7
0035 8008 389 JMP SB3_1
390 ; SXC: ;去掉20US的尖峰干扰信号
0037 391 SXC: ;去掉20US的尖峰干扰信号
392 ; MOV R5,#5
0037 7D05 393 MOV R5,#5
394 ; SXC1:
0039 395 SXC1:
396 ; JB P3.2,SB3
0039 20B2F0 397 JB P3.2,SB3
398 ; DJNZ R5,SXC1
003C DDFB 399 DJNZ R5,SXC1
400 ; RET
003E 22 401 RET
402 ; SB3_1: ;监测4.5MS高电平,如5MS内不为低电平错误
003F 403 SB3_1: ;监测4.5MS高电平,如5MS内不为低电平错误
404 ; MOV R5,#250
003F 7DFA 405 MOV R5,#250
406 ; SB3_2:
0041 407 SB3_2:
408 ; JNB P3.2,SB4
0041 30B205 409 JNB P3.2,SB4
410 ; DJNZ R5,SB3_2
0044 DDFB 411 DJNZ R5,SB3_2
412 ; DJNZ R4,SB3_1
0046 DCF7 413 DJNZ R4,SB3_1
414 ; RET
0048 22 415 RET
416 ; SB4: ;去掉20US的尖峰干扰信号
0049 417 SB4: ;去掉20US的尖峰干扰信号
418 ; MOV R5,#5
0049 7D05 419 MOV R5,#5
420 ; SB4_1:
004B 421 SB4_1:
422 ; JB P3.2,SB3_2
004B 20B2F3 423 JB P3.2,SB3_2
424 ; DJNZ R5,SB4_1
004E DDFB 425 DJNZ R5,SB4_1
426 ; MOV R1,#1AH ;设定1AH为起始RAM区
0050 791A 427 MOV R1,#1AH ;设定1AH为起始RAM区
428 ; MOV R2,#4
0052 7A04 429 MOV R2,#4
430 ; PP: MOV R3,#8
0054 7B08 431 PP: MOV R3,#8
432 ; JJJJ:
0056 433 JJJJ:
434 ; MOV R5,#250
0056 7DFA 435 MOV R5,#250
436 ; JJJJ2: ;1MS内不为低电平错误
0058 437 JJJJ2: ;1MS内不为低电平错误
438 ; JB P3.2,JJJJ3
0058 20B203 439 JB P3.2,JJJJ3
440 ; DJNZ R5,JJJJ2
005B DDFB 441 DJNZ R5,JJJJ2
442 ; RET
005D 22 443 RET
444 ; JJJJ3:
005E 445 JJJJ3:
446 ; LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
005E 120000 F 447 LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
448 ; MOV C,P3.2 ;将P3.7引脚此时的电平状态0或1存入C中
0061 A2B2 449 MOV C,P3.2 ;将P3.7医糯耸钡牡缙阶刺
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -