📄 zls_0001.lst
字号:
188
189 void main()
190 {
191 1 watchdog();
192 1 TMOD=0X01;
193 1 TH0=0XA5;
194 1 TL0=0X67;
195 1 TF0=0;
196 1 SP=0x55;
197 1
198 1 takefunc();
199 1
200 1 }
201
202 /*------------------------------------------------------------------*/
203 void rising()
204 {
205 1
206 1
207 1 REL_C=0;
208 1 delay(30,255);
209 1 REL_C=1;
210 1 delay(30,255);
211 1 if(keydown&&(key!=13))
212 1 takefunc();
213 1 //if(key==2|key==7)break;
214 1
215 1
216 1 }
217 /*-------------------------------------------------------------------*/
218 void descent()
219 {
220 1 TRI_C=0;
221 1 REL_C=0;
222 1 delay(65,255);
223 1 REL_C=1;
224 1 delay(65,255);
225 1 }
226 /*-----------------------------------------------------------------*/
227 void bottom()
228 {
229 1 Q_UP=1;
230 1 Q_DW=1;
231 1 REL_UPDW=0;
232 1 keyscan();
*** WARNING C206 IN LINE 232 OF ZLS_0001.C: 'keyscan': missing function-prototype
233 1 if(free&(!Q_DW))
234 1 {
235 2 T_UPDW=0;
236 2 return;
C51 COMPILER V7.10 ZLS_0001 07/04/2004 13:24:11 PAGE 5
237 2
238 2 }
239 1 NOP();NOP();
240 1 REL_UPDW=1;
241 1
242 1 }
243 /*----------------------------------------------------------------*/
244 void top()
245 {
246 1 Q_UP=1;
247 1 Q_DW=1;
248 1 REL_UPDW=1;
249 1 keyscan();
250 1 if(free&(!Q_UP))
251 1 {
252 2 T_UPDW=0;
253 2 return;
254 2
255 2 }
256 1 NOP();
257 1 NOP();
258 1 REL_UPDW=0;
259 1
260 1
261 1 }
262
263 /*----------------------串口中断接收----------------------------------*/
264
265 void slave(void) interrupt 4 using 1
266 {
267 1 void str(void);
268 1 void sre(void);
269 1 uchar a;
270 1 RI=0; //关串行口中断
271 1 ES=0;
272 1 if(SBUF!=SLAVE){ES=1;goto reti;} //非本机地址,继续监听
273 1 SM2=0; //取笑监听状态
274 1 SBUF=SLAVE; //发回从机地址
275 1 while(TI!=1);TI=0;
276 1 while(RI!=1);RI=0;
277 1 if(RB8==1){SM2=1;ES=1;goto reti;} //确认地址不符,从机复位
278 1 a=SBUF; //接收命令
279 1 if(a==1){ //从机接收主机的数据
280 2 if(rrdy==1) SBUF=0x01; //接收准备好,发回0x01
281 2 else
282 2 SBUF=0x00;
283 2 while(TI!=1);TI=0;
284 2 while(RI!=1);RI=0;
285 2 if(RB8==1){SM2=1;ES=1;goto reti;}
286 2 sre(); //接收数据
287 2 }
288 1 else
289 1 {
290 2 if(a==0x02) //从机向主机发送数据
291 2 {
292 3 if(trdy==1) SBUF=0x02; //发送准备好
293 3 else
294 3 SBUF=0x00;
295 3 while(TI!=1);TI=0;
296 3 while(RI!=1);RI=0;
297 3 if(RB8==1){SM2=1;ES=1;goto reti;}
298 3 str( ); //发送数据
C51 COMPILER V7.10 ZLS_0001 07/04/2004 13:24:11 PAGE 6
299 3 }
300 2 else
301 2 {
302 3 SBUF=0x80; //命令非法
303 3 while(TI!=1);TI=0;
304 3 SM2=1;ES=1; //恢复监听
305 3 }
306 2 }
307 1 reti:;
308 1 }
309
310 void str(void) //发送数据函数
311 {uchar p,i;
312 1 trdy=0;
313 1 do{p=0; //初始校验和为0
314 2 for(i=0;i<BN;i++)
315 2 {SBUF=tdata[i]; //发送数据
316 3 p+=tdata[i];
317 3 while(TI!=1);TI=0;
318 3 }
319 2 SBUF=p; //发送校验和
320 2 while(TI!=1);TI=0;
321 2 while(RI!=1);RI=0;
322 2 }while(SBUF!=0); //主机接收不正确,重新发送
323 1 SM2=1;ES=1;
324 1 }
325
326 void sre(void) //接收数据函数
327 {uchar p,i;
328 1 rrdy=0;
329 1 while(1)
330 1 {p=0; //初始化校验和为0
331 2 for(i=0;i<BN;i++)
332 2 {while(RI!=1);RI=0;
333 3 tdata[i]=SBUF; //接收数据
334 3 p+=rdata[i];
335 3 }
336 2 while(RI!=1);RI=0;
337 2 if(SBUF==p){SBUF=0x00;break;} //校验和相同,发00H
338 2 else{
339 3 SBUF=0xFF;while(TI!=1);TI=0; //校验和不同,发FFH,重新接收
340 3 }
341 2 }
342 1 SM2=1;ES=1;
343 1 }
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
C51 COMPILER V7.10 ZLS_0001 07/04/2004 13:24:11 PAGE 7
361
362
363
364
365
366
367
368
369
370
371
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 612 ----
CONSTANT SIZE = 45 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 9
IDATA SIZE = 32 ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -