📄 main.c
字号:
//*************************************************************************
//**软 件 名:灭火控制盘(XMP4-2)
//**模 块 名:main.c
//**说 明:主函数
//*************************************************************************
#include <AT89x55.H>
#include "main.h"
//*************************************************************************
//**函 数 名:InitializeSystem
//**输 入:无
//**输 出:无
//**功能描述:系统初始化
//*************************************************************************
void InitializeSystem(void)
{
//循环变量
uint xdata II;
EA = 0; //禁止全部中断
PSW = 0; //初始化程序状态字寄存器
TH0 = TH0INIT; //写定时器初值
TL0 = TL0INIT;
IP = 0x02; //初始化中断优先级寄存器
TMOD = 0x11; //设置定时器工作方式 方式1
TCON = 0x00; //初始化定时器控制寄存器
IE = 0x02; //初始化中断使能寄存器 全局禁止 定时器0、1,外部中断0使能
//********************设置系统状态***********************
//停止给探测器送24V电源
DETECT_POWER = 0;
HIGH040ADDRESS = CS_OUT1;
for(II=0;II<=1000;II++);
//给探测器送24V电源
DETECT_POWER = 1;
HIGH040ADDRESS = CS_OUT1;
MUTE_LED = 1; //关闭消音指示灯
POWER_LED = 0; //点亮主电指示灯
BATT_LED = 0; //点亮备电指示灯
LCD_LAMP = 0; //开液晶显示器背光
SELF_TEST = 0; //自检输出端
//向指定口送数
KEYCOL_SCAN = CS_OUT2;
//关闭火警灯
FireLED(0);
//关闭启动灯
StartUpLED(0);
//关闭故障灯
FaultLED(0);
//熄灭延时启动灯
D_StartUpLED(0);
//************************** 系统变量设置 ************************************
key_num = 0xff;
machine_status = 0x10; //设置系统当前状态为“正常”
ButtonAction = 0; //系统运行前检测按键是否动作的标志位
for(II=0;II<4;II++)
{
//四个区的手动启动延时启动时间
delay_SDstart_time[II]=SD_delay_time;
//四个区的自动启动延时启动时间
delay_ZDstart_time[II]=ZD_delay_time;
//自动手动状态存贮=1为自动=0为手动
auto_status[II] = 0;
//禁止允许状态存贮=1为允许=0为禁止
allow_status[II] = 0;
}
//************************** 系统定时器设置 ************************************
//关定时器0
TR0 = 1;
//开定时器1
TR1 = 1;
//打开全部中断
EA = 1;
}
/////////////////////////////////////////////////////////////////////////////////
main()
{
uchar xdata II;
uchar xdata status_test=0;
//消除声响
BeepCtrl(0);
C_EXTRAM();
//开背光
LCDLAMPCTRL(1);
//启动时钟
Start12887();
Clr_Scr(0);
//从12887中读取系统基本设置
ReadSysSetup();
//系统初始化,变量初始化
InitializeSystem();
//显示系统初始化中
Logo_Lcd_Dis(1);
//禁止启动
Delay_StartUP(0);
//检测各个区是否有按键动作的情况
for(II=0;II<4;II++)
{
//检测按键是否按下
TestButtonAction(II+1);
}
//如果有按键按下的话,就停在这里,不往下进行,并显示警告
if(ButtonAction == 1)
{
//显示警告界面
Logo_Lcd_Dis(3);
while(1);
}
//显示正常界面
Logo_Lcd_Dis(2);
//开关液晶背光的计数器
backlamp_delay=3000;
//允许启动
Delay_StartUP(1);
DelayMS(1000);
while(1)
{
//查询打印缓冲区
if(PrintBuff_Start!=PrintBuff_End)
{
PrintInfo(PrintBuff_Start);
PrintBuff_Start++;
if(PrintBuff_Start>=100)
PrintBuff_Start=0;
}
//键盘处理函数
Key_Manage();
//读取ADC0809的AD转换值
AD_Covernt();
//分析各个区的探测器的状态
Detect_Fire();
//分析探测器的状态
Anayle_Detect();
//判断火警相与信号
auto_start_qu();
//有延时启动时的管理
Delay_Manage();
//主电备电充电故障检测
Power_TONGXU_Detect();
//////////////////定时刷新,防止液晶死机//////////////////////
if((prog_count==100)&&(machine_status==0x10))
{
prog_count=0;
//初始化液晶
Init_LCD();
Read12887(Clock_Time);
Dis_Clock();
//显示正常界面
Logo_Lcd_Dis(2);
}
//如果有信息显示
if(have_report)
{
//显示报警信息
DISP_Information();
//清有信息显示标志
have_report=0;
//开关液晶背光的计数器清零
backlamp_delay=0;
}
if((alarm_number>0)||(fault_number>0)||(feedback_number>0)||(stop_number>0)||(start_number>0)||(backlamp_delay!=1))
{
//开液晶背光
LCDLAMPCTRL(1);
}
else
if(backlamp_delay == 1)
{
//关背光
LCDLAMPCTRL(0);
}
for(II=0;II<4;II++)
{
if(Qu_online[II]==0x01)
{
//显示各个区的自动手动禁止允许状态灯
Disp_Auto_Allow(II+1);
//读取各个区的线路故障
ReadQuFault(II+1);
//读取各个区的按键状态,启动状态,允许禁止状态
ReadQuStart(II+1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -