📄 ir_receive.lst
字号:
C51 COMPILER V7.06 IR_RECEIVE 05/18/2008 14:29:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IR_RECEIVE
OBJECT MODULE PLACED IN IR_Receive.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE IR_Receive.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG52.H>
2 #include <intrins.h>
3
4 #define uchar unsigned char
5 sbit IR_Pin=P3^3;
6
7 extern uchar inbuf1[];
8 //extern uchar read_flagg;
9 extern uchar Ir_Over;
10
11 uchar Ir_Count=0;
12 uchar Ir_Over;
13 uchar Ir_Data;
14 uchar ti,temp=0;
15 uchar DAT[]={0,0,0,0};
16
17 void delay_2us(unsigned char);
18 void delay_1ms();
19 void Init();
20 /*********蜂鸣器函数调用声明********/
21 //void ok_beep();
22 /********串口通讯函数调用声明*******/
23 void send_string_com(unsigned char *str,unsigned char strlen); //向串口发送一个字符串
24 void send_char_com(unsigned char ch);
25
26 void IR() interrupt 2
27 {
28 1 EX0=0; EX1=0; //关外部中断
29 1 Ir_Data=1;
30 1 for (ti=0;ti<4;ti++) //延时,跳过引导码的低电平
31 1 {
32 2 delay_1ms();
33 2 if (IR_Pin)
34 2 {
35 3 Ir_Data=0;
36 3 break;
37 3 }
38 2 }
39 1 if (Ir_Data)
40 1 {
41 2 while(IR_Pin==0);
42 2 for (ti=0;ti<4;ti++) //延时,跳过引导码高电平
43 2 {
44 3 delay_1ms();
45 3 if (IR_Pin==0)
46 3 {
47 4 Ir_Data=0;
48 4 break;
49 4 }
50 3 }
51 2 if (Ir_Data)
52 2 {
53 3 while (IR_Pin); //等待低电平
54 3 for (temp=0;temp<4;temp++) //存放四个字节
55 3 for (Ir_Count=0;Ir_Count<8;Ir_Count++) //8位
C51 COMPILER V7.06 IR_RECEIVE 05/18/2008 14:29:17 PAGE 2
56 3 {
57 4 delay_2us(100); //延时200us,跳过低电平时间
58 4 while (IR_Pin==0);
59 4 delay_2us(200); //延时800us
60 4 delay_2us(200);
61 4 DAT[temp]>>=1;
62 4 if (IR_Pin) DAT[temp] |= 0x80;
63 4 while(IR_Pin);
64 4 }
65 3 if (DAT[0]==DAT[1]&&DAT[2]!=DAT[3]) Ir_Over=1;
66 3 for (ti=0;ti<118;ti++) delay_1ms();
67 3 }
68 2 }
69 1 EX0=1;EX1=1; //开外部中断
70 1 }
71
72 void Init_IR()
73 {
74 1 Ir_Over=0;
75 1 IT1=1;
76 1 EX1=1;
77 1 EA=1;
78 1 }
79
80 void IR_Receive_function()
81 {
82 1 unsigned i=0,k=0;
83 1 if (Ir_Over)
84 1 {
85 2 EX0=0; EX1=0; //关外部中断
86 2 if (DAT[0]==DAT[1]&&DAT[2]!=DAT[3])
87 2 {
88 3 switch (DAT[3])
89 3 {
90 4 case 0xFB: break; //光电监测
91 4 case 0XE8: if(inbuf1[19]=='1')inbuf1[19]='0';else inbuf1[19]='1';break;
92 4 case 0XE9: if(inbuf1[20]=='1')inbuf1[20]='0';else inbuf1[20]='1';break;
93 4 case 0XEA: if(inbuf1[21]=='1')inbuf1[21]='0';else inbuf1[21]='1';break;
94 4 case 0XEC: if(inbuf1[22]=='1')inbuf1[22]='0';else inbuf1[22]='1';break;
95 4 case 0XED: if(inbuf1[23]=='1')inbuf1[23]='0';else inbuf1[23]='1';break;
96 4 case 0XEE: if(inbuf1[24]=='1')inbuf1[24]='0';else inbuf1[24]='1';break;
97 4 case 0XF0: if(inbuf1[25]=='1')inbuf1[25]='0';else inbuf1[25]='1';break;
98 4 case 0XF1: if(inbuf1[26]=='1')inbuf1[26]='0';else inbuf1[26]='1';break;
99 4 case 0XF2: break;
100 4 case 0XF4: break;
101 4 case 0XF5: break;
102 4 case 0XF6: break;
103 4 default: break;
104 4 }
105 3 }
106 2 Ir_Over=0;
107 2 EX0=1;EX1=1; //开外部中断
108 2 }
109 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 460 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 4
C51 COMPILER V7.06 IR_RECEIVE 05/18/2008 14:29:17 PAGE 3
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 + -