📄 current1.lst
字号:
250 2 if(c_err<3)
251 2 {
252 3 TR_ans();
253 3 goto resend;
254 3 }
255 2 else
256 2 {
257 3 err=2;
258 3 // err_operate();
259 3 }
260 2 }
261 1 else
262 1 R_ANSW=0;
263 1
264 1 }
265
266 void start_t2()
267 {
268 1 TM2CON=0x8D; //16位溢出,分频系数8,f/12
269 1 EA=1;
270 1 TM2IR=0;
271 1 }
272
273 void EX0_INT (void) interrupt 0 //急停
274 {
275 1 EX0=0;
276 1 send_enable=1;
277 1 if(YOUHU)
278 1 {
279 2 current_enable=0; //关电源使能
280 2 con_hf=1; //关高频使能
281 2 }
282 1
283 1 while(err_ok==0)
284 1 {
285 2 if(called==1)
286 2 {
287 3 if(current_err==0)
288 3 {
289 4 ini_sbuf(M_main,answer,OK,0,0,0,0);
290 4 s_byte_nums=4;
291 4 TR_noans();
292 4 }
293 3 else
294 3 {
295 4 ini_sbuf(M_main,err_infor,M_current,err,0,0,0);
296 4 s_byte_nums=5;
297 4 TR_noans();
298 4 current_err=0;
299 4 err=0;
300 4 stop=1;
301 4 }
302 3 called=0;
303 3 }
C51 COMPILER V7.06 CURRENT1 07/15/2005 11:04:46 PAGE 6
304 2 }
305 1 urgent_stop=1;
306 1 }
307
308 void T0_INT (void) interrupt 1
309 {
310 1 c_t0++;
311 1 if(ahf_ok==1)
312 1 {
313 2
314 2 if(c_t0==c_ahf_p||c_t0==c_ahf_b)
315 2 {
316 3 if(current_out==1)
317 3 {
318 4 if(ahf_p_b==1&&c_t0==c_ahf_p)
319 4 {
320 5 TR0=0;
321 5 ahf_p_b=0;
322 5 c_t0=0;
323 5 IM8=IMM%256;
324 5 IM4=IMM/256;
325 5 UPD=0X00;
326 5 TR0=1;
327 5 }
328 4 else if(ahf_p_b==0&&c_t0==c_ahf_b)
329 4 {
330 5 TR0=0;
331 5 ahf_p_b=1;
332 5 c_t0=0;
333 5 IM8=IM%256;
334 5 IM4=IM/256;
335 5 UPD=0X00;
336 5 TR0=1;
337 5 }
338 4 }
339 3 else if(current_out==0)
340 3 {
341 4 if(ahf_p_b==1&&c_t0==c_ahf_p)
342 4 {
343 5 TR0=0;
344 5 ahf_p_b=0;
345 5 c_t0=0;
346 5 IB8=IBB%256;
347 5 IB4=IBB/256;
348 5 UPD=0X00;
349 5 TR0=1;
350 5 }
351 4 else if(ahf_p_b==0&&c_t0==c_ahf_b)
352 4 {
353 5 TR0=0;
354 5 ahf_p_b=1;
355 5 c_t0=0;
356 5 IB8=IB%256;
357 5 IB4=IB/256;
358 5 UPD=0X00;
359 5 TR0=1;
360 5 }
361 4 }
362 3 }
363 2 }
364 1 }
365
C51 COMPILER V7.06 CURRENT1 07/15/2005 11:04:46 PAGE 7
366 void EX1_INT(void) interrupt 2 //错误检测
367 {
368 1 unsigned char get_err;
369 1 EX1=0;
370 1
371 1 get_err=P5;
372 1 get_err=get_err&0x08;
373 1 if(get_err==0)
374 1 err=4;
375 1 else
376 1 {
377 2 get_err=P5;
378 2 get_err=get_err&0x10;
379 2 if(get_err==0)
380 2 err=5;
381 2 else
382 2 {
383 3 get_err=P5;
384 3 get_err=get_err&0x20;
385 3 if(get_err==0)
386 3 err=6;
387 3 else
388 3 {
389 4 get_err=P5;
390 4 get_err=get_err&0x30;
391 4 if(get_err==0)
392 4 err=8;
393 4 else
394 4 {
395 5 get_err=P5;
396 5 get_err=get_err&0x40;
397 5 if(get_err==0)
398 5 err=7;
399 5 }
400 4 }
401 3 }
402 2 }
403 1 if(err!=0)
404 1 {
405 2 current_err=1;
406 2 stop=0;
407 2 }
408 1 else
409 1 EX1=1;
410 1 }
411
412 void T1_INT (void) interrupt 3
413 {
414 1 c_t1++;
415 1 if(send==1)
416 1 {
417 2 if(c_t1==7)
418 2 {
419 3 S0BUF=sbuffer[POINTER0];
420 3 c_t1=0;
421 3 }
422 2 }
423 1 else
424 1 {
425 2 if(c_t1==100)
426 2 {
427 3 TR1=0;
C51 COMPILER V7.06 CURRENT1 07/15/2005 11:04:46 PAGE 8
428 3 overtime=1;
429 3 }
430 2 }
431 1 }
432
433 void TR_INT (void) interrupt 4 //串行口中断
434 {
435 1 EA=0; //关中断
436 1 if(TI==1) //发送完成
437 1 {
438 2 TI=0;
439 2 POINTER0++; //发送缓冲指针加1
440 2 if(POINTER0<s_byte_nums-1)
441 2 SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
442 2 else
443 2 sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
444 2 if(POINTER0==s_byte_nums)
445 2 REN=1;
446 2 }
447 1
448 1 if(RI==1) //接收完成
449 1 {
450 2 RI=0;
451 2 POINTER1++; //接收缓冲指针加1
452 2 rbuffer[POINTER1-1]=S0BUF; //从接收缓冲读出数据
453 2 if(rbuffer[0]==M_current||rbuffer[0]==M_ALL||rbuffer[0]==M_current_RW)
454 2 {
455 3 SM2=0;
456 3 if(POINTER1==2) //获取字节个数
457 3 r_byte_nums=get_byte_nums(rbuffer[1]);
458 3 if(POINTER1<r_byte_nums)
459 3 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
460 3 else
461 3 {
462 4 SM2=1;
463 4 if(RSUM==rbuffer[r_byte_nums-1])
464 4 {
465 5 if(ans==0)
466 5 {
467 6 POINTER1=0;
468 6 RSUM=0;
469 6 }
470 5 S_ANSW=OK;
471 5 data_type();
472 5 }
473 4 else
474 4 {
475 5 S_ANSW=FAIL;
476 5 if(resend==0)
477 5 resend=1;
478 5 }
479 4 r_byte_nums=4;
480 4 }
481 3 }
482 2 else
483 2 POINTER1=0;
484 2 }
485 1 EA=1; //开中断
486 1 }
487
488 void S1_int (void) interrupt 5 //I2C
489 {
C51 COMPILER V7.06 CURRENT1 07/15/2005 11:04:46 PAGE 9
490 1 ES1=0;
491 1 if(S1STA==0x00)
492 1 {
493 2 FF=1;
494 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
495 2 }
496 1 if(S1STA==0x08)
497 1 {
498 2 S1DAT=SLA;
499 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
500 2 }
501 1 if(S1STA==0x10)
502 1 {
503 2 S1DAT=SLA;
504 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
505 2 }
506 1 if(S1STA==0x18)
507 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -