📄 switch.h.bak
字号:
#ifndef _SWITCH_H
#define _SWITCH_H
#include<reg51.h>
#include "intrins.h" //可以用_nop_();
//Type difine*****************************
typedef unsigned char uint8;
typedef unsigned char UCHAR;
typedef unsigned int uint16;
typedef unsigned int WORD;
typedef unsigned long uint32;
typedef unsigned long DWORD;
//应用系统配置*****************************
#define ExtTelNum 8 //定义分机数目
#define MaxNumAtRing 3 //同时响铃的最多分机数目
#define RingTime 10 //振铃次数
#define RINGTIMELENGTH (1000/TimeTick) //1000ms=1s 振铃时间
#define RINGQUIETTIMELENGTH (4000/TimeTick) //4000ms=4s 振铃间隔时间
#define OUTSIDETELNUM 2 //外线数目 可扩展到四路
#define DTMF_DecordResouceNum 2 //DTMF解码芯片数目
#define DTMF_DecordResouce_1 5 //DTMF解码信号输入在8816中的位置 IC_15 8816_Y5
#define DTMF_DecordResouce_2 6 // IC_16 8816_Y6
#define COMMUNICATIONGROUPNUM 4 //同时最多通话组
#define sp_TakeLineAtHome 00 //在系统参数数组中的位置,在家状态下响铃数目
#define sp_TakeLineOutside 01 //在系统参数数组中的位置,离家状态下响铃数目
#define sp_SystemState 02 //系统状态
#define c_TakeLineAtHome 16 //系统默认参数
#define c_TakeLineOutside 16 //系统默认参数
#define c_SS_none 0 //系统状态 正常状态 没事发生
#define c_SS_intoautosystem 1 //内线进入智能家居系统
#define c_SS_inautosystem 2 //内线处于智能家居系统
#define GET_RINGING_TEL 1 //按 "# + 1" 代接正在振铃的电话
#define ENTER_AUTOSYSTEM 2 //按“#+2”从内线进入智能家居系统
#define EXT_FLASH_TIME 500 //闪断时间必须小于500*2ms
#define KEY_PRESS_TIME 250 //按键延时250*2ms
//时间常数*********************************
//用于串口波特率部分
#define BoradRateUse_T2
#define BoradRate 9600.0 //使用浮点数计算精确
#define CrystalRate 24000000.0 //使用浮点数计算精确
#define ProfitRate_T1 (char)(256-(CrystalRate/(12*BoradRate*16)))
#define ProfitRate_T2 (int)(65536-(CrystalRate/(2*BoradRate*16))+1)
//用于系统时间,定时5MS
#define TimeTick 2 //系统时间片定义 单位ms
#if TimeTick==1
#define SystemTimeConst (int)(65536-(CrystalRate/12000)*1)
#endif
#if TimeTick==2
#define SystemTimeConst (int)(65536-(CrystalRate/12000)*2)
#endif
#if TimeTick==3
#define SystemTimeConst (int)(65536-(CrystalRate/12000)*3)
#endif
//hardware interface***********************
sfr PORT =0x80; //P0口
extern idata UCHAR PORT_STORE;
sbit EnableE2ROM =P2^0;
sbit EnDTMFCreate =P2^1;
sbit EnDTMFDecordOut2=P2^2; //IC16
sbit EnDTMFDecordOut1=P2^3; //IC15
sbit EnRingPort =P2^4;
sbit EnTakeLine =P2^5;
sbit EnDetectHold =P2^6;
sbit EnDetectRing =P2^7;
sbit CD22100_A =P1^0;
sbit CD22100_B =P1^1;
sbit CD22100_C =P1^2;
sbit CD22100_D =P1^3;
sbit CD22100_DataIn =P1^4;
sbit CD22100_Storbe =P1^5;
sbit DTMF_Clk =P1^6;
sbit DTMF_Data =P1^7;
sbit SoundSwitch_x0 =P0^0;
sbit SoundSwitch_x1 =P0^1;
sbit SoundSwitch_x2 =P0^2;
sbit SoundSwitch_x3 =P0^3;
sbit SoundSwitch_y0 =P0^4;
sbit SoundSwitch_y1 =P0^5;
sbit SoundSwitch_y2 =P0^6;
sbit SoundSwitchData =P0^7;
sbit SoundSwitchStorbe =P3^5;
sbit LED =P3^4;
//89C52特殊寄存器定义************************
sfr T2CON =0xc8;
sfr T2MOD =0xc9;
sfr RCAP2L =0xca;
sfr RCAP2H =0xcb;
sfr TL2 =0xcc;
sfr TH2 =0xcd;
sbit TR2 =T2CON^2;
sfr RCON =0x85; //SM89516A 用于控制内部扩展的RAM
#define RCON_Bank0 0; //每个bank为256个byte
#define RCON_Bank1 1;
#define RCON_Bank2 2;
sfr SCONF =0XBF;
#define WatchDogEnable 0x80;
#define ExtRamEnable 0x02;
sfr P4 =0xD8;
sbit dialog_open =P4^0;
sbit dialog_take =P4^1;
sbit dialog_call =P4^2;
//Rs232.c函数列表****************************
void rs232loop();
void Rs232Init();
void rs232write(UCHAR watch_data);
UCHAR ReadCCR(UCHAR item);
void WriteCCR(UCHAR item,UCHAR num);
UCHAR ReadCCS(UCHAR item);
void WriteCCS(UCHAR item,UCHAR num);
UCHAR ReadSYSTEM(UCHAR item);
void WriteSYSTEM(UCHAR item,UCHAR num);
void CCSInit();
void CCRInit();
//TelOperate函数列表**************************
void TelOperateInit();
void TelOperateLoop();
void ExtTelCheck();
char ExtTelRing(UCHAR RingTel);
void RingTimeTick();
char ExtTelStopRing(UCHAR StopRingTel);
//void ResourceWatch();
void OutsideTelRingCheck();
void TakeOutsideLine(UCHAR OutsideLineNum);
void HoldOutsideLine(UCHAR OutsideLineNum);
void ReleaseOutsideTelRingCheckRes(UCHAR linenum);
//SoundInTel.c函数列表*************************
void SoundInTelInit();
void ConnectTowPoint(UCHAR point_x,UCHAR point_y);
void CutTowPoint(UCHAR point_x,UCHAR point_y);
void DecordDTMF();
void StarDecordDTMF(UCHAR SingleAddress);
void ReleaseDTMFRes(UCHAR originresID);
UCHAR GetDTMFResNum(UCHAR originresID);
void ConnectTowPoint_CD22100(UCHAR x,UCHAR y);
void CutTowPoint_CD22100(UCHAR x,UCHAR y);
void DTMFSend();
void DealHintSound();
void SetExtTelQuietSound(UCHAR telnum);
void SetExtTelErrorSound(UCHAR telnum);
void SetExtTelWaitSound(UCHAR telnum);
UCHAR ReadHintSound(UCHAR tel,UCHAR item);
void WriteHintSound(UCHAR tel,UCHAR item,UCHAR num);
UCHAR ReadDTMF_Decord(UCHAR res,UCHAR item);
void WriteDTMF_Decord(UCHAR res,UCHAR item,UCHAR num);
UCHAR Readsoundway(UCHAR x,UCHAR y);
void Writesoundway(UCHAR x,UCHAR y,UCHAR num);
void SoundWayLoop(void);
#define ON 0xff
#define OFF 0
#define dtmfdecord_state 0
#define dtmfdecord_res 1
#define dtmfdecord_length 2
#define dtmfdecord_datastar 3
#define TYPE 0 //数组中的数据安排顺序
#define STATE 1
#define TIMEH 2
#define TIMEL 3
#define STATE_ON 1 //处于开状态
#define STATE_OFF 0 //处于关闭状态
#define HintSoundType_quiet 0 //正常状态,没有提示音
#define HintSoundType_error 1 //出错状态,没有提示音
#define HintSoundType_wait 2 //通话等待状态,没有提示音
#define HintSound_350MS 175 //0.35S
#define HintSound_1S 500 // 1S
#define HintSound_4S 2000//4S
//Communication.c函数列表**********************
//ExtComGroup[COMMUNICATIONGROUPNUM][ExtComGroup_length]
//通话组数据结构安排
//COMMUNICATIONGROUPNUM 同时最多通话组
//ExtComGroup_length 数据结构长度
#define ExtComGroup_length 20
#define ExtComGroup_number 0 //通话组编号
#define ExtComGroup_state 1
#define ExtComGroup_origin 2
#define ExtComGroup_object 3
#define ExtComGroup_insert 4
#define ExtComGroup_timeh 5
#define ExtComGroup_timel 6
#define ExtComGroup_settimeh 7
#define ExtComGroup_settimel 8
#define ExtComGroup_timetask 9
#define ExtComGroup_type 10 //通话类型
#define ExtComGroup_res 11 //占用资源
#define ExtComGroup_infolength 12 //存储信息指针
#define ExtComGroup_infoptr 13 //拨号信息存储首地址
//MessageGroup[MESSAGEGROUPNUMBER][MessageGroup_length]
//消息阵列
//MESSAGEGROUPNUMBER 消息资源数量
//MessageGroup_length 消息长度
#define MESSAGEGROUPNUMBER 5
#define MessageGroup_length 10
#define MessageGroup_origin 0
#define MessageGroup_object 1
#define MessageGroup_type 2
#define MessageGroup_datalength 3
#define MessageGroup_datastar 4
//消息类型定义 MessageGroup_type
#define EXTTEL_UNHOLD_MESSAGETYPE 0x01
#define EXTTEL_HOLD_MESSAGETYPE 0x02
#define DECODE_DTMF_MESSAGETYPE 0x03
#define STAR_SEND_CID_MESSAGETYPE 0x04
#define CLOSE_SEND_CID_MESSAGETYPE 0x05
#define OUTSIDE_CALL_IN_MESSAGETYPE 0x06
//设备编号定义
#define EXTTEL_ID 1
#define OUTSIDETEL_ID 0x11
#define HINTSOUND 7
#define MUSIC_22100 1
#define SEND_DTMF_22100 4
#define COMRES 2
#define CID_RES 1 //资源编号
#define OUTSIDECOMTYPE 8 //外部通话类型
#define INSIDECOMTYPE 9 //内部通话类型
#define DIALOGCOMTYPE 10 //楼宇对讲通话类型
#define AUTOSYSTEMTYPE 11 //智能控制系统类型
#define outtel_hold 0//外线状态
#define outtel_ring 1//外线振铃
#define outtel_used 2//外线已使用
#define outtel_using 3//外线通话中
#define exttel_hold 0 //内线状态
#define exttel_unhold 1 //摘机空闲态
#define exttel_dialing 2 //拨号状态
#define exttel_sendCID 3 //发送来电显示信息状态
#define exttel_receCID 4 //接收来电显示信息状态
#define exttel_waiting 5 //主叫方振铃等待状态
#define exttel_ring 6 //振铃状态
#define exttel_useing 7 //通话状态
#define exttel_flash 8 //闪断状态
#define exttel_switch 9 //转接拨号
#define exttel_switch_dialing 10//转接拨号中
#define exttel_error 11//出错状态
#define extcomgroup_star 1 //启动通话组 通话组状态
#define extcom_changing 25 //
#define extcom_changringing 35
#define extflash_origin_TT 10 //主叫闪断时间处理任务
#define extflash_object_TT 11 //被呼闪断时间处理任务
#define extflash_insert_TT 12 //第三方闪断时间处理任务
#define key_press_open_TT 13 //按键延时
#define key_press_take_TT 14 //按键延时
#define key_press_call_TT 15 //按键延时
#define dialog_close_TT 16 //关闭楼宇对讲通话
#define DIALOG_EXT 6 //楼宇对讲固定分机号
#define DIALOG_STATE 9 //楼宇对讲的状态 存储于分机状态数组(ExtTelState[])中的第10位
#define DIALOG_STATE_NONE 0 //普通状态
#define DIALOG_STATE_CALLING 1 //呼入、振铃状态
#define DIALOG_STATE_SOUND 2 //语音提示阶段
#define DIALOG_STATE_TALKING 3 //通话状态
#define DIALOG_STATE_PRESSING 4 //按键状态
#define DIALOG_STATE_CLOSEING 5 //关闭楼宇对讲通话
#define AUTOSYSTEM_EXT 5 //智能控制系统固定号码
#define CIDLENGTH 25 //用于存储发送CID信息的数组长度
#define CID_state 0 //发送CID的状态
#define CID_length 1 //信息有效长度
#define CID_ptr 2 //指针
#define CID_STATE_ENWRITE 0
#define CID_STATE_ENREAD 2
#define CID_STATE_SENDOVER 4
void CommunicationInit();
void WriteExtComGroup(UCHAR x,UCHAR y,UCHAR wData);
UCHAR ReadExtComGroup(UCHAR x,UCHAR y);
void WriteMessageGroup(UCHAR x,UCHAR y,UCHAR wData);
UCHAR ReadMessageGroup(UCHAR x,UCHAR y);
void SendUnholdMessage(UCHAR exttelnum);
void MessageDeal();
UCHAR CreateExtComGroup(UCHAR origin_call);
void ClearAMessage(UCHAR messageID);
void SendDecodeMessage(UCHAR exttelnum,UCHAR decode_data_length, UCHAR dtmfnum);
void SendHoldMessage(UCHAR exttelnum);
void ClearAComGroup(UCHAR comgroupID);
void SendOutsideCallInMessage(UCHAR linenum, UCHAR ringnum);
void WriteExtTelState(UCHAR num, UCHAR teldata);
UCHAR ReadExtTelState(UCHAR num);
void WriteCID(UCHAR num, UCHAR teldata);
UCHAR ReadCID(UCHAR num);
void ResResume(); //系统资源归原
UCHAR ReadExtTelTime(UCHAR num);
void WriteExtTelTime(UCHAR num, UCHAR time);
void ExtTimeDeal();
void exttel_hold_deal(UCHAR telnum);
void exttel_unhold_deal(UCHAR telnum);
void exttel_dialing_deal(UCHAR telnum);
UCHAR findextcomgroupbyorigin(UCHAR telnum);
UCHAR findextcomgroupbyobject(UCHAR telnum);
UCHAR testextcomgroup_inside();
void CreatExtComGroupByID(UCHAR extcomgroupID,UCHAR origin, UCHAR object, UCHAR type);
void exttel_sendCID_deal(UCHAR telnum);
void exttel_waiting_deal(UCHAR telnum);
void exttel_ring_deal(UCHAR telnum);
void exttel_error_deal(UCHAR telnum);
void exttel_useing_deal(UCHAR telnum);
UCHAR ReadOutTelState(UCHAR num);
void WriteOutTelState(UCHAR num, UCHAR teldata);
void outtel_hold_deal(UCHAR outtelnum);
UCHAR testoutline(UCHAR outtelnum);
void outtel_ring_deal(UCHAR outtelnum);
void outtel_using_deal(UCHAR outtelnum);
void time_exttel_unhold_deal(UCHAR telnum);
void exttel_flash_deal(UCHAR telnum);
void exttel_switch_deal(UCHAR telnum);
void time_exttel_flash_deal(UCHAR telnum);
//void test();
//void test2();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -