📄 12864
字号:
270 3 {
271 4 ir_data2<<=1;
272 4 ir_data2|=0x01;
273 4 count++;
274 4 TH1=0;
275 4 TL1=0;
276 4 TR1=1;
277 4 return;//数据为1,退出中断
278 4 }
279 3 count=0;
280 3 TR1=0;
281 3 TH1=0;
282 3 TL1=0;
283 3 return; //错误,清零退出中断
284 3 }
285 2 if(count>16&&count<=24)
286 2 {
287 3 if(((TL1+TH1*256)>(2250-DELTA))&&((TL1+TH1*256)<(2250+DELTA)))
288 3 {
289 4 ir_data3<<=1;
290 4 count++;
291 4 TH1=0;
292 4 TL1=0;
293 4 TR1=1;
294 4 return; //数据为0,退出中断
295 4 }
296 3 if(((TL1+TH1*256)>(4500-DELTA))&&((TL1+TH1*256)<(4500+DELTA)))
297 3 {
298 4 ir_data3<<=1;
299 4 ir_data3|=0x01;
300 4 count++;
301 4 TH1=0;
302 4 TL1=0;
303 4 TR1=1;
C51 COMPILER V8.02 12864万年繽 11/15/2007 20:52:01 PAGE 6
304 4 return;//数据为1,退出中断
305 4 }
306 3 count=0;
307 3 TR1=0;
308 3 TH1=0;
309 3 TL1=0;
310 3 return; //错误,清零退出中断
311 3 }
312 2 if(count>24&&count<=32)
313 2 {
314 3 if(((TL1+TH1*256)>(2250-DELTA))&&((TL1+TH1*256)<(2250+DELTA)))
315 3 {
316 4 ir_data4<<=1;
317 4 count++;
318 4 TH1=0;
319 4 TL1=0;
320 4 TR1=1;
321 4 if(count==33)
322 4 {
323 5 EX1=0;
324 5 en=1;
325 5 ir_enable = 1;
326 5 }
327 4 return; //数据为0,退出中断
328 4 }
329 3 if(((TL1+TH1*256)>(4500-DELTA))&&((TL1+TH1*256)<(4500+DELTA)))
330 3 {
331 4 ir_data4<<=1;
332 4 ir_data4|=0x01;
333 4 count++;
334 4 TH1=0;
335 4 TL1=0;
336 4 TR1=1;
337 4 if(count==33)
338 4 {
339 5 EX1=0;
340 5 en=1;
341 5 ir_enable = 1;
342 5 }
343 4
344 4
345 4 return;//数据为1,退出中断
346 4 }
347 3 count=0;
348 3 TR1=0;
349 3 TH1=0;
350 3 TL1=0;
351 3 return; //错误,清零退出中断
352 3 }
353 2 }
354 1 }
355
356 /********定时器中断***********/
357 /* 作用:遥控接收 */
358 /*****************************/
359 void timer1_int() interrupt 3
360 {
361 1 if(en!=0)
362 1 {
363 2 en--;
364 2 TL1=0;
365 2 TH1=0;
C51 COMPILER V8.02 12864万年繽 11/15/2007 20:52:01 PAGE 7
366 2 }
367 1
368 1 EX1=1;
369 1 count=0;
370 1 TR1=0;
371 1 TH1=0;
372 1 TL1=0;
373 1 }
374
375 /**********定时器中断***********/
376 /* 作用:调时闪动定时 */
377 /* 闪动时间:50(ms)*20(次) */
378 /*******************************/
379 void timer0_int() interrupt 1
380 {
381 1 TH0=0x3c; //50ms定时
382 1 TL0=0xb0;
383 1 if(count2++>=20)
384 1 {
385 2 count2=0;
386 2 flash=~flash;
387 2 }
388 1 }
389
390
391
392 /*************************/
393 /* 延时函数 */
394 /*************************/
395
396 void delay(unsigned char cnt)
397 {
398 1 unsigned char i;
399 1 while(cnt--!=0)
400 1 for(i=10;i!=0;i--);
401 1 }
402
403
404 /***********************/
405 /* LCM12864忙检测 */
406 /***********************/
407
408 void tase_busy()
409 {
410 1 rs=0;
411 1 _nop_();
412 1 _nop_();
413 1 rw=1;
414 1 _nop_();
415 1 _nop_();
416 1 e=1;
417 1 _nop_();
418 1 _nop_();
419 1 while(P07==1);
420 1 e=0;
421 1 }
422
423
424
425 /***********************/
426 /* LCM12864发送指令 */
427 /***********************/
C51 COMPILER V8.02 12864万年繽 11/15/2007 20:52:01 PAGE 8
428
429 void send_dictate(unsigned char interim)
430 {
431 1 tase_busy();
432 1 rs=0;
433 1 _nop_();
434 1 _nop_();
435 1 rw=0;
436 1 _nop_();
437 1 _nop_();
438 1 P0=interim;
439 1 e=1;
440 1 delay(1);
441 1 e=0;
442 1 }
443
444
445 /***********************/
446 /* LCM12864发送数据 */
447 /***********************/
448
449 void send_data(unsigned char interim)
450 {
451 1 tase_busy();
452 1 rs=1;
453 1 _nop_();
454 1 _nop_();
455 1 rw=0;
456 1 _nop_();
457 1 _nop_();
458 1 P0=interim;
459 1 e=1;
460 1 _nop_();
461 1 _nop_();
462 1 e=0;
463 1 }
464
465 /***********************/
466 /* 读取DS1302时间并转 */
467 /* 换成10进制 */
468 /***********************/
469
470 init()
471 {
472 1 alarm_hour=R1302(0xc1);
473 1 alarm_hour=alarm_hour/16*10+alarm_hour%16;
474 1 alarm_min=R1302(0xc3);
475 1 alarm_min=alarm_min/16*10+alarm_min%16;
476 1
477 1 sec=R1302(0x81);
478 1 sec=sec/16*10+sec%16;
479 1 min=R1302(0x83);
480 1 min=min/16*10+min%16;
481 1
482 1
483 1 hour=R1302(0x85);
484 1 hour=hour/16*10+hour%16;
485 1
486 1 day=R1302(0x87);
487 1 day=day/16*10+day%16;
488 1
489 1 week=R1302(0x8b);
C51 COMPILER V8.02 12864万年繽 11/15/2007 20:52:01 PAGE 9
490 1
491 1 month=R1302(0x89);
492 1 month=month/16*10+month%16;
493 1
494 1 year=R1302(0x8d);
495 1 year=year/16*10+year%16;
496 1
497 1 Conversion(0,year,month,day);
498 1
499 1 jieqi1= calendar_calculate_solar_term_1();
500 1 jieqi2= calendar_calculate_solar_term_2();
501 1
502 1 }
503
504 /***************************/
505 /* 写12864_CGROM(未使用) */
506 /***************************/
507
508 void cgram()
509 {
510 1 uchar addr=0x40;
511 1 uchar k;
512 1 for(k=1;k<32;k+=2)
513 1 {
514 2 send_dictate(addr);
515 2 send_data(san[k]);
516 2 send_data(san[k-1]);
517 2 addr++;
518 2 }
519 1 }
520
521
522
523 /***********************/
524 /* 主函数 */
525 /***********************/
526 void main()
527 {
528 1
529 1 unsigned int i;
530 1
531 1 TMOD=0x11;
532 1 EA=1;
533 1 EX1=1;
534 1 ET1=1;
535 1 ET0=1;
536 1 TH1=0;
537 1 TL1=0;
538 1 IT1=1;
539 1 count=0;
540 1 ir_enable=0;
541 1
542 1 id=0; //闹钟初如值设定
543 1 alarm=0;
544 1 alarm_controls=0;
545 1 alarm_min=0x00;
546 1 alarm_hour=0x00;
547 1 W1302(0xc0,alarm_hour);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -