📄 main.c
字号:
//#include <c8051f310.h>
#include "delay.h"
#include "indication.h"
#include "measure.h"
#include "def.h"
//#define Vbattery=0
//#define Vsource=0
//#define temperature=0
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P1_0=P1^0;
//sbit dotest=P1^0;
unsigned int cotest; //过充标志
unsigned int dotest; //过放标志
//unsigned int time;
main()
{
XBR0=0x00; //设置交叉开关
XBR1=0x41;
P0MDIN=0xff; //P0口的设置
P0MDOUT=0xff;
P1MDIN=0xd6;
P1MDOUT=0x09;
P0SKIP=0xFF; //交叉0开关跳过引脚
P1SKIP=0xFF; //交叉1开关跳过引脚
P2MDIN=0xf7; //P2口的设置
P2MDOUT=0xf7;
P3MDIN=0xff; //P3口的设置
P3MDOUT=0xff;
P2SKIP=0x00; //交叉2开关跳过引脚
REF0CN=0xf9; //参考电压设置
OSCICN=0xC3; //内部振荡器控制设置
CLKSEL=0X00; //时钟选择设置
//OSCXCN=0xEF; //外部震荡器的设置
//EIE1 = 0x08;
//PCA0MD = 0x01; /*PCA定时器/计数器溢出中断禁止*/
PCA0H=0xfc;
PCA0L=0xf0;
PCA0MD=0x08;
EIE1 =0x18; //中断扩展设置
// PCA0CPM0=0xCB;
PCA0CN=0X40;
//PCA0CPM1=0xC2;
//EIE2 |=10;
//PCA0CPL0=0x00;
//PCA0CPH0=0x80;
//PCA0CPM0=0xcb;
EA=0x01; //开总中断
ET0=0x01; //开定时器中断
EX0=0x01;
ET1=0x01; //开外部中断
// EX1=0x01;
IT01CF=0X01; //外部中断电平设置
//SP=0x68;
TMOD=0x01; //定时器设置
CKCON=0xc0;
TL0=0x00; //给定时器0赋初值
TH0=0x00;
TR0=1; //启动定时器0
while(1)
{
battery(); //电池电压检测
delay(100);
testtemperature(); //温度检测
delay(100);
sourcemeasure(); //外部电网电压检测
delay(100);
if(vsource==0) //外部段电
{
/*if(dotest==1)
{
redflash(); //显示过放状态
//dotest=0x01;
P0_6=0;
}
else
{
P0_6=1;
lightoff(); //显示应急状态
}*/
if(vbattery==0) //电池电量不足
{
redflash(); //显示过放状态
P0_6=0;
}
else
{
lightoff(); //应急模式
P0_6=1;
}
}
else
{
/*if(cotest==1)
{
redlighton();
//cotest=0x01;
P2_0=0;
PCA0CPM0=0x00;
//P0_6=0;
}
else
battery();*/
if(vbattery==4)
{
redlighton(); //显示过充状态
P2_0=0; //关断充电口
PCA0CPM0=0x00;
}
else
{
greenlighton(); //正常模式
charge();
}
}
}
}
void int0() interrupt 0 using 1
{
greenflash(); //显示自检状态
delay(100);
delay(100);
/***************************************************
添加相应的自检测处理程序
***************************************************/
}
/*void int1() interrupt 2
{
redflash();
dotest=0x01;
P0_6=0;
}*/
void timer0() interrupt 1
{
TL0=0x00;
TH0=0x00;
TR0=1;
if(P0_7==0)
{
redlighton(); //显示过充状态
cotest=0x01; //置过充状态
P2_0=0; //关断充电口
PCA0CPM0=0x00;
//P0_6=0;
}
if(P1_0==0)
{
redflash(); //显示过放状态
dotest=0x01; //置过放状态
P0_6=0; //关断应急灯
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -