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

📄 sys.c

📁 在电话上用单片机来实现电话报警系统
💻 C
字号:
/*------------- 泰兴电子集团 ------------------
*----------------------------------------------
*文件名:    Sys.C 
*开发:     www.at90s1200.go.nease.net
*创建日期:  2004.05.20
*创建人:   尹刚
*功能:      系统通用子程序
-----------------------------------------------
-----------------------------------------------*/

#include 	"global.h"
/**********************************************************
*名称:     void InitCPUIO(void);
*功能:     初始化CPU及其I/O口线
*入口参数: 无
*出口参数: 无
***********************************************************/
void InitCPUIO(void)
{
	EA=0;
	P0=0xff;
	P1=0xff;
	P3=0xfe;
	TwiceBuf=0xDF;
	P2=TwiceBuf;
	LE373=1;
	LE373=0;
	P2=0xff;
//-------------------------
	IE=0x00;
	IP=0x00;
//	SP=0xd0;
	EA=1;

}
//#pragma NOAREGS
/***************************************************************
*名称:     void UpHandle(void);
*功能:     模拟摘机
*入口参数: 无
*出口参数: 无
****************************************************************/

void UpHandle(void)
{
	EA=0;
	if (HandMode)	P_Online=1;
	else		P_Online=0;
	P2=TwiceBuf;
	LE373=1;
	LE373=0;
	P2=0xff;
	EA=1;
}

/***************************************************************
*名称:     void DownHandle(void);
*功能:     模拟挂机
*入口参数: 无
*出口参数: 无
****************************************************************/

void DownHandle(void)
{
	EA=0;
	if (HandMode)	P_Online=0;
	else		P_Online=1;
	P2=TwiceBuf;
	LE373=1;
	LE373=0;
	P2=0xff;
	EA=1;
}
/***************************************************************
*名称:     void Delayms(Word count);
*功能:     延时1mS
*入口参数: Word count,最长可达65分钟
*出口参数: 无
****************************************************************/
void Delayms(Word count)
{
	Word j;
	EA=0;
 	while(count--!=0)
 		{
		for(j=0;j<46;j++);
		}
	EA=1;
}

/***************************************************************
*名称:     void Delay250uS(Word count);
*功能:     延时250uS,用来在Beep函数中产生2KHz的脉冲
*入口参数: Word count
*出口参数: 无
****************************************************************/
void Delay250uS(Word count)
{
	Word j;
	EA=0;
	while(count--!=0)
		{
		for(j=0;j<12;j++);
		}
	EA=1;
}

/***************************************************************
*名称:     void SBeep(Byte count);
*功能:     蜂鸣器鸣叫(长鸣)
*入口参数: count 鸣叫次数
*出口参数: 无
****************************************************************/
void SBeep(Byte count)
{	
	Byte i;
	EA=0;
	for(;count;count--)
		{	
		for(i=0;i<50;i++)		//50个脉冲	
			{	
			P_Beep=0;			
			P2=TwiceBuf;
			LE373=1;
			LE373=0;
			P2=0xff;
		 	Delay250uS(2);
		 	
		 	P_Beep=1;
		 	P2=TwiceBuf;;		
			LE373=1;
			LE373=0;
			P2=0xff;
		 	Delay250uS(2);
			}
		Delayms(50);			//间隔50mS
		}
	EA=1;
}
/***************************************************************
*名称:    void Beep(Byte count);
*功能:    蜂鸣器鸣叫(短鸣)
*入口参数:count 鸣叫次数
*出口参数:无
****************************************************************/
void Beep(Byte count)
{	
	Byte i;
	EA=0;
	for(;count;count--)
		{	
		for(i=0;i<255;i++)		//255个脉冲	
			{	
			P_Beep=0;			
			P2=TwiceBuf;
			LE373=1;
			LE373=0;
			P2=0xff;
			Delay250uS(2);
			
			P_Beep=1;
			P2=TwiceBuf;;		
			LE373=1;
			LE373=0;
			P2=0xff;
			Delay250uS(2);
			}
		Delayms(300);			//间隔0.3S
		}
	EA=1;
}

/***************************************************************
*名称:    void DisplayData(Byte dat);
*功能:    发送数据到Led1---Led4进行显示。
*入口参数:dat(低四位有效的4位数据)
*出口参数:无
****************************************************************/
void DisplayData(Byte dat)
{
	if (dat&0x08)		LED4=0;		//Led4亮
	else			LED4=1;		//Led4灭
	P1=~(dat&0x07);				//Led1---Led3
}
/***************************************************************
*名称:    void Alarm(void);
*功能:	   本地警报函数
*入口参数:无
*出口参数:无
****************************************************************/
void Alarm(void)
{
	Byte i;
	for (i=0;i<10;i++)
		{	
		DisplayData(0x0f);
		Delayms(100);
		DisplayData(0x00);
		SBeep(1);
		}
}

/***************************************************************
*名称: void OpenThePower(void);
*功能:远程控制【开机】函数
*入口参数:无
*出口参数:无
****************************************************************/
void OpenThePower(void)
{
	LED1=!LED1;
}

/***************************************************************
*名称: void CloseThePower(void);
*功能:远程控制【关机】函数
*入口参数:无
*出口参数:无
****************************************************************/
void CloseThePower(void)
{
	LED2=!LED2;	
}

/***************************************************************
*名称: void ByPassThePower(void);
*功能:远程控制【旁路】函数
*入口参数:无
*出口参数:无
****************************************************************/
void ByPassThePower(void)
{
	LED3=!LED3;
}

/**********************************************************
*名称:    void SetOutTime(Word timeseed);
*功能:    设置超时时间(采用定时器操作)
*入口参数:timeseed 超时时间常数
*出口参数:无
***********************************************************/

void SetOutTime(Word timeseed)
{	
	EA=0;
	FgTimeOut=0;
	OutTime=timeseed;
	K_StartOutTime=1;
	EA=1;
}


/**********************************************************
*名称:    void SetDelayTime(Word timeseed);
*功能:    设置延时时间(采用定时器操作)
*入口参数:timeseed 延时时间常数
*出口参数:无
***********************************************************/

void SetDelayTime(Word timeseed)
{	
	EA=0;
	FgDelayOver=0;
	DelayTime=timeseed;
	K_StartDelay=1;
	EA=1;
}
/***************************************************************
*名称:    void CheckSignal(void);
*功能:    检查信号,点亮相应的LED
*入口参数:无
*出口参数:(bit) 有信号返回 1 ,无信号返回 0
****************************************************************/
bit CheckSignal(void)
{
	if (!FgNoSignal)
		{
		if(FgDialVoice)	LED1=0;
		else		LED1=1;
		if(FgBusyVoice)	LED2=0;
		else		LED2=1;
		if(FgAckVoice)	LED3=0;
		else		LED3=1;
		LED4=1;
		return (1);
		}
	else
	    	{
		LED4=0;
		return (0);
	    	}
}
/***************************************************************
*名称:void InitBreak(void);
*功能:初始化中断
*入口参数:无
*出口参数:无
****************************************************************/
void InitBreak(void)
{
	EA=0;		IT1=1;		EX1=1;		//EX1边沿中断
	TMOD=0x15;	TH1=0xEC;	TL1=0x78;	//T1计数器,优先
	ET1=1;		PT1=1;		TR1=1;		//T1启动
	EA=1;	
}

⌨️ 快捷键说明

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