📄 solar_ctrl.h
字号:
//C++头文件 //
//定义了太阳能板类、电池类、输出类、定时类 //
//***********************************************************//
///////////////////////////////////////////////////////////////
//----------------------数据定义-----------------------------//
///////////////////////////////////////////////////////////////
#define bool char
#define null 0x00
#define NULL null
#define full ~NULL
#define FULL full
#define false 0x00
#define true ~false
#define FALSE false
#define TRUE ~FALSE
#define debug false
#define tra_data FALSE//数据监控
//#define Stop_SYS 0x00
//#define Start_SYS ~stop
//寄存器位定义
#define bit7 0x7
#define bit6 0x6
#define bit5 0x5
#define bit4 0x4
#define bit3 0x3
#define bit2 0x2
#define bit1 0x1
#define bit0 0x0
//++++++++++++++++++
//太阳能电池管理类
//++++++++++++++++++
#define turnoff_solar() PORTB&=~(1<<PORTB0)
#define turnon_solar() PORTB|=1<<PORTB0
#define SLMIN 0X01E//最小电压为:1.5V ,在此电压开启关闭负载
#define SLMAX 0X2D//最小电压为:1.5V ,在此电压开启关闭负载
int solar_vmax;
int solar_vmin;
int solar_nmv;
//++++++++++++++++++
//可充电电池管理类
//++++++++++++++++++
#define BATT12VMAX 0X8B//13.9X10V-10
#define BATT12VMIN 0X69//10.5X10V-10
#define STOP_LOAD 0X6F//11.1V
#define DISCHARGE_ARLAM 0X73//11.5V
#define THRESHOLD_Q_CH 0X78//12V
#define THRESHOLD_F_CH 0X87//13.5V
#define THRESHOLD_V_CH 0X91 //14.5V
#define SYSTEM12V TRUE
bool sunup;//日出标志
bool low_v;//欠压标志
int battery_nmv;
int solar_ch;
//++++++++++++++++++
//电源输出管理类
//++++++++++++++++++
#define turnon_load() PORTB|=1<<PORTB5
#define turnoff_load() PORTB&=~(1<<PORTB5)
#define LOAD12V_MAX 0XD2//20X 10+40
#define LOAD12V_MIN 0X69//18.0X 10
#define low_cycle 0x06
#define hi_cycle 0x03
int output_nmv;
int load_nmv;
char cycle_num;
//++++++++++++++++++
//定时管理类
//++++++++++++++++++
#define TIMER_TMAX 0xA8C0//12小时
#define TIMER_TMIN 0x0E10//1小时
#define TIMERADC_SCALE 0X53//每小时采集值约为83
#define timer_second 0x7D
int timer_tc; //
int timer_th;//用户设定时间值
//++++++++++++++++++
//LED管理类
//++++++++++++++++++
#define WORK_LED 0X04
#define OVERCH_LED 0X01
#define CHARGE_LED 0X02
//++++++++++++++++++
//温度管理类
//++++++++++++++++++
#define OVERTEM_BATTMAX 0X32
#define OVERTEM_BATTMIN 0X14
bool over_tem;
bool first_tem;
int init_tem;
///////////////////////////////////////////////////////////////
//-----------------------程序定义----------------------------//
///////////////////////////////////////////////////////////////
#define MCUCLK 4000000
#define nop() __asm__ __volatile__ ("nop") //空指令
#define WD1CK 0X00;
#define WD2CK 0X01;
#define WD3CK 0X02;//68.5ms
#define WD4CK 0X03;
#define WD5CK 0X04;
#define WD6CK 0X05;
#define WD7CK 0X06;
#define WD8CK 0X07;
#define WDOG_CK(N) {WDTCR&=-XF8;WDTCR|=N;}
#define ENWATCH_DOG WDTCR|=1<<bit3;
#define sleep() __asm__ __volatile__ ("sleep") //休眠指令
#define feed_dog() __asm__ __volatile__ ("wdr") //看门狗复位指令
#define T0stoptimer() TCCR0=NULL //停止定时器0
#define T01CK() TCCR0=0X01
#define T08CK() TCCR0=0X02
#define T064CK() TCCR0=0X03
#define T0256CK() TCCR0=0X04
#define T01024CK() TCCR0=0X05
#define ENT1CA() TIMSK|=1<<bit6 //使能T1CA
#define ENT1CB() TIMSK|=1<<bit5 //使能T1CB
#define ENT0IE() TIMSK|=1<<bit1 //使能定时器0
#define ENT1IE() TIMSK|=1<<bit2 //使能定时器1
#define DIST1CA() TIMSK&=~(1<<bit6) //禁止T1CA
#define DIST1CB() TIMSK&=~(1<<bit5) //禁止T1CB
#define DIST0IE() TIMSK&=~(1<<bit1) //禁止定时器0
#define DIST1IE() TIMSK&=~(1<<bit0) //禁止定时器1
#define CTROC1A() TCCR1A|=1<<bit6
#define CTROC1B() TCCR1A|=1<<bit4
#define PWMOC1A() TCCR1A|=1<<bit1
#define PWMOC1B() TCCR1A|=1<<bit0
//#define CTROC1A() TCCR1A|=1<<bit6
//#define CTROC1B() TCCR1A|=1<<bit4
#define T11CK() TCCR1B=(1<<bit0)
#define T12CK() TCCR1B=(1<<bit1)
#define T14CK() TCCR1B=(1<<bit1)|(1<<bit0)
#define T18CK() TCCR1B=(1<<bit2)
#define T116CK() TCCR1B=(1<<bit2)|(1<<bit0)
#define T132CK() TCCR1B=(1<<bit2)|(1<<bit1)
#define STOPT1CK() TCCR1B&=0XF0
#define TOFF_CYCLE 0X50//在主频2000000Hz下1分频得到的PWM频率为50000Hz
#define OC_CYCLE 0xFF//50//OC_CYCLE=MCUCK/50000=(80)d=0X50
//在主频4000000Hz下4分频得到的PWM频率为8333Hz
#define BTON_CYCLE 0x18//OC_CYCLE=MCUCK/50000=(80)d=0X50
//在主频4000000Hz下4分频得到的PWM频率为8333Hz
#define OC1A_V(N) OCR1A=N
#define OC1B_V(N) OCR1B=N
#define OC1C_V(N) OCR1C=N
//////////////////////////////////////////
#define ADC_ERRO 0X14 //ADC误差为0.05v
#define ADC_REF_AVCC 0X00 // ADC参考电压定义
#define ADC_REF_PA3 0X40
#define ADC_REF_25 0X80
#define ADC_REF_25P 0XC0
#define ADCMIN_CH 0X00 //ADC最小与最大通道号
#define ADCMAX_CH 0X04
#define ADCCH0 0X00 //ADC通道号
#define ADCCH1 0X01
#define ADCCH2 0X02
#define ADCCH3 0X03
#define ADCCH4 0X04
#define ADC_CH(n) ADMUX=ADC_REF_25P+n //通道选择N<5
#define ENADC() ADCSR|=1<<bit7 //使能ADC
#define DISADC() ADCSR&=~(1<<bit7) //关闭ADC
#define START_ADC() ADCSR|=1<<bit6 //启动单次ADC
#define ENADCIE() ADCSR|=1<<bit3 //ADC中断使能
#define ADCCK2 0X01
#define ADCCK4 0X02
#define ADCCK8 0X03
#define ADCCK16 0X04
#define ADCCK32 0X05
#define ADCCK64 0X06
#define ADCCK128 0X07
#define ADCCK(N) ADCSR=(ADCSR&0XC8)|N //ADC分频器
#define ADC_ADD_CT 0X03
char ADC_CH;
int ADC_variable;
#define MEM_IO(mem_addr) _MMIO_BYTE(mem_addr)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -