📄 dc.lst
字号:
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DC
OBJECT MODULE PLACED IN D:\程序05~1\DC\DC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\程序05~1\DC\DC.C DB SB OE
stmt level source
1 #include <dc.h>
2
3 sbit stop=P3^5;
4 sbit wire_back=P4^4;
5 sbit wire_front=P4^5;
6 sbit rot_right=P4^6;
7 sbit rot_left=P4^7;
8 sbit send_enable=P3^4;
9 sbit limit=P4^3;
10 sbit wire_over_i=P1^2;
11 xdata unsigned char rbuffer[55],sbuffer[6];
12 unsigned char COMM,SLA,FF,GET,POINTER0,SSUM,POINTER1,RSUM,c_t1,s_byte_nums,r_byte_nums,pulse_num,
13 err,WIRE,S_ANSW,nonce_sec,work,p_sec,K21,K3,K31,tooth_num,
14 temp_pulse_num,delt_state;
15
16 unsigned int rot_vp,temp_rot_vp,rot_vb,temp_rot_vb,wire_vp,temp_wire_vp,wire_vb,
17 temp_wire_vb,n_cm0,c_cm0,n_cm1,c_cm1,FINISH,delt_rot,delt_wire
18 ,*point;
19 bit send,overtime,start,decrease,urgent_stop,rot_front,rot_reverse,wire_add,
20 wire_dec,rot_ok,wire_ok,in_sector,receive_p_out,receive_p_in,demand,need_para,
21 rot_stop,rot_stop_ok,called,p_b,new_sector,start_rot,start_wire,stop_wire,r_slope_ok,
22 w_slope_ok,retract,return_ok,retract_ok,motor_stop,auto_return,resend,ans,
23 to_begin,noans_ok,ask_return_ok,k_r_p_add,k_r_b_add,k_r_p_dec,k_r_b_dec,k22,k33,k44;
24 bit kk,rw_err,err_ok;
25
26 void start_t2()
27 {
28 1 TM2CON=0x85; //16位溢出,分频系数2,f/12
29 1 EA=1;
30 1 TM2IR=0;
31 1 }
32
33 void ini_sbuf(unsigned char a,b,c,d,e,f)
34 {
35 1 sbuffer[0]=a;
36 1 sbuffer[1]=b;
37 1 sbuffer[2]=c;
38 1 sbuffer[3]=d;
39 1 sbuffer[4]=e;
40 1 sbuffer[5]=f;
41 1 }
42
43 unsigned char get_byte_nums(unsigned char type)
44 {
45 1 unsigned char numbers;
46 1 switch(type)
47 1 {
48 2 case infor_sec:
49 2 case command:
50 2 case program:
51 2 case answer: numbers=4;
52 2 break;
53 2 case err_infor:
54 2 case parameter1: numbers=5;
55 2 break;
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 2
56 2 case parameter:
57 2 case infor: numbers=6;
58 2 break;
59 2 case parameter2: numbers=7;
60 2 break;
61 2 case call_result: numbers=8;
62 2 break;
63 2 case p_out_sec: numbers=55;
64 2 break;
65 2 case p_in_sec: numbers=24;
66 2 break;
67 2 case edit_sec: numbers=64;
68 2 break;
69 2 default: break;
70 2 }
71 1 return numbers;
72 1 }
73
74 void TR_noans()
75 {
76 1 noans_ok=0;
77 1 POINTER0=0;
78 1 SSUM=0;
79 1 send=1;
80 1 c_t1=0;
81 1 send_enable=1; //开发送使能
82 1 TR1=1;
83 1 while(POINTER0<s_byte_nums);
84 1 TR1=0;
85 1 send_enable=0; //关发送使能
86 1 noans_ok=1;
87 1 }
88
89 void delay(unsigned char num)
90 {
91 1 unsigned char i,ii;
92 1 for(i=0;i<num;i++)
93 1 {
94 2 for(ii=0;ii<255;ii++);
95 2 }
96 1 }
97
98 void TR_ans()
99 {
100 1 ans=1;
101 1 REN=0;
102 1 POINTER1=0;
103 1 RSUM=0;
104 1 TB8=1;
105 1 POINTER0=0;
106 1 SSUM=0;
107 1 send=1;
108 1 c_t1=0;
109 1 send_enable=1; //开发送使能
110 1 TR1=1;
111 1 while(POINTER0<s_byte_nums);
112 1 TR1=0;
113 1 send_enable=0; //关发送使能
114 1
115 1 REN=1;
116 1 send=0;
117 1 c_t1=0;
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 3
118 1 // TR1=1;
119 1 while(POINTER1<r_byte_nums&&overtime==0);
120 1 TR1=0;
121 1 if(overtime==1)
122 1 {
123 2 err=2; //通信出错
124 2 overtime=0;
125 2 }
126 1 ans=0;
127 1 }
128
129 void com_type()
130 {
131 1 switch(rbuffer[2])
132 1 {
133 2 case com_calling: called=1;break;
134 2 case com_demand: {
135 3 if(demand==0)
136 3 demand=1;
137 3 }break;
138 2 case com_need_para: need_para=1;break;
139 2 case com_start: start=1;break;
140 2 case com_rot_front: { //正转
141 3 if(rot_front==0)
142 3 rot_front=1;
143 3 }break;
144 2 case com_rot_reverse: { //反转
145 3 if(rot_reverse==0)
146 3 rot_reverse=1;
147 3 }break;
148 2 case com_wire_add: { //送丝
149 3 if(work==0)
150 3 {
151 4 if(wire_add==0&&WIRE==ON)
152 4 wire_add=1;
153 4 }
154 3 if(work==3)
155 3 {
156 4 if(wire_add==0&&WIRE==ON&&pp.k3==ON)
157 4 wire_add=1;
158 4 }
159 3 }break;
160 2 case com_wire_dec: { //抽丝
161 3 if(work==0)
162 3 {
163 4 if(wire_dec==0&&WIRE==ON)
164 4 wire_dec=1;
165 4 }
166 3 if(work==3)
167 3 {
168 4 if(wire_dec==0&&WIRE==ON&&pp.k3==ON)
169 4 wire_dec=1;
170 4 }
171 3 }break;
172 2 case com_motor_stop: { //停止点动
173 3 if(motor_stop==0)
174 3 motor_stop=1;
175 3 }break;
176 2 case com_pre_melt_ok: start_rot=1;break;
177 2 case com_decrease: decrease=1;break;
178 2 case com_decrease_ok: rot_stop=1;break;
179 2 case com_wire: start_wire=1;break;
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 4
180 2 case com_stopW: stop_wire=1;break;
181 2 case com_return: auto_return=1;break;
182 2 case com_return_ok: return_ok=1;break;
183 2 case com_goto_begin: to_begin=1;break;
184 2 case com_err_ok: err_ok=1;break;
185 2 default: break;
186 2 }
187 1 }
188
189 void data_type() //对接收到的数据分辨类型
190 {
191 1 switch(rbuffer[1])
192 1 {
193 2 case command: com_type();break;
194 2 // case answer: R_ANSW=rbuffer[2];break;
195 2 case infor: {
196 3 switch(rbuffer[2])
197 3 {
198 4 case com_sector: {
199 5 nonce_sec=rbuffer[3];
200 5 in_sector=1;
201 5 new_sector=1;
202 5 }break;
203 4 case com_wire_on_off: WIRE=rbuffer[3];break;//送丝开关
204 4 case com_delt_switch: delt_state=rbuffer[3];break;
205 4 default: break;
206 4 }
207 3 }break;
208 2 case p_out_sec: receive_p_out=1;break;
209 2 case p_in_sec: {
210 3 nonce_sec=rbuffer[2];
211 3 receive_p_in=1;
212 3 }break;
213 2 case parameter1:FINISH=rbuffer[2]*256+rbuffer[3];break;
214 2 default: break;
215 2 }
216 1 }
217
218 void EX0_INT (void) interrupt 0 //急停
219 {
220 1 EX1=0;
221 1 send_enable=0; //关发送使能
222 1 PWM0=0;
223 1 PWM1=0;
224 1 wire_back=1;
225 1 wire_front=1;
226 1 rot_right=1;
227 1 rot_left=1;
228 1 while(err_ok==0)
229 1 {
230 2 if(called==1)
231 2 {
232 3 if(rw_err==0)
233 3 {
234 4 ini_sbuf(M_main,answer,OK,0,0,0);
235 4 s_byte_nums=4;
236 4 TR_noans();
237 4 }
238 3 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -