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

📄 fntelflash.c

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 C
字号:
#include "main.h"



void fnCutOffFlash(void)   // 1= Line 1 , 2=Line 2
{
  unsigned char i;
    for (i=0; i<16; i++)
	{ 
	  Writesoundway(Connect_Flash,i,OFF);
	 }
}


unsigned char fnFindExtStillSong(void)
{
  unsigned char i;
  for (i=0; i<cExtTelNum; i++)
  {
    if(Ext_FunPt[i]==13) return 1;
  }
  return 0;
}


void fnConnectMtoOut( unsigned char mExtMusic, unsigned char mExtNm) // fnExt1_FlashLinkExtPhone
{
   FlashtimeState=0;  //只允许一次拍打 
   Writesoundway((mExtMusic-1),cX_Music,OFF);
  switch(mExtNm)
  {
   case 1:
		Ext1_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext1_FunPt=15;
		Ext1_dialtime=0;
		break;
   case 2:
		Ext2_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext2_FunPt=15;
		Ext2_dialtime=0;
		break;
   case 3:
		Ext3_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext3_FunPt=15;
		Ext3_dialtime=0;
		break;
   case 4:
		Ext4_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext4_FunPt=15;
		Ext4_dialtime=0;
		break;
   case 5:
		Ext5_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext5_FunPt=15;
		Ext5_dialtime=0;
		break;
   case 6:
		Ext6_NumdialIn=mExtMusic;	// 1 = Line In 1 2=Line In 2	
        Ext6_FunPt=15;
		Ext6_dialtime=0;
		break;
  default:
	    break;	
  }

}

void fnConnectMtoExt( unsigned char mExtMusic, unsigned char mExtNm) // fnExt1_FlashLinkExtPhone
{
	unsigned char mY=0;
	switch  (mExtMusic)  // Set Pt Fr 11(fnExt1_FlashWaitRing) to 6(fnExt1_WaitRing)
	{
		case  1:		  
			if(Ext1_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打
			  goto Lb_back;
			}
		     Ext1_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 		     Ext1_NumdialOut=mExtNm;
			 Ext1_NumdialIn =mExtNm;
	    	 mY = Ext1_LineY4Y5Num;
			 break;
		case  2:		  
			if(Ext2_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打 
			  goto Lb_back;
			}
			 Ext2_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext2_NumdialOut=mExtNm;
			 Ext2_NumdialIn =mExtNm;
	    	 mY = Ext2_LineY4Y5Num;
			 break;
		case  3:		  
			if(Ext3_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打
			  goto Lb_back;
			}
			 Ext3_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext3_NumdialOut=mExtNm;
			 Ext3_NumdialIn =mExtNm;
	    	 mY = Ext3_LineY4Y5Num;
			 break;
		case  4:		  
			if(Ext4_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打 
			  goto Lb_back;
			}
			 Ext4_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext4_NumdialOut=mExtNm;
			 Ext4_NumdialIn =mExtNm;
	    	 mY = Ext4_LineY4Y5Num;
			 break;
		case  5:		  
			if(Ext5_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打 
			  goto Lb_back;
			}
			 Ext5_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext5_NumdialOut=mExtNm;
			 Ext5_NumdialIn =mExtNm;
	    	 mY = Ext5_LineY4Y5Num;
			 break;
		case  6:		  
			if(Ext6_FunPt!=13) 
			{
			  FlashtimeState=0;  //只允许一次拍打
			  goto Lb_back;
			}
			 Ext6_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext6_NumdialOut=mExtNm;
			 Ext6_NumdialIn =mExtNm;
	    	 mY = Ext6_LineY4Y5Num;
			 break;
	   default:
	         break;		
	}
	Writesoundway(mY,cX_Music,OFF);//断开音乐		     

Lb_back:
	switch  (mExtNm)  // Set Pt Fr 11(fnExt1_FlashWaitRing) to 6(fnExt1_WaitRing)
	{
		case  1:		  
			 if(!FlashtimeState)
			 {
			  Ext1_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext1,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext1_dialtime=0;
			 Ext1_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext1_NumdialOut=mExtMusic;
			 Ext1_NumdialIn  =mExtMusic;
	    	 Ext1_LineY4Y5Num=mY;
			 Writesoundway(Ext1_LineY4Y5Num,cX_Ext1,ON); //
			 break;
		case  2:		  
			 if(!FlashtimeState)
			 {
			  Ext2_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext2,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext2_dialtime=0;
			 Ext2_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext2_NumdialOut=mExtMusic;
			 Ext2_NumdialIn  =mExtMusic;
	    	 Ext2_LineY4Y5Num=mY;
			 Writesoundway(Ext2_LineY4Y5Num,cX_Ext2,ON); //
			 break;
		case  3:		  
			 if(!FlashtimeState)
			 {
			  Ext3_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext3,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext3_dialtime=0;
			 Ext3_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext3_NumdialOut=mExtMusic;
			 Ext3_NumdialIn  =mExtMusic;
	    	 Ext3_LineY4Y5Num=mY;
			 Writesoundway(Ext3_LineY4Y5Num,cX_Ext3,ON); //
			 break;
		case  4:		  
			 if(!FlashtimeState)
			 {
			  Ext4_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext4,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext4_dialtime=0;
			 Ext4_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext4_NumdialOut=mExtMusic;
			 Ext4_NumdialIn  =mExtMusic;
	    	 Ext4_LineY4Y5Num=mY;
			 Writesoundway(Ext4_LineY4Y5Num,cX_Ext4,ON); //
			 break;
		case  5:		  
			 if(!FlashtimeState)
			 {
			  Ext5_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext5,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext5_dialtime=0;
			 Ext5_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext5_NumdialOut=mExtMusic;
			 Ext5_NumdialIn  =mExtMusic;
	    	 Ext5_LineY4Y5Num=mY;
			 Writesoundway(Ext5_LineY4Y5Num,cX_Ext5,ON); //
			 break;
		case  6:		  
			 if(!FlashtimeState)
			 {
			  Ext6_FunPt=5;                 //5	fnExt1_Err  Dial Wong Extension Numer / LintOut be TimeOut;
		      Writesoundway(Connect_Busy,cX_Ext6,ON); //;连接忙音
			  return;
			  }
             FlashtimeState=0;
			 Ext6_dialtime=0;
			 Ext6_FunPt=7;                                         //7 fnExt2_LinkExtPhone 内线连内线
 			 Ext6_NumdialOut=mExtMusic;
			 Ext6_NumdialIn  =mExtMusic;
	    	 Ext6_LineY4Y5Num=mY;
			 Writesoundway(Ext6_LineY4Y5Num,cX_Ext6,ON); //
			 break;
	   default:
	         break;	
	}
}


void fnConnectMtoROut(unsigned char mExtMusic,unsigned char mExtRing) //for fnExt1_FlashWaitRing
{
  Writesoundway((mExtMusic-1),cX_Music,OFF);
  Writesoundway((mExtMusic-1),WaitRing,ON);
  switch(mExtRing)
  {
   case 1:
        Ext1_FunPt=15;
		Ext1_NumdialIn=mExtMusic;
		Ext1_dialtime=30000;
		break;
   case 2:
        Ext2_FunPt=15;
		Ext2_NumdialIn=mExtMusic;
		Ext2_dialtime=30000;
		break;
   case 3:
        Ext3_FunPt=15;
		Ext3_NumdialIn=mExtMusic;
		Ext3_dialtime=30000;
		break;
   case 4:
        Ext4_FunPt=15;
		Ext4_NumdialIn=mExtMusic;
		Ext4_dialtime=30000;
		break;
   case 5:
        Ext5_FunPt=15;
		Ext5_NumdialIn=mExtMusic;
		Ext5_dialtime=30000;
		break;
   case 6:
        Ext6_FunPt=15;
		Ext6_NumdialIn=mExtMusic;
		Ext6_dialtime=30000;
		break;
  default:
	    break;	
   }
}


void fnConnectMtoRExt(unsigned char mExtMusic,unsigned char mExtRing) //for fnExt1_FlashWaitRing
{
	unsigned char mY=0;
	switch  (mExtMusic)  // Set Pt Fr 11(fnExt1_FlashWaitRing) to 6(fnExt1_WaitRing)
	{
		case  1:
			if(Ext1_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext1_FunPt = 6;
		     Ext1_dialtime=30000;                      //20s
			 Ext1_NumdialOut=mExtRing;  
		     Ext1_NumdialIn =0;   
		     mY = Ext1_LineY4Y5Num;
			 break;
		case  2:		  
			if(Ext2_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext2_FunPt = 6;
		     Ext2_dialtime=20000;                      //20s
			 Ext2_NumdialOut=mExtRing;  
		     Ext2_NumdialIn =0;   
		     mY = Ext2_LineY4Y5Num;
			 break;	
		case  3:		  
			if(Ext3_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext3_FunPt = 6;
		     Ext3_dialtime=20000;                      //20s
			 Ext3_NumdialOut=mExtRing;  
		     Ext3_NumdialIn =0;   
		     mY = Ext3_LineY4Y5Num;
			 break;
		case  4:		  
			if(Ext4_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext4_FunPt = 6;
		     Ext4_dialtime=20000;                      //20s
			 Ext4_NumdialOut=mExtRing;  
		     Ext4_NumdialIn =0;   
		     mY = Ext4_LineY4Y5Num;
			 break;	
		case  5:		  
			if(Ext5_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext5_FunPt = 6;
		     Ext5_dialtime=20000;                      //20s
			 Ext5_NumdialOut=mExtRing;  
		     Ext5_NumdialIn =0;   
		     mY = Ext5_LineY4Y5Num;
			 break;
		case  6:		  
			if(Ext6_FunPt!=13) 
			{
			  fnStopExtRing(mExtRing);
			  return;
			}
		     Ext6_FunPt = 6;
		     Ext6_dialtime=20000;                      //20s
			 Ext6_NumdialOut=mExtRing;  
		     Ext6_NumdialIn =0;   
		     mY = Ext6_LineY4Y5Num;
			 break;	
	   default:
	         break;					        
	}

    Writesoundway(mY,cX_Music,OFF);//断开音乐		     
    Writesoundway(mY,WaitRing,ON); //连接回铃声

	switch  (mExtRing) // Set Pt Fr 12 (fnExt1_FlashRing) to  9 fnExt1_Ringing
	{
	   case  1:		  
		    Ext1_FunPt = 9;
		    Ext1_NumdialIn=mExtMusic;
		    Ext1_LineY4Y5Num=mY;
			break;
	   case  2:		  
		    Ext2_FunPt = 9;
		    Ext2_NumdialIn=mExtMusic;
		    Ext2_LineY4Y5Num=mY;
			break;
	   case  3:		  
		    Ext3_FunPt = 9;
		    Ext3_NumdialIn=mExtMusic;
		    Ext3_LineY4Y5Num=mY;
			break;
	   case  4:		  
		    Ext4_FunPt = 9;
		    Ext4_NumdialIn=mExtMusic;
		    Ext4_LineY4Y5Num=mY;
			break;
	   case  5:		  
		    Ext5_FunPt = 9;
		    Ext5_NumdialIn=mExtMusic;
		    Ext5_LineY4Y5Num=mY;
			break;
	   case  6:		  
		    Ext6_FunPt = 9;
		    Ext6_NumdialIn=mExtMusic;
		    Ext6_LineY4Y5Num=mY;
			break;
	  default:break;	
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -