📄 main.lst
字号:
195 2 {
196 3 if(l_rec_data[0]==CMDID)
197 3 {
198 4 l_cmd_handle();
199 4 }
200 3 else if(l_rec_data[0]==0x80)
201 3 {
202 4 sleep_cout=1999;
203 4 }
204 3 TR1=0;
205 3 IE1=0;
206 3 EX1=1;
207 3 l_sys_mode=MODE0;
208 3 l_flg_recgood=0;
209 3 TR1=0;
210 3 }
211 2 if((RTCCON&0x80)==0x80)
212 2 {
213 3 RTCCON&=0x63;
214 3 if(time==l_ledsep)
215 3 {
216 4 l_flg_timeok=1;
217 4 time=0;
218 4 }
219 3 else
220 3 time++;
221 3 sleep_cout++;
222 3 if(sleep_cout==2000)
223 3 {
224 4 P0=0XFF;
225 4 PCON=PCON|0X03;
226 4 }
227 3 }
228 2 if((l_flg_timeok==1)&&(led_all_light==1))
229 2 {
230 3 switch(l_ledsta&0x03)
231 3 {
232 4 case 2 :
233 4 if(flash!=0)
234 4 flash=flash<<1;
235 4 else
236 4 flash=0x01;
237 4 break;
238 4 case 3 :
239 4 if(flash!=0)
240 4 flash=flash>>1;
241 4 else
C51 COMPILER V7.06 MAIN 08/08/2003 11:35:03 PAGE 5
242 4 flash=0x80;
243 4 break;
244 4 default :
245 4 break;
246 4 }
247 3 l_flg_timeok=0;
248 3 P0=flash^0xff;
249 3 }
250 2 }
251 1 }
252 void delay()
253 {
254 1 unsigned char i,j;
255 1 for(i=0;i<110;i++)
256 1 for(j=0;j<110;j++);
257 1
258 1 }
259 void delayNS(unsigned int k)
260 {
261 1 unsigned char i,j;
262 1 for(;k>0;k--)
263 1 for(i=0;i<110;i++)
264 1 for(j=0;j<110;j++);
265 1
266 1 }
267 uint8 checksum8(uint8 *chk8,uint8 num)
268 {
269 1 uint8 temp=0;
270 1 for( ;num>0;num--)
271 1 {
272 2 temp=temp+*chk8;
273 2 if(temp<*chk8)
274 2 temp++;
275 2 chk8++;
276 2 }
277 1 return(0xff-temp);
278 1 }
279 bit l_rce_data(void)
280 {
281 1 uint8 ii,temp;
282 1 TH0=0;
283 1 TL0=0;//可以增加选项
284 1 TR0=1;
285 1 while(RI==0&&TF0==0);
286 1 TR0=0;
287 1 if(TF0==0)
288 1 {
289 2 RI=0;
290 2 l_rec_data[1]=SBUF;
291 2 if(l_rec_data[0]==CMDID)
292 2 temp=5;
293 2 else
294 2 temp=3;
295 2 for(ii=2;ii<=temp;ii++)
296 2 {
297 3 TH0=0;
298 3 TR0=1;
299 3 while(RI==0&&TF0==0);
300 3 TR0=0;
301 3 if(TF0==0)
302 3 {
303 4 RI=0;
C51 COMPILER V7.06 MAIN 08/08/2003 11:35:03 PAGE 6
304 4 l_rec_data[ii]=SBUF;
305 4 }
306 3 else
307 3 {
308 4 TF0=0;
309 4 break;
310 4 }
311 3 }
312 2 if(l_rec_data[temp]==checksum8(&l_rec_data[1],temp-1))
313 2 {
314 3 l_rec_data[temp]=0;//清除校验和
315 3 return 1;
316 3 }
317 2 l_rec_data[temp]=0;//清除校验和
318 2 return 0;
319 2 }
320 1 else
321 1 {
322 2 TF0=0;
323 2 return(0);
324 2 }
325 1 }
326 void l_send_back(uint8 * data_ptr,uint8 num)
327 {
328 1 uint8 temp;
329 1 EX1=0;
330 1 SCON=0X40;
331 1 for(temp=0;temp<num;temp++)
332 1 {
333 2 SBUF=*data_ptr;
334 2 while(TI==0);
335 2 TI=0;
336 2 data_ptr++;
337 2 }
338 1 data_ptr=data_ptr-num;
339 1 SBUF=checksum8(data_ptr,num);
340 1 while(TI==0);
341 1 TI=0;
342 1 SCON=0X50;
343 1 IE1=0;
344 1 //EX1=1;
345 1 }
346 void l_cmd_handle()
347 {
348 1 l_ledsta=l_rec_data[1]&0x03;
349 1 l_ledsep=(l_rec_data[1]&0xf0)>>4;
350 1 if(l_ledsep==0)
351 1 {
352 2 led_all_light=0;
353 2 P0=0;
354 2 }
355 1 else
356 1 led_all_light=1;
357 1 flash=0;
358 1 time=0;
359 1 }
360 void l_sta_handle()
361 {
362 1 l_rec_data[1]=(l_ledsep<<4)+l_ledsta;
363 1 l_send_back(&l_rec_data[1],2);
364 1 }
365 void l_con_handle()
C51 COMPILER V7.06 MAIN 08/08/2003 11:35:03 PAGE 7
366 {
367 1 l_rec_data[1]=1;
368 1 l_rec_data[2]=0;
369 1 l_send_back(&l_rec_data[1],2);
370 1 }
371 void l_rtc_init()
372 {
373 1
374 1 RTCH=0x3;
375 1 RTCL=0Xff;
376 1 RTCCON=0X63;//??
377 1 PWDRT=0;
378 1 //EWDRT=1;
379 1 }
380
381
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 859 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 2
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -