📄 tele_control.lst
字号:
262: if(reset_bit2)
263: {
264: if(key.b.kk0)
265: {
266: reset_bit2=0;
267: system_reset();
268: STA=0X00;
269: }
270: }
271: break;
272: case 3: //time change
273: change_time();
274: break;
275: case 4: //test password
276:
277: if((password_buf[7]&0x0f)>0x06)
278: {
279: dsbuf[0]=password_buf[3];
280: dsbuf[1]=password_buf[4];
281: dsbuf[2]=password_buf[5];
282: dsbuf[3]=(password_buf[6]&0xf0)|0x08;
283: dot=0xfe;
284: }
285: else
286: {
287: dsbuf[0]=password_buf[0];
288: dsbuf[1]=password_buf[1];
289: dsbuf[2]=password_buf[2];
290: dsbuf[3]=((password_times<<4)&0xf0)|0x0c;
291: dot=0xfc;
292: }
293: pass_word_test();
294: break;
295: case 5: //jdq indect change
296: jdq_indect();
297: break;
298: case 6: //reset password
299: reset_password();
300: break;
301: case 7: //reset tingtimes
302: reset_ringtimes();
303: break;
304: case 8: //check jdq sta
305: jdq_check();
306: break;
307: }
308: STA1=STA2=STA;
309: }
310: }
311: }
312: //*****************************
313: //interrupt program
314: //*****************************
315: void interrupt numberint(void)
316: {
317: if(INTE&INTF)
318: {
319: unsigned char i;
320: INTF=0;
321: HANG1=1;
322: HANG0=1;
323: i=0x05;while(i--){;} //8+3*(i-1)=delay 20uS
324: Tel_num=Telnum[PORTC&0x0f];
325: HANG0=0;
326: HANG1=0;
327: Tel_num_change=1;
328: }
329: if(TMR2IE&TMR2IF)
330: {
331: TMR2IF=0;
332: voice_delay++;
333: if(voice_times&0x01)
334: {
335: if(VOICE==0){VOICE=1;}
336: else{VOICE=0;}
337: }
338: if(voice_delay==0x0000)
339: {
340: voice_times--;
341: if(voice_times&0x01)
342: {
343: voice_tone<<=1;
344: if(voice_tone&0x80){PR2=0x19;}
345: else{PR2=0x32;}
346: }
347: if(voice_tone&0x80)
348: { voice_delay=0xfda8;} //delay 300mS
349: else{voice_delay=0xfed4;}
350: if(voice_times==0x00){TMR2IE=0;}
351: }
352: }
353: }
354: //***************************
355: //voice
356: //***************************
357: void voice(unsigned char i)
358: {
359: if(i&0xe0)
360: {
361: voice_tone=i&0x1f;
362: voice_tone<<=2;
363: i=(i<<4)|(i>>4);
364: voice_times=i&0x0e;
365: if(voice_tone&0x80)
366: { voice_delay=0xfda8; //delay 300mS
367: PR2=0x19;
368: }
369: else
370: { voice_delay=0xfed4; //delay 300mS
371: PR2=0x32;
372: }
373: TMR2IE=1;
374: }
375: }
376: //***************************
377: void pass_word_test(void)
378: {
379: unsigned char i,j;
380: if(password_bit)
381: {
382: password_bit=0;
383: for(i=0;i<7;i++)
384: {
385: if(password_buf[i]==ds1302_read(adr_password+i+i))
386: {;}
387: else
388: { password_times|=0x80;}
389: }
390: password_buf[0]=0xaa; //reload
391: password_buf[1]=0xaa;
392: password_buf[2]=0xaa;
393: password_buf[3]=0xaa;
394: password_buf[4]=0xaa;
395: password_buf[5]=0xaa;
396: password_buf[6]=0xaa;
397: password_buf[7]=0x00;
398:
399: if(password_times&0x80)
400: {
401: password_times&=0x7f;
402: password_times++;
403: if(password_times>=0x03)
404: {
405: password_times=0x00;
406: VOICE=0;
407: ANALOGUP=0;
408: STA=0x00;
409: }
410: else{voice(0x7c);}
411: }
412: else
413: {
414: voice(0x60); //000
415: password_times=0x00;
416: ANALOGUP=1;
417: dsbuf[0]=0xbc; //FU
418: dsbuf[1]=0xdf; //N
419: dsbuf[2]=0xff;
420: dsbuf[3]=0xa0;
421: dot=0x00;
422: STA=0X01;
423: }
424: INTE=1;
425: }
426: else
427: {
428: if(Tel_num_change)
429: {
430: Tel_num_change=0;
431: i=Tel_num&0x0f;
432: j=0xf0;
433: if(password_buf[7]&0x01)
434: {;}
435: else
436: {
437: i=(i>>4)|(i<<4);
438: j=(j<<4)|(j>>4);
439: }
440: password_buf[(password_buf[7]>>1)&0x07]&=j;
441: password_buf[(password_buf[7]>>1)&0x07]|=i;
442: password_buf[7]++;
443: if(password_buf[7]==0x0e)
444: {
445: password_buf[7]=0x0d;
446: }
447: }
448: if(Tel_num==0x0f) //Tel_num==#?
449: {
450: password_bit=1;
451: INTE=0;
452: }
453: Tel_num=0x00;
454: }
455: }
456: //***************************
457: void busy_test(void)
458: {
459: // if(busy==0)
460:
461: }
462: //**************************************************
463: //test calling?
464: //**************************************************
465: void calling(void)
466: {
467: if(PHONEIN==0)
468: {
469: calling_t0++;
470: if(calling_t0==0x03)
471: {
472: calling_t1++;
473: calling_bit0=1;
474: }
475: }
476: else{calling_t0=0x00;}
477: if(calling_bit0){calling_t2++;}
478: if(calling_t2==0xfa) //==1s?
479: {
480: calling_t2=0x00;
481: calling_bit0=0;
482: if(calling_t1>=0x14)
483: {
484: calling_t3++;
485: calling_bit1=1;
486: calling_bit2=1;
487: }
488: calling_t1=0x00;
489: }
490: if(calling_bit1)
491: {
492: calling_times++;
493: if(calling_bit2){calling_bit2=0;calling_times=0x0000;}
494: if(calling_times>0x05dc) //>=6S?
495: {
496: calling_bit0=0;
497: calling_bit2=0;
498: calling_bit4=0;
499: calling_times1=0x0000;
500: calling_t1=0x00;
501: calling_t2=0x00;
502: calling_bit1=0;
503: calling_times=0x0000;
504: if(calling_t3<0x03){calling_bit3=1;}
505: else{calling_bit3=0;}
506: calling_t3=0x00;
507: Tel_num_change=0;
508: }
509: }
510: if(calling_bit3)
511: {
512: calling_times1++;
513: if(calling_bit1)
514: {
515: if(calling_times1<0x0dac) //<=14s?
516: {
517: calling_bit4=1;
518: calling_bit3=0;
519: }
520: }
521: if(calling_times1>0x0dac)
522: {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -