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

📄 main.c.bak

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

void	SystemInit();
bit		TimeTickFlag;

main()
{
	idata UCHAR time=1;
	
	SystemInit();
	Rs232Init();
	TelOperateInit();
	SoundInTelInit();
	CommunicationInit();
	
	rs232write(0xAA);
	rs232write(0x55);
	rs232write(0x00);
	rs232write(0xFF);
	rs232write(0x88);
	
	StarDecordDTMF(1);
	
	EA=1;
	while(1)
		{	
			rs232loop();
			DecordDTMF();
			if(TimeTickFlag)
				{
					TimeTickFlag=0;
						//添加时间片处理函数;						
					TelOperateLoop();
					DealHintSound();
					time++;
				}
			//if((time%10)==0){MessageDeal();}	//消息处理
			if(time>=100)	//0.2秒 计时
				{									
					ResResume();	//系统资源归原		
					MessageDeal();	//消息处理		
					ExtTimeDeal();	//分机时间处理
					SoundWayLoop();
					time=0;
				}
		}
}

void	SystemInit()
{	
	//8816 初始状态
	idata int i;
	for(i=0;i<1000;i++){;}
	SoundSwitchStorbe=0;
	PORT=0;
	
	//quiet all extension tel
	PORT=0;				//分机振铃控制
	EnRingPort=0;
	EnRingPort=1;
	EnRingPort=0;
	
	PORT=0;				//外部取线控制
	EnTakeLine=0;
	EnTakeLine=1;
	EnTakeLine=0;
	
	EnDetectHold=1;//检测分机摘、挂机状态
	
	EnDetectRing=1;//检测外线振铃状态
	
	EnDTMFDecordOut1=0;	
	EnDTMFDecordOut2=0;
	
	EnDTMFCreate=1;	//DTMF产生许可
	EnableE2ROM=0;
	
	PORT=0xff;

	SCONF=SCONF|ExtRamEnable;
	
	//用于系统时间,定时3ms	
	TMOD=TMOD|0x01;		
	TH0=SystemTimeConst>>8;
	TL0=SystemTimeConst;
	TR0=1;
	ET0=1;	//开定时器0中断
	
	TimeTickFlag=0;		//时间片处理函数
	
	//系统软件初始化
	WriteSYSTEM(sp_TakeLineAtHome,c_TakeLineAtHome);	//在家铃声设置
	WriteSYSTEM(sp_TakeLineOutside,c_TakeLineOutside);	//离家铃声设置
	WriteSYSTEM(sp_SystemState,c_SS_none);		//系统状态
}

void	SystemTimeTick() interrupt 1
{
	//时间常数重载
	TR0=0;					
	TH0=(SystemTimeConst+8)>>8;
	TL0=(SystemTimeConst+8);
	TR0=1;
	
	TimeTickFlag=1;
}

⌨️ 快捷键说明

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