📄 sys.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 + -