📄 tele_control.lst
字号:
523: calling_bit3=0;
524: }
525: }
526: else{calling_times1=0x0000;}
527: if(calling_bit4)
528: {
529: if(calling_t3>=ds1302_read(adr_ringtimes))
530: {
531: ANALOGUP=1; //
532: voice(0xa1);
533: password_buf[0]=0xaa;
534: password_buf[1]=0xaa;
535: password_buf[2]=0xaa;
536: password_buf[3]=0xaa;
537: password_buf[4]=0xaa;
538: password_buf[5]=0xaa;
539: password_buf[6]=0xaa;
540: password_buf[7]=0x00;
541: calling_bit0=0;
542: calling_bit1=0;
543: calling_bit2=0;
544: calling_bit3=0;
545: calling_bit4=0;
546: calling_times1=0x0000;
547: calling_times=0x0000;
548: calling_t1=0x00;
549: calling_t2=0x00;
550: calling_t3=0x00;
551: Tel_num_change=0;
552: STA=0x04;
553: }
554:
555: }
556: }
557: //***************************
558: void ds1302_read_time(void)
559: {
560: year=ds1302_read(ds1302_year); //year
561: month=ds1302_read(ds1302_month);//month
562: day=ds1302_read(ds1302_day); //day
563: week=ds1302_read(ds1302_week); //week
564: hour=ds1302_read(ds1302_hour); //hout
565: minute=ds1302_read(ds1302_min); //minute
566: second=ds1302_read(ds1302_sec); //second
567: }
568: void ds1302_write_time(void)
569: {
570: ds1302_write(ds1302_control,0x00); //close write protect
571: ds1302_write(ds1302_sec,0x80); //stop the ds1302 clock
572: ds1302_write(ds1302_charger,0xa9); //trickle charger
573: ds1302_write(ds1302_year,year); //year
574: ds1302_write(ds1302_month,month); //month
575: ds1302_write(ds1302_day,day); //day
576: ds1302_write(ds1302_week,week); //week
577: ds1302_write(ds1302_hour,hour); //hour
578: ds1302_write(ds1302_min,minute); //munite
579: ds1302_write(ds1302_sec,second); //second
580: ds1302_write(ds1302_control,0x80); //open write protect
581: }
582: //***************************
583: //write or read ds1302 program
584: //***************************
585: void ds1302_write(uchar reg,uchar data) //write ds1302
586: {
587: unsigned char i;
588: RST1302=0;
589: CLK1302=0;
590: RST1302=1;
591: for(i=8;i>0;i--)
592: {
593: CLK1302=0;
594: asm("nop");
595: if(reg&0x01){DAT1302=1;}
596: else{DAT1302=0;}
597: CLK1302=1;
598: reg>>=1;
599: }
600: for(i=8;i>0;i--)
601: {
602: CLK1302=0;
603: if(data&0x01){DAT1302=1;}
604: else{DAT1302=0;}
605: CLK1302=1;
606: data>>=1;
607: }
608: CLK1302=0;
609: RST1302=0;
610: }
611: uchar ds1302_read(uchar reg)//read ds1302
612: {
613: unsigned char data=0x00;
614: unsigned char i;
615: reg+=1; //read flag
616: RST1302=0;
617: CLK1302=0;
618: RST1302=1;
619: for(i=8;i>0;i--)
620: {
621: CLK1302=0;
622: if(reg&0x01){DAT1302=1;}
623: else{DAT1302=0;}
624: CLK1302=1;
625: reg>>=1;
626: }
627: TRISB|=0x04;
628: for(i=8;i>0;i--)
629: {
630: CLK1302=0;
631: data>>=1;
632: if(DAT1302){data|=0x80;}
633: else{;}
634: CLK1302=1;
635: }
636: TRISB&=~0x04;
637: CLK1302=0;
638: RST1302=0;
639: return(data);
640: }
641: //**************************************************
642: //change time progarm
643: //**************************************************
644: void change_time(void)
645: {
646: flash&=0x0f;
647: if(flash&0x08)
648: {
649: dsbuf[0]=hour;
650: dsbuf[1]=minute;
651: dsbuf[2]=second;
652: dsbuf[3]=0xa1;
653: dot=0x50;
654: }
655: else
656: {
657: dsbuf[0]=year;
658: dsbuf[1]=month;
659: dsbuf[2]=day;
660: dsbuf[3]=((week<<4)&0xf0)|0x02;
661: dot=0x54;
662: }
663: if(key.b.k1)
664: {
665: flash++;
666: if(flash>0x0d)flash=0x00;
667: if(flash==0x07)flash++;
668: }
669: if(key.b.k0)
670: {
671: flash--;
672: if(flash&0xf0)flash=0x0d;
673: if(flash==0x07)flash--;
674: }
675: if(key.b.k2){timechange();}
676: flash|=0x80;
677: if(key.b.kk3)
678: {
679: flash=STA=0x00;
680: if(time_change==1) //time change?
681: {
682: time_change=0;
683: ds1302_write_time();
684: }
685: }
686: }
687: //**************************************************
688: //timechange is change,call one add one.
689: //**************************************************
690: void timechange(void)
691: {
692: unsigned char i;
693: time_change=1; //time have changed
694: i=(flash>>1)&0x03;
695: if(flash&0x01)
696: {
697: dsbuf[i]++;
698: if((dsbuf[i]&0x0f)>=0x0a){dsbuf[i]&=0xf0;}
699: }
700: else
701: {
702: dsbuf[i]+=0x10;
703: if(dsbuf[i]>=0xa0){dsbuf[i]&=0x0f;}
704: }
705: if(flash&0x08)
706: {
707: hour=dsbuf[0];
708: minute=dsbuf[1];
709: second=dsbuf[2];
710: if(hour>0x23){hour=dsbuf[0]=0x00;}
711: if(minute>0x59){minute=dsbuf[1]=0x00;}
712: if(second>0x59){second=dsbuf[2]=0x00;}
713: }
714: else
715: {
716: year=dsbuf[0];
717: month=dsbuf[1];
718: day=dsbuf[2];
719: week=(dsbuf[3]>>4)&0x0f;
720: if(month>0x12){month=dsbuf[1]=0x01;}
721: if(month==0x00){month=dsbuf[1]=0x01;}
722: if(day>0x31){day=dsbuf[2]=0x01;}
723: if(day==0x00){day=dsbuf[2]=0x01;}
724: if((month==0x04)|(month==0x06)|(month==0x09)|(month==0x11))
725: {if(day>0x30){day=dsbuf[2]=0x01;}}
726: if(month==0x02)
727: {
728: if(year&0x03){if(day>0x28){day=dsbuf[2]=0x01;}}
729: else{if(day>0x29){day=dsbuf[2]=0x01;}}
730: }
731: if(week>0x07){week=0x01;dsbuf[3]=0x10|(dsbuf[3]&0x0f);}
732: if(week==0x00){week=0x01;dsbuf[3]=0x10|(dsbuf[3]&0x0f);}
733: }
734: }
735: //************************
736: //control key for STA=0
737: //************************
738: void key_control(void)
739: {
740: unsigned char i;
741: if(key.halfkey[1]&0x0f)
742: {
743: i=ds1302_read(adr_jdqsta);
744: if(key.b.kk0)
745: {
746: if(i&0x01){i&=0xfe;}
747: else{i|=0x01;}
748: i&=0xef;
749: }
750: if(key.b.kk1)
751: {
752: if(i&0x02){i&=0xfd;}
753: else{i|=0x02;}
754: i&=0xdf;
755: }
756: if(key.b.kk2)
757: {
758: if(i&0x04){i&=0xfb;}
759: else{i|=0x04;}
760: i&=0xbf;
761: }
762: if(key.b.kk3)
763: {
764: if(i&0x08){i&=0xf7;}
765: else{i|=0x08;}
766: i&=0x7f;
767: }
768: ds1302_write(ds1302_control,0x00); //close write protect
769: ds1302_write(adr_jdqsta,i); //jdq indect control
770: ds1302_write(ds1302_control,0x80); //open write protect
771: }
772: if(key.halfkey[0]&0xf0)
773: {
774: if(key.b.lk0) //if keytimer>=1s,then set time
775: {
776: timedelay0++;
777: if(timedelay0==0xfa)
778: {
779: time_change=0; //time change reclear
780: flash=0x00;
781: STA=0X03;
782: }
783: }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -