📄 main.lst
字号:
231 4 {
232 5 if(!ISP)
233 5 {
C51 COMPILER V7.05 MAIN 03/05/2003 15:44:08 PAGE 5
234 6 set=1;
235 6 RXSTAT=2;
236 6 START_T0(20);
237 6 }
238 5
239 5 }
240 4 else
241 4 {
242 5 RXSTAT=0;
243 5 CALL_isr_T0();
244 5 }
245 4 }
246 3
247 3 // RXSTAT=0;
248 3 break;
249 3 case 2:
250 3 if(c==ADDR)
251 3 { // LED= !LED;
252 4 RXtem[2]=c;
253 4 RXSTAT=3;
254 4 START_T0(20);
255 4 }
256 3 else
257 3 {
258 4 RXSTAT=0;
259 4 CALL_isr_T0();
260 4 }
261 3 i=0;
262 3 break;
263 3 case 3:
264 3 RX_BEEP=c;
265 3 START_T0(20);
266 3 RXSTAT=4;
267 3 RXtem[3]=c;
268 3 /*if(c==ADDR)
269 3 {
270 3
271 3 if(set)
272 3 {
273 3 RXSTAT=4;
274 3 START_T0(20);
275 3 }
276 3 else
277 3 {
278 3 RXSTAT=0;
279 3 rxok=1;
280 3 CALL_isr_T0();
281 3 }
282 3
283 3 }*/
284 3
285 3 break;
286 3 case 4:
287 3 if(set)
288 3 {
289 4 RX_addr=c;
290 4 set_ok=1;
291 4 set=0;
292 4 RXSTAT=0;
293 4 CALL_isr_T0();
294 4 }
295 3 else
C51 COMPILER V7.05 MAIN 03/05/2003 15:44:08 PAGE 6
296 3 {
297 4 CRC.chrX[0]=c;
298 4 //SBUF=CRC.chrX[0];
299 4 // while(!TI);
300 4 // TI=0;
301 4
302 4 RXSTAT=5;
303 4 START_T0(20);
304 4 }
305 3 break;
306 3 case 5:
307 3 CRC.chrX[1]=c;
308 3 //SBUF=CRC.chrX[1];
309 3 //while(!TI);
310 3 // TI=0;
311 3
312 3
313 3 // if(crcx==CRC.intX)//crc交验通过
314 3 {
315 4 rxok=1;
316 4 }
317 3 RXSTAT=0;
318 3 CALL_isr_T0();
319 3
320 3 break;
321 3 default:
322 3 RXSTAT=0;
323 3 break;
324 3 }
325 2
326 2 }
327 1 else
328 1 {
329 2 TI=0;
330 2
331 2 }
332 1 }
333 /*************************原有的函数需改变*************************************
334 * *
335 * Function: isr_timer0 *
336 * *
337 * Input: - *
338 * Output: - *
339 * *
340 * Description: *
341 * *
342 * *
343 ****************************************************************************/
344 void isr_timer0(void) interrupt 1 using 2
345 {
346 1 TR0=0;
347 1 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
348 1 {
349 2 RXTimerOUT--;
350 2 }
351 1 else
352 1 {
353 2 RXSTAT=0;
354 2 RXNOM=0;
355 2 set=0;
356 2 }
357 1
C51 COMPILER V7.05 MAIN 03/05/2003 15:44:08 PAGE 7
358 1
359 1
360 1 TH0=0Xac;
361 1 TL0=0X95;
362 1 TR0=1;
363 1 }
364 //**********************************************************
365 void Send_ok(unsigned char key)
366 {
367 1 unsigned char i;
368 1 ES=0;
369 1 TX_EN=1;
370 1 //Delay1msa(5);
371 1 for(i=0;i<8;i++)
372 1 {
373 2 SBUF = 0x88; // 发送数据
374 2 while(0==TI); // 等待发送完毕
375 2 TI = 0; // 清除发送标志
376 2 SBUF = 0xff; // 发送数据
377 2 while(0==TI); // 等待发送完毕
378 2 TI = 0; // 清除发送标志
379 2
380 2 SBUF = key; // 发送数据
381 2 while(0==TI); // 等待发送完毕
382 2 TI = 0; // 清除发送标志
383 2 SBUF = key; // 发送数据
384 2 while(0==TI); // 等待发送完毕
385 2 TI = 0; // 清除发送标志
386 2 }
387 1 if(key_tem==0x02)
388 1 {
389 2 wring_send_times--;
390 2 if(wring_send_times==0)
391 2 {
392 3 key_tem=0x01;
393 3 }
394 2 }
395 1 else
396 1 {
397 2 key_tem=0x01;
398 2 }
399 1 TX_EN=0;
400 1 //Delay1msa(4);
401 1 ES=1;
402 1
403 1 }
404
405 /******************************************************************
406 * 名称:UART_SendByte
407 * 功能:向串口发送字节数据。
408 * 入口参数:dat 待发送的数据
409 * 出口参数:无
410 ******************************************************************
411 void UART_SendByte(uint8 dat)
412 { SBUF = dat; // 发送数据
413 while(0==TI); // 等待发送完毕
414 TI = 0; // 清除发送标志
415 }
416
417
418 /******************************************************************
419 * 名称:UART_SendCode
C51 COMPILER V7.05 MAIN 03/05/2003 15:44:08 PAGE 8
420 * 功能:读取FLASH中的数据,并发送到串口。
421 * 入口参数:addr 读取的起始地址
422 * no 读取的数据个数
423 * 出口参数:无
424 ******************************************************************
425 void UART_SendCode(uint16 addr, uint16 no)
426 { uint8 code *readp;
427
428 readp = addr;
429 for(; no>0; no--)
430 { UART_SendByte(*readp++); // 读取数据并发送
431 }
432 }
433
434 */
435 void flash_led(unsigned char j )
436 {
437 1 char i;
438 1 for(i=0;i<j;i++)
439 1 {
440 2 LED=0;
441 2 Delay1ms(50);
442 2 LED=1;
443 2 Delay1ms(50);
444 2 }
445 1 LED=1;
446 1 }
447 //***************************************************************
448 void flash_beep(unsigned char j )
449 {
450 1 char i;
451 1 beep_delay++;
452 1 if(beep_delay>40000)
453 1 {
454 2 beep_delay=0;
455 2 for(i=0;i<j;i++)
456 2 {
457 3 BEEP=0;
458 3 Delay1ms(60);
459 3 BEEP=1;
460 3 Delay1ms(60);
461 3 }
462 2 }
463 1 BEEP=0;
464 1
465 1 }
466 //******************************************************************
467 //**********************************************************
468 void Setok(void)
469 {
470 1
471 1 ES=0;
472 1 SBUF ='O'; // 发送数据
473 1 while(0==TI); // 等待发送完毕
474 1 TI = 0; // 清除发送标志
475 1 SBUF = 'K'; // 发送数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -