📄 defines.h
字号:
#ifndef _defines_H_
#define _defines_H_
#ifdef __ICCAVR__
#include <iom8.h>
#include <string.h>
#endif
#ifdef WIN32
#include <string.h>
#define __eeprom
#endif
//AVR_GCC
//#include <avr/io.h>
#ifndef USHORT
#define USHORT unsigned short
#endif
#ifndef UCHAR
#define UCHAR unsigned char
#endif
#ifndef NULL
#define NULL 0
#endif
/*#define memset(dest, data, size)\
{\
for(UCHAR i = 0; i < size; i++){\
((UCHAR*)dest)[i] = data;\
}\
}
#define memcpy(dest, sour, size)\
{\
for(UCHAR i = 0; i < size; i++){\
((UCHAR*)dest)[i] = ((UCHAR*)sour)[i];\
}\
}*/
//是否需要农历
#define SUPPORT_LUNAR 1
#if SUPPORT_LUNAR
//农历最大支持到哪一年
#define LAST_LUNAT_YEAR 2030
//是否支持节气
#define SUPPORT_LUNAR_HOLIDAY 0
#endif
#define KEY_DOWN 2
#define KEY_UP 1
#define KEY_LEFT 4
#define KEY_RIGHT 8
#define KEY_YES 16
#define KEY_ADD KEY_DOWN
#define KEY_DEC KEY_UP
#define KEY_PREV KEY_UP
#define KEY_NEXT KEY_DOWN
//最多支持5个闹钟
#define ALARM_MAX 5
//标志位定义
#define F_TIME 1
#define F_DATE 2
#define F_ALARM 4
#define F_SUN 1
#define F_MON 2
#define F_TUE 4
#define F_WED 8
#define F_THU 16
#define F_FRI 32
#define F_SAT 64
#define F_ANYDAY 127
#define F_WORKINGDAY 62
#define F_WEEKEND 65
//改变接线时, 只需要重新定义LEDBUFF就可以了, 不需要改核心代码
struct LEDBUFF{
union{//led1-1
UCHAR mon1;
struct{
UCHAR pad1 :7;
UCHAR f_time :1;
};
};
union{//led1-2
UCHAR mon2;
struct{
UCHAR pad2 :7;
UCHAR f_date :1;
};
};
union{//led2-1
UCHAR day1;
struct{
UCHAR pad3 :7;
UCHAR f_alarm :1;
};
UCHAR lunHolidayWait1;
};
union{//led2-2
UCHAR day2;
/*struct{
UCHAR pad4 :7;
UCHAR pad :1;
};*/
UCHAR lunHolidayWait2;
};
union{//led3-1
struct{
union{
UCHAR hourring :7;
UCHAR weeksel :7;
};
};
};
union{//led3-2
UCHAR week;
UCHAR alarmIndex;
};
union{//led4-1
UCHAR hour1;
UCHAR lunMon1;
UCHAR year1;
};
union{//led4-2
struct{
UCHAR dotpad :7;
UCHAR dot :1;
};
UCHAR hour2;
UCHAR lunMon2;
UCHAR year2;
};
union{//led5-1
UCHAR min1;
UCHAR lunDay1;
UCHAR year3;
};
union{//led5-2
UCHAR min2;
UCHAR lunDay2;
UCHAR year4;
};
union{//led6-1
UCHAR sec1;
UCHAR ring1;
UCHAR lunarholiday1;
};
union{//led6-2
UCHAR sec2;
UCHAR ring2;
UCHAR lunarholiday2;
};
};
struct ALARMBUFF{
UCHAR enable;
UCHAR hour;
UCHAR min;
UCHAR ring;
UCHAR week;
};
extern const UCHAR DataLed[16];
extern LEDBUFF led;
// eeprom 变量定义
extern __eeprom UCHAR no_use; //开始的第一个字节不用
extern __eeprom UCHAR alarm_pos; //当为0x5a时,启用第一组地址, 否则使用第二组地址
extern __eeprom UCHAR hourring1;
extern __eeprom ALARMBUFF alarm1[ALARM_MAX];
extern __eeprom UCHAR hourring2;
extern __eeprom ALARMBUFF alarm2[ALARM_MAX];
#if SUPPORT_LUNAR
extern __eeprom const USHORT gLunarMonthDays[LAST_LUNAT_YEAR-1998];
extern __eeprom const UCHAR gLunarMonth[(LAST_LUNAT_YEAR-1998)/2];
extern __eeprom const UCHAR gLunarHoliday[12*(LAST_LUNAT_YEAR-1999)];
#endif
#define ALARMBUFF1_ADDR sizeof(UCHAR) + sizeof(UCHAR)
#define ALARMBUFF2_ADDR ALARMBUFF1_ADDR + sizeof(UCHAR) + sizeof(alarm1)
#define LUNARMONTHDAYS_ADDR ALARMBUFF2_ADDR + sizeof(UCHAR) + sizeof(alarm2)
#define LUNARMONTH_ADDR LUNARMONTHDAYS_ADDR + sizeof(gLunarMonthDays)
#define LUNARHOLIDAY_ADDR LUNARMONTH_ADDR + sizeof(gLunarMonth)
//#define LUNARMONTH_ADDR LUNARMONTHDAYS_ADDR
//#define LUNARHOLIDAY_ADDR LUNARMONTH_ADDR
#endif //define _defines_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -