⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tele_control.lst

📁 基于PIC单片机的智能电话控制系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
   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 + -