📄 main1_1.lst
字号:
220 3 p_received=1;
221 3 }break;
222 2 /*
223 2 case parameter: {
224 2 param=1;
225 2
226 2 }break;
227 2 */
228 2 /*
229 2 case program:
230 2 if(work==0||work==1)
231 2 {
232 2 PRG=rbuffer[3];
233 2 change_prg=1;
234 2 save_prg(); //将程序号存入EEPROM
235 2 }break;
236 2 */
237 2 case infor: {
238 3 switch(rbuffer[2])
239 3 {
240 4 /* case com_sector: nonce_sec=rbuffer[3];break;
241 4 case com_copyEXP: {
C51 COMPILER V7.06 MAIN1_1 09/23/2005 08:16:18 PAGE 5
242 4 PRG=rbuffer[2]; //假设为当前程序号
243 4 toPRG=rbuffer[3]; //目的程序号
244 4 copy=1;
245 4 }break;
246 4 */
247 4 case com_calling: R_ANSW=rbuffer[3];break;
248 4 case com_switch: {
249 5 YOUHU=rbuffer[3];
250 5 WIRE=rbuffer[4];
251 5 }break;
252 4 case com_weld_simu: {
253 5 //YOUHU=rbuffer[3];
254 5 new_switch1=1;
255 5 }break;
256 4 case com_wire_on_off: {
257 5 //WIRE=rbuffer[3];
258 5 new_switch2=1;
259 5 }break;
260 4 case com_delt_switch: new_switch3=1;;break;
261 4 default:break;
262 4 }
263 3 }break;
264 2 case p_out_sec: p_received=1;break;
265 2 // case p_in_sec: p_received=1;break;
266 2 default: break;
267 2 }
268 1 }
269
270 void EX0_INT (void) interrupt 0
271 {
272 1 EX0=0;
273 1 urgent_stop=1;
274 1 // err_ok=0;
275 1 }
276
277 void T1_INT (void) interrupt 3
278 {
279 1 // EA=0;
280 1 c_t1++;
281 1 if(send==1)
282 1 {
283 2 if(c_t1==7)
284 2 {
285 3 if(s_p==0)
286 3 SBUF=sbuffer[POINTER0];
287 3 else
288 3 SBUF=sbuffer1[POINTER0];
289 3 c_t1=0;
290 3 }
291 2 }
292 1 else
293 1 {
294 2 if(c_t1==100)
295 2 {
296 3 TR1=0;
297 3 overtime=1;
298 3 }
299 2 }
300 1 // EA=1;
301 1 }
302
303 void TR_INT (void) interrupt 4 //串行口中断
C51 COMPILER V7.06 MAIN1_1 09/23/2005 08:16:18 PAGE 6
304 {
305 1 EA=0; //关中断
306 1 if(TI==1) //发送完成
307 1 {
308 2 TI=0;
309 2 POINTER0++; //发送缓冲指针加1
310 2 // if(POINTER0==1)
311 2 // TB8=0;
312 2 if(POINTER0<s_byte_nums)
313 2 {
314 3 if(POINTER0<s_byte_nums-1)
315 3 {
316 4 if(s_p==1)
317 4 SSUM=SSUM+sbuffer1[POINTER0];
318 4 else
319 4 SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
320 4 }
321 3 else
322 3 {
323 4 if(s_p==1)
324 4 sbuffer1[s_byte_nums-1]=SSUM+sbuffer1[0];
325 4 else
326 4 sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
327 4 }
328 3 }
329 2 }
330 1
331 1 if(RI==1) //接收完成
332 1 {
333 2 RI=0;
334 2 POINTER1++; //接收缓冲指针加1
335 2 rbuffer[POINTER1-1]=SBUF; //从接收缓冲读出数据
336 2 if(POINTER1==2)
337 2 r_byte_nums=get_byte_nums(rbuffer[1]);
338 2 if(POINTER1<r_byte_nums)
339 2 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
340 2 else
341 2 {
342 3 if(rbuffer[r_byte_nums-1]==RSUM)
343 3 {
344 4 if(ans==0)
345 4 {
346 5 POINTER1=0;
347 5 RSUM=0;
348 5 }
349 4 S_ANSW=OK;
350 4 data_type();
351 4 }
352 3 else
353 3 {
354 4 S_ANSW=FAIL;
355 4 if(resend==0)
356 4 resend=1;
357 4 }
358 3 }
359 2 }
360 1 EA=1; //开中断
361 1 }
362
363 main()
364 {
365 1 uchar i,j,delt,temp_pc,temp_delt,c_err,anum,snum,axis[]={M_current,M_RW,M_OSC,M_AVC};
C51 COMPILER V7.06 MAIN1_1 09/23/2005 08:16:18 PAGE 7
366 1
367 1 TMOD=0x22; //定时器1,方式2;
368 1 TL1=0XFD; //波特率9600
369 1 TH1=0XFD;
370 1 TR1=1; //启动定时器
371 1 // PCON=0X80; //SMOD=1;
372 1 TMOD=0x23; //定时器0,方式3,两个8位定时器;
373 1 TR1=0;
374 1 TF1=0;
375 1 SCON=0X50; //串口方式1,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
376 1 IP=0X98; //S0=1,T1=1
377 1 // EX0=1; //急停
378 1 ES=1; //开串口中断
379 1 ET1=1;
380 1 EX0=1;
381 1 EA=1; //中断总允许
382 1
383 1 temp_c=0;
384 1
385 1 pc_ok=0;
386 1 urgent_stop=0;
387 1 main1_err=0;
388 1 p_forbid=0;
389 1 rc_forbid=0;
390 1 p_active=0;
391 1 rc_active=0;
392 1 p_forbided=0;
393 1 rc_forbided=0;
394 1 p_actived=0;
395 1 rc_actived=0;
396 1
397 1 BEGIN:
398 1 if(urgent_stop==1)
399 1 {
400 2 urgent_stop=0;
401 2 EX0=1;
402 2 }
403 1
404 1 pc_stop=0;
405 1 urgent_stop=0;
406 1 err_ok=1;
407 1 work=0;
408 1 start=0;
409 1 err=0; //错误编号
410 1 editing=0; //正在编程
411 1 edit_finish=0; //编程结束
412 1 p_received=0;
413 1 // edited=0; //进行过编程操作
414 1 change_prg=0;
415 1 connect=0;
416 1 break_connect=0;
417 1 in_sector=0;
418 1 nonce_sec=0; //当前区间号
419 1 FINISH=0;
420 1 CURRENT=0;
421 1 VOLTAGE=0;
422 1 AVC=0;
423 1 decrease=0;
424 1 rot_front=0;
425 1 rot_reverse=0;
426 1 wire_add=0;
427 1 wire_dec=0;
C51 COMPILER V7.06 MAIN1_1 09/23/2005 08:16:18 PAGE 8
428 1 osc_l=0;
429 1 osc_r=0;
430 1 avc_up=0;
431 1 avc_down=0;
432 1 temp_motor_stop=0;
433 1 motor_stop=0;
434 1 new_switch1=0;
435 1 new_switch2=0;
436 1 new_switch3=0;
437 1 start_again=0;
438 1
439 1 POINTER0=0;
440 1 SSUM=0;
441 1 S_ANSW=0;
442 1 POINTER1=0;
443 1 RSUM=0;
444 1 ans=0;
445 1 R_ANSW=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -