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

📄 main.h

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 H
字号:
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

#define SetBit(port,bit)  (port |= (1<<bit))   //set bit in port
#define ClrBit(port,bit)  (port &= ~(1<<bit))  //clear bit in port
#define nop();         asm volatile("nop"::)


/**********端口A*********/
#define SoundSwitch_x0 0
#define SoundSwitch_x1 1
#define SoundSwitch_x2 2
#define SoundSwitch_x3 3

#define SoundSwitch_y0 4
#define SoundSwitch_y1 5
#define SoundSwitch_y2 6

#define SoundSwitchData 7

/**********端口B*********/
#define CheckCenterHold     0
#define CallCenter     1
#define CheckDoorRing 2
#define Test_Flag1    3
#define HoldDoor      4


/**********端口C*********/
#define Create10HZ    0x01
#define P17           1
#define EnDTMFCreate  2
#define DTMF1_DV      3
#define DTMF2_DV      4
#define Line_LedCtr   5
#define Line2_LedCtr  6
#define SelectDTMF    7

/**********端口D*********/
#define Recordvoice    0
#define Playvoice      1
#define OSCRingFK      2
#define CheckHold_Ring 3
#define Reset8816      4
#define CreateMusic    0x20
#define Storbe8816     6
#define Osc450HZ       7


/*********8816********************/

#define cY_Outside1     0    //Y0
#define cY_Outside2     1    //Y1
#define Chip_Record  	2    //Y2
#define SigCallID    	3    //Y3
#define Connect_Ext1  	4    //Y4
#define Connect_Ext2  	5    //Y5
#define Connect_Busy   6    //Y6
#define Connect_Flash  7    //Y7


#define cX_Ext1        0    //X0
#define cX_Ext2        1    //X1
#define cX_Ext3        2    //X2
#define cX_Ext4        3    //X3
#define cX_Ext5        4    //X4
#define cX_Ext6        5    //X5

#define cX_Ex1        cX_Ext1    //X0
#define cX_Ex2        cX_Ext2    //X1
#define cX_Ex3        cX_Ext3    //X2
#define cX_Ex4        cX_Ext4    //X3
#define cX_Ex5        cX_Ext5    //X4
#define cX_Ex6        cX_Ext6    //X5


#define cX_Music       6    //X12
#define Chip_Voice  7    //X13
#define cX_DTMF1     8    //X6
#define cX_DTMF2    9    //X7
#define Doorphone   10   //X8
#define Center       11   //X9
#define Busy_Voicd  12    //X10
#define WaitRing    13    //X11
#define Sig450Hz_1  14    //X14
#define Sig450Hz_2  15    //X15


//应用系统配置*****************************
#define	ON			0xff
#define	OFF			0
#define	OutsideTelNum				2				//外线数目 可扩展到四路
#define	cExtTelNum			        6				//定义分机数目

unsigned char timeover_10ms;
unsigned char timeover_200ms;
unsigned char Test_Flag2;
unsigned char OutsideRingCheck;
unsigned char OutsideBusy_Free;
unsigned char DTMFBusy_Free;
unsigned char ExtTelStateCheck;
unsigned char ExtTelFlashState;
unsigned char ExtTelRingState;
unsigned char FlashtimeState;
unsigned char CallCenterState;
unsigned char Flash_For_Out_Ext;                  //0 For Out   1  For Ext     
/**************SoundInTel.c函数列表*****************/
unsigned int timeover_RingFK;
unsigned int  Musictime_1ms;
unsigned char mExtTelRSTSav;
unsigned char mExtTelSCheckSav;
unsigned char tFSKPhoneNumber[11];


void fnMusic(void);
void fnOSCRingFK(void);
void test(void);

/**************Communication.c函数列表*****************/

void Writesoundway(unsigned char y,unsigned char x,unsigned char num);

void TelOperateLoop(void);
void ExtTelCheck(void);            //分机摘机检测
void OutsideTelRingCheck(void);    //外线振铃检测


/*************DTMFDecord.c函数列表**************************/
unsigned char mDTMF1_Pre;
unsigned char mDTMF2_Pre;

unsigned char mDTMF_In;
unsigned char DTMF_Decode(unsigned char DTMF_NUM);


/************fnTelGen.c函数列表**************************/
#define cExt1Bit  0x01
#define cExt2Bit  0x02
#define cExt3Bit  0x04
#define cExt4Bit  0x08
#define cExt5Bit  0x10
#define cExt6Bit  0x20

#define cOut1Bit  0x01
#define cOut2Bit  0x02


#define cExt1Num  0x0
#define cExt2Num  0x1
#define cExt3Num  0x2
#define cExt4Num  0x3
#define cExt5Num  0x4
#define cExt6Num  0x5

#define cOut1Num  0x0
#define cOut2Num  0x1

#define cXin  0x0b
#define cJing 0x0c


void fnStopOutRing(unsigned char mOutNum);
unsigned char fnFindFreeExt(unsigned char mOutNum);
void fnStopExtRing(unsigned char mExtNum);
void fnStopExtWaitRing(unsigned char mExt_FPt,unsigned char mExtNum);
void fnExtLinkMusic(unsigned char mExtNum);
void fnExtCutOffMusic(unsigned char mExt_FPt,unsigned char mExtNum);
void fnFlashWaitRing(unsigned char mExtNum);
void fnCutOffExtLineAndLinkToBusy(unsigned char mY4Y5Nm);
void fnConnectionOutLine(unsigned char cNumIn ,unsigned char mExtNum);
void fnCutOffLineIn(unsigned char mLineNm);   // 1= Line 1 , 2=Line 2
void fnCutOffY4Y5(unsigned char mY4Y5Nm); // 4= Y4 , 5= Y5
void fnCutOffDTMF(unsigned char mDTMFNm); // 1= DTMF 1 , 2=DTMF 2
unsigned char fnLinkLineIn_Ext(unsigned char mExtenNm);  //mExtenNm 0-5  return: 0:Unsuccess 1= Line 1 2= Line 2
unsigned char fnLinkExtLineY4Y5(unsigned char mExtenNm); //mExtenNm 0-5  return: 0:Unsuccess 4= Y4 5= Y5
unsigned char fnLinkDTMF_Ext(unsigned char mY);    //mExtenNm 0-5  return: return: 0:Unsuccess  1= DTMF 1 2= DTMF 2

unsigned char fnFindRingOutLine(void);  // Return 0: No Find 1=OutLine 1 2=OutLine2
unsigned char fnFindRingExtLine(unsigned char mExtNum);  // Return 0: No Find 1=OutLine 1 2=OutLine2
unsigned char fnFindRingExtY4Y5(void);
unsigned char fnExt_DTMFIN1(unsigned char mDTMF_Num, unsigned char mY4Y5Num,unsigned char mExtNum ,unsigned char mExtdialOutNum );
unsigned char fnExt_DTMFIN2(unsigned char mDTMF_Num, unsigned char mExtNum ,unsigned char mY4Y5Num);


void fnCutOffFlash(void);   // 1= Line 1 , 2=Line 2
unsigned char fnFindExtStillSong(void);
void fnConnectMtoExt( unsigned char mExtMusic, unsigned char mExtNm); // fnExt1_FlashLinkExtPhone
void fnConnectMtoRExt(unsigned char mExtMusic,unsigned char mExtRing); //for fnExt1_FlashWaitRing
void fnConnectMtoOut( unsigned char mExtMusic, unsigned char mExtNm); // fnExt1_FlashLinkExtPhone
void fnConnectMtoROut(unsigned char mExtMusic,unsigned char mExtRing); //for fnExt1_FlashWaitRing

void fnStopAllExtRingFor_OutLine(void);				// 停止 内机响铃
unsigned char fnFind_4FreeExt(unsigned char mOutNum);
unsigned char fnFindWhichLineInRingFirst(void);


/****************Ext1.c函数列表*************************/
unsigned char Ext_FunPt[6];
unsigned char Ext_LineY4Y5Num[6];
unsigned char MulTalkState;

#define Ext1_FunPt         Ext_FunPt[0]
#define Ext1_LineY4Y5Num   Ext_LineY4Y5Num[0]
unsigned int  Ext1_dialtime;
unsigned char Ext1_NumdialOut,Ext1_FlashNumdialOut;
unsigned char Ext1_NumdialIn;
//unsigned char Ext1_LineY4Y5Num;
unsigned char mExt1_Link[2];
unsigned char Ext1_MusicNumdialIn;

void fnTelRountineExt1(void);


/****************Ext2.c函数列表*************************/

#define Ext2_FunPt Ext_FunPt[1]
#define Ext2_LineY4Y5Num   Ext_LineY4Y5Num[1]
unsigned int  Ext2_dialtime;
unsigned char Ext2_NumdialOut,Ext2_FlashNumdialOut;
unsigned char Ext2_NumdialIn;
//unsigned char Ext2_LineY4Y5Num;
unsigned char mExt2_Link[2];
unsigned char Ext2_MusicNumdialIn;

void fnTelRountineExt2(void);
/****************Ext3.c函数列表*************************/

#define Ext3_FunPt Ext_FunPt[2]
#define Ext3_LineY4Y5Num   Ext_LineY4Y5Num[2]
unsigned int  Ext3_dialtime;
unsigned char Ext3_NumdialOut,Ext3_FlashNumdialOut;
unsigned char Ext3_NumdialIn;
//unsigned char Ext3_LineY4Y5Num;
unsigned char mExt3_Link[2];
unsigned char Ext3_MusicNumdialIn;

void fnTelRountineExt3(void);
/****************Ext4.c函数列表*************************/

#define Ext4_FunPt Ext_FunPt[3]
#define Ext4_LineY4Y5Num   Ext_LineY4Y5Num[3]
unsigned int  Ext4_dialtime;
unsigned char Ext4_NumdialOut,Ext4_FlashNumdialOut;
unsigned char Ext4_NumdialIn;
//unsigned char Ext4_LineY4Y5Num;
unsigned char mExt4_Link[2];
unsigned char Ext4_MusicNumdialIn;

void fnTelRountineExt4(void);

/****************Ext5.c函数列表*************************/

#define Ext5_FunPt Ext_FunPt[4]
#define Ext5_LineY4Y5Num   Ext_LineY4Y5Num[4]
unsigned int  Ext5_dialtime;
unsigned char Ext5_NumdialOut,Ext5_FlashNumdialOut;
unsigned char Ext5_NumdialIn;
//unsigned char Ext5_LineY4Y5Num;
unsigned char mExt5_Link[2];
unsigned char Ext5_MusicNumdialIn;

void fnTelRountineExt5(void);

/****************Ext6.c函数列表*************************/

#define Ext6_FunPt Ext_FunPt[5]
#define Ext6_LineY4Y5Num   Ext_LineY4Y5Num[5]
unsigned int  Ext6_dialtime;
unsigned char Ext6_NumdialOut,Ext6_FlashNumdialOut;
unsigned char Ext6_NumdialIn;
//unsigned char Ext6_LineY4Y5Num;
unsigned char mExt6_Link[2];
unsigned char Ext6_MusicNumdialIn;

void fnTelRountineExt6(void);




#define cTelTm50ms		50

unsigned char mLineInFirstRing;

/****************Out1.c函数列表*************************/

unsigned char Out1_FunPt;
unsigned char Out1_NumdialOut;

void fnTelRountineOut1(void);

/****************Out2.c函数列表*************************/

unsigned char Out2_FunPt;
unsigned char Out2_NumdialOut;

void fnTelRountineOut2(void);


/****************Doorphone.c函数列表*************************/

unsigned char Doorphone_FunPt;
unsigned char DoorRingRd,DoorRingPre;
unsigned char Door_LineY4Y5Num;
unsigned int Doorphone_time;
void fnTelRountineDoorphone(void);

unsigned char NotHoldDoorphone(void);

⌨️ 快捷键说明

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