📄 sent.lst
字号:
C51 COMPILER V7.50 SENT 05/10/2008 08:15:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SENT
OBJECT MODULE PLACED IN Sent.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Sent.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5
6 unsigned long datacap;
7 uchar count,data_count;
8 uchar keyval;
9
10 sfr AUXR=0x8e;
11 sbit rfin=P2^7;
12 sbit rfout=P2^6;
13 sbit led=P1^0;
14 sbit key1=P1^7;
15 sbit key2=P1^6;
16 sbit key3=P1^5;
17 bit jsing;
18
19 void init();
20 uchar keyscan();
21 void getdata();
22 void send(uchar);
23 bit sync();
24 void delay(uint z) ;
25
26 void main()
27 {
28 1 uchar m,n,t;
29 1 init();
30 1 while(1)
31 1 {
32 2 /*
33 2 while(keyval)
34 2 {
35 2 send(keyval);
36 2 keyval=0;
37 2
38 2 } */
39 2 while(sync())
40 2 {
41 3 jsing=1;
42 3 getdata();
43 3 jsing=0;
44 3 if(datacap==0x98008501)
45 3 {
46 4 led=0;
47 4 for(m=255;m>0;m--)
48 4 for(n=255;n>0;n--);
49 4 led=1;
50 4 }
51 3 if(datacap==0x98008502)
52 3 {
53 4 for(t=2;t>0;t--)
54 4 { for(m=255;m>0;m--)
55 5 for(n=255;n>0;n--);
C51 COMPILER V7.50 SENT 05/10/2008 08:15:05 PAGE 2
56 5 for(m=255;m>0;m--)
57 5 for(n=255;n>0;n--);
58 5 led=0;
59 5 for(m=255;m>0;m--)
60 5 for(n=255;n>0;n--);
61 5 led=1;
62 5 }
63 4 }
64 3 if(datacap==0x98008504)
65 3 {
66 4 for(t=3;t>0;t--)
67 4 { for(m=255;m>0;m--)
68 5 for(n=255;n>0;n--);
69 5 for(m=255;m>0;m--)
70 5 for(n=255;n>0;n--);
71 5 led=0;
72 5 for(m=255;m>0;m--)
73 5 for(n=255;n>0;n--);
74 5 led=1;
75 5 }
76 4 }
77 3 datacap=0x00;
78 3 }
79 2
80 2 }
81 1
82 1 }
83
84 void init()
85 {
86 1 jsing=0;
87 1 datacap=0x00;
88 1 keyval=0x00;
89 1 count=0;
90 1 data_count=0;
91 1 AUXR=0x01;
92 1 P1=0xff;
93 1 P3=0xff;
94 1 //下面3行用于定义T0 工作于方式1(16位模式)
95 1 // TMOD=0x01;
96 1 // TH0=(65536-100)/256;
97 1 // TL0=(65536-100)%256;
98 1 //下面2行用于定义T0 工作于方式2(8位自动装入模式)
99 1 TMOD=0x02;
100 1 TH0=(256-100)%256;
101 1 TL0=(256-100)%256;
102 1 // IE=0x82; //开总中断及时钟0中断
103 1 IE=0x83; //开总中断及外部0和时钟0中断
104 1 PT0=1;
105 1 TR0=1; //定时器0计时开始
106 1 IT0=1; //外部中断0为边沿(下降沿)触发
107 1 }
108
109
110 bit sync()
111 {
112 1 count=0;
113 1 while(!rfin);
114 1 if((count<2)||(count>6))
115 1 {
116 2 return 0;//出错}
117 2
C51 COMPILER V7.50 SENT 05/10/2008 08:15:05 PAGE 3
118 2 }
119 1 count=0;
120 1 while(rfin);
121 1 if((count<25)||(count>35))
122 1 {
123 2 return 0;//出错}
124 2 }
125 1 data_count=0;
126 1 datacap=0;
127 1 return 1;
128 1 }
129
130 void getdata()
131 {
132 1 uchar Hlevel_bit,temp;
133 1 temp=0x00;
134 1 for(;data_count<32;data_count++)
135 1 {
136 2 count=0;
137 2 while(!rfin);
138 2 if((count<2)||(count>12))
139 2 return ;//出错
140 2 if(count<6)
141 2 Hlevel_bit=0;//判断到0的高电平
142 2 else //if(count<13)
143 2 Hlevel_bit=1;//判断到1的高电平
144 2 count=0;
145 2 while(rfin);
146 2 if((count<2)||(count>12))
147 2 return ;//出错
148 2 if(!Hlevel_bit)
149 2 {
150 3 if(count>6)
151 3 datacap=datacap&0xfffffffe;//得到数据0
152 3 }
153 2 else
154 2 {
155 3 if(count<7)
156 3 datacap=datacap|0x01;//得到数据1
157 3 }
158 2
159 2 if(data_count<31)
160 2 datacap<<=1;
161 2 }
162 1
163 1 return;
164 1
165 1 }
166
167
168
169
170 void send(uchar k)
171 {
172 1 uchar temp;
173 1 bit firstd,Cbit;
174 1 count=0;
175 1 rfout=1;
176 1 while(count!=3);
177 1 rfout=0;
178 1 switch(k)
179 1 {
C51 COMPILER V7.50 SENT 05/10/2008 08:15:05 PAGE 4
180 2 case 1:datacap=0x98008501; break;
181 2 case 2:datacap=0x98008502; break;
182 2 case 3:datacap=0x98008504;break;
183 2 }
184 1
185 1 firstd=1;
186 1 for(temp=32;temp>0;temp--)
187 1 {
188 2 Cbit=0x80000000&datacap;
189 2 datacap<<=1;
190 2 if(firstd)
191 2 {
192 3 while(count!=0x21);
193 3 rfout=1;
194 3 count=0x00;
195 3 firstd=0;
196 3 }
197 2 if(Cbit)
198 2 {
199 3 while(count!=0x09);
200 3 rfout=0;
201 3 while(count!=0x0c);
202 3 rfout=1;
203 3 count=0;
204 3 }
205 2 if(!Cbit)
206 2 {
207 3 while(count!=0x03);
208 3 rfout=0;
209 3 while(count!=0x0c);
210 3 rfout=1;
211 3 count=0;
212 3 }
213 2 }
214 1 count=0;
215 1
216 1 }
217
218 uchar keyscan()
219 {
220 1 if(key1==0)
221 1 {
222 2 //delay(5);
223 2 if(key1==0);
224 2 while(!key1);
225 2 //delay(5);
226 2 while(!key1);
227 2 return 1;
228 2 }
229 1
230 1 if(key2==0)
231 1 {
232 2 //delay(5);
233 2 if(key2==0);
234 2 while(!key2);
235 2 //delay(5);
236 2 while(!key2);
237 2 return 2;
238 2 }
239 1
240 1 if(key3==0)
241 1 {
C51 COMPILER V7.50 SENT 05/10/2008 08:15:05 PAGE 5
242 2 //delay(5);
243 2 if(key3==0);
244 2 while(!key3);
245 2 //delay(5);
246 2 while(!key3);
247 2 return 3;
248 2 }
249 1 return 0;
250 1 }
251
252 void delay(uint z)
253 {
254 1 uint x,y;
255 1 for(x=z;x>0;x--)
256 1 for(y=110;y>0;y--);
257 1 }
258
259 void timer0() interrupt 1
260 {
261 1 // TH0=(65536-100)/256;
262 1 // TL0=(65536-100)%256;
263 1 count++;
264 1 }
265
266 void ext0() interrupt 0 using 1
267 {
268 1 EX0=0;
269 1 if(!jsing)
270 1 {
271 2 while(keyval=keyscan())
272 2 send(keyval) ;
273 2 keyval=0;
274 2 }
275 1 EX0=1;
276 1
277 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 693 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 4
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -