📄 红外编码.lst
字号:
C51 COMPILER V8.02 红外盻码 05/02/2007 13:16:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 红外盻码
OBJECT MODULE PLACED IN 红外编码.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 红外编码.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89x51.H>
2 bit OP;
3 unsigned count;
4 unsigned endcount;
5 unsigned char flag;
6 char iraddr1;
7 char iraddr2;
8
9 void sendirdata(char p_irdata);
10 void delay(void);
11
12 main()
13 {int i;
14 1 count=0;
15 1 flag=0;
16 1 OP=0;
17 1 P3_7=1;
18 1
19 1 // EA=0;
20 1 TMOD=0X12;
21 1 // ET0=1;
22 1 TH0=0Xf3;
23 1 TL0=0Xf3;
24 1 // TR0=1;
25 1 // TR1=1;
26 1 TCON=0X50;
27 1 IE=0X9F;
28 1
29 1 iraddr1=3;
30 1 iraddr2=252;
31 1
32 1
33 1 for(i=0;i<3;i++)
34 1 {
35 2 delay();
36 2 sendirdata(12);
37 2
38 2 }
39 1
40 1 while(1);
41 1 }
42
43 /***********************************************************/
44 void timeint(void) interrupt 1
45 {
46 1
47 1 count++;
48 1
49 1 if(flag==1)
50 1 {
51 2 P3_7=~P3_7;
52 2 }
53 1 else{P3_7=1;}
54 1
55 1 }
C51 COMPILER V8.02 红外盻码 05/02/2007 13:16:01 PAGE 2
56 /*********************************************************************/
57 void sendirdata (char p_irdata)
58 {
59 1 int i;
60 1
61 1 char irdata=p_irdata;
62 1 //发送9ms的起始码
63 1 TR0=0;
64 1 endcount=340;//340*13=00us
65 1 flag=1;
66 1 count=0;
67 1 TR0=1;
68 1 do{}while(count<endcount);
69 1 //发送4.5ms的结果码
70 1 endcount=165;//117
71 1 flag=0;
72 1 count=0;
73 1 do{}while(count<endcount);
74 1 //发送十六地址的前八位
75 1 irdata=iraddr1;
76 1 for(i=0;i<8;i++)
77 1 //先发送0.56ms的38kHz的红外波
78 1 { endcount=20;
79 2 flag=1;
80 2 count=0;
81 2 do{}while(count<endcount);
82 2
83 2 if(irdata-(irdata/2)*2)
84 2 {
85 3 endcount=70;//41
86 3 }
87 2 else
88 2 {endcount=20;//15
89 3 }
90 2 flag=0;
91 2 count=0;
92 2 do{}while(count<endcount);
93 2
94 2 irdata=irdata>>1;
95 2 }
96 1 irdata=iraddr2;
97 1 for(i=0;i<8;i++)
98 1 {
99 2 endcount=20;
100 2 flag=1;
101 2 count=0;
102 2 do{}while(count<endcount);
103 2 if(irdata-(irdata/2)*2)
104 2 {
105 3 endcount=70;//41
106 3 }
107 2 else
108 2 {
109 3 endcount=20;//15
110 3 }
111 2 flag=0;
112 2 count=0;
113 2 do{}while (count<endcount);
114 2
115 2 irdata=irdata>>1;
116 2 }
117 1
C51 COMPILER V8.02 红外盻码 05/02/2007 13:16:01 PAGE 3
118 1 //发送八位数据
119 1 irdata=p_irdata;
120 1 for(i=0;i<8;i++)
121 1 {
122 2 endcount=20;
123 2 flag=1;
124 2 count=0;
125 2 do{}while(count<endcount);
126 2
127 2 if(irdata-(irdata/2)*2)
128 2 {endcount=70;//41
129 3 }
130 2 else
131 2 {endcount=20;//15
132 3 }
133 2 flag=0;
134 2 count=0;
135 2 do{}while(count<endcount);
136 2
137 2 irdata=irdata>>1;
138 2 }
139 1 //发送八位数据的反码
140 1 irdata=~p_irdata;
141 1 for(i=0;i<8;i++)
142 1 {
143 2 endcount=20;
144 2 flag=1;
145 2 count=0;
146 2 do{}while(count<endcount);
147 2
148 2 if(irdata-(irdata/2)*2)
149 2 {endcount=70;//41
150 3 }
151 2 else
152 2 {endcount=20;//15
153 3 }
154 2 flag=0;
155 2 count=0;
156 2 do{}while(count<endcount);
157 2
158 2 irdata=irdata>>1;
159 2 }
160 1 endcount=20;
161 1 flag=1;
162 1 count=0;
163 1 do{}while(count<endcount);
164 1 flag=0;
165 1 }
166 /*************************************************************/
167 void delay(void)
168 {
169 1 int i,j;
170 1 for(i=0;i<4;i++)
171 1 {
172 2 for(j=0;j<1;j++)
173 2 {}
174 2 }
175 1 }
176
177
178
C51 COMPILER V8.02 红外盻码 05/02/2007 13:16:01 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 567 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 2
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -