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

📄 main.c

📁 实现了应急灯的控制
💻 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 + -