相关连接: [匠人DIY旋转时钟 系列文章 (连载中…)]
//--------------------------------------------------------
// 项目:
// 模块:公共头文件
// 说明:常量/变量/IO口/定义
// 本工程中所有模块文件都枰帽疚募?lt;BR>// 设计:程序匠人(版权所有,引用者请保留原作者姓名)
//--------------------------------------------------------
/*
版本说明:
common.H 2005-07-23
*/
//--------------------------------------------------------
//--------------------------------------------------------
//插入文件包
//--------------------------------------------------------
#include
//--------------------------------------------------------
#ifdef root
#define EXT_
#else
#define EXT_ extern
#endif
//--------------------------------------------------------
//重新命名数据类型
//--------------------------------------------------------
typedef unsigned char tU08; //unsigned 8 bit definition
typedef unsigned char tU8; //unsigned 8 bit definition
typedef unsigned int tU16; //unsigned 16 bit definition
typedef unsigned long tU32; //unsigned 32 bit definition
typedef signed char tS08; //signed 8 bit definition
typedef signed char tS8; //signed 8 bit definition
typedef signed int tS16; //signed 16 bit definition
typedef signed long tS32; //signed 32 bit definition
typedef float tF24;
typedef double tF24;
//=================
//位结构类型定义
//定义一个位结构,结构名=BIT_F
//=================
typedef struct {
unsigned b0 : 1; //结构元素表
unsigned b1 : 1;
unsigned b2 : 1;
unsigned b3 : 1;
unsigned b4 : 1;
unsigned b5 : 1;
unsigned b6 : 1;
unsigned b7 : 1;
} BIT_F; //定义一个只能按位寻址的变量类型 //结构类型
//=================
//联合定义
//定义一个联合,联合名=FLAG_union
//=================
typedef union {
BIT_F oneBit; //按位寻址
tU08 allBits; //按字节寻址
}FLAG_union; //定义一个既能按位寻址,也可按字节寻址的联合变量类型
//--------------------------------------------------------
//定义变量
//--------------------------------------------------------
//串口通讯
#define COMM_BUF_NUM 8 //通讯缓冲区大小
EXT_ tU08 bank1 COMM_BUF[COMM_BUF_NUM]; //通讯缓冲区(接收缓冲队列)
EXT_ tU08 bank1 COMM_PUT_PTR; //接收数据存放指针(范围:0 ~ (COMM_BUF_NUM-1))
EXT_ tU08 bank1 COMM_GET_PTR; //接收数据读取指针(范围:0 ~ (COMM_BUF_NUM-1))
//通讯命令字定义
#define COM_SET 0B11111110 //"设置"命令字
#define COM_CH 0B11111101 //"切换"命令字
#define COM_INC 0B11111011 //"递增"命令字
#define COM_DEC 0B11110111 //"递减"命令字
EXT_ tU08 NO_KEY_JSQ; //无按键计数器(每1S+1)
//显缓区
#define DISP_QUEUE_SUM 8 //待显示字符串队列长度
EXT_ tU08 DISP_QUEUE[DISP_QUEUE_SUM]; //待显示字符串队列
EXT_ bit DISP_QUEUE_FLAG; //显缓区(字符串队列)开启标志(0=未开启,1=开启)
//时间系统
EXT_ tU08 TIME_H; //时钟"时"(0~23)
EXT_ tU08 TIME_M; //时钟"分"(0~59)
EXT_ tU08 TIME_S; //时钟"秒"(0~59)
EXT_ tU08 TIME_MS; //时钟"毫秒"(0~99) (每过10ms,+1)
EXT_ tU08 TIME_US; //时钟"微秒"(0~179) (每过(250*0.222us)=55.556us,+1)
EXT_ bit MS_1HZ_FLAG; //秒闪标志(1HZ)
EXT_ bit T_10MS_FLAG; //10毫秒定时溢出标志(0=未溢出,1=溢出)
//闹钟系统
EXT_ tU08 TIMER_H; //闹钟"时"(0~23)
EXT_ tU08 TIMER_M; //闹钟"分"(0~59)
EXT_ tU08 SP_M; //闹铃时间设置值(0~99分)(说明:0=关闭闹钟)
EXT_ tU08 SP_RUN; //闹铃时间运行值(0~99分)
//工作模式
EXT_ bit MOTOR_ST_FLAG; //电机状态标志(0=关闭,1=开启)
EXT_ bit SET_EN_FLAG; //设置使能标志(0=禁止,1=使能)
EXT_ tU08 DISP_MODE; //显示状态(0~3)
EXT_ tU08 SET_MODE; //设置状态(0~5)
EXT_ tU08 MOTOR_STOP_JSQ; //电机停转计时器
//温度系统
EXT_ tU08 TEMP; //当前温度(1~109=(实际温度-10))
EXT_ tU08 ADR_NEW; //最新AD结果
EXT_ bit TEMP_ERR_FLAG; //温度检测故障标志(0=正常,1=故障)
EXT_ bit TEMP_SCAN_EN_FLAG; //温度检测使能标志(0=禁止,1=使能)
EXT_ bit TEMP_LS_NEW_FLAG; //温度历史纪录队列更新使能标志(0=禁止,1=使能)(每小时更新一次)
#define TEMP_LB_QUEUE_SUM 10 //温度滤波队列长度
EXT_ tU08 bank1 TEMP_LB_QUEUE[TEMP_LB_QUEUE_SUM]; //温度滤波队列
#define TEMP_LS_QUEUE_SUM 24 //温度历史纪录队列长度
EXT_ tU08 bank1 TEMP_LS_QUEUE[TEMP_LS_QUEUE_SUM]; //温度历史纪录队列
EXT_ tU08 TEMP_LSPJ; //24小时历史平均温度
//附加功能
EXT_ bit FUN_ZDBS_FLAG; //整点报时标志(0=禁止,1=使能)
//显示扫描功能
EXT_ bit NEW_DISP_EN_FLAG; //显示刷新使能标志(0=禁止,1=使能)
EXT_ tU16 DISP_TIME_SET; //单列显示时间设置值(赋值给TMR1H,TMR1L)
#ifdef root
tU16 TMR1HL @ 0x0E ; //重新定义TMR1HL(代替TMR1H,TMR1L)
#else
extern tU16 TMR1HL ; //重新定义TMR1HL(代替TMR1H,TMR1L)
#endif
EXT_ tU08 TIMR1_JSQ; //TIMR1溢出计数器(TIMR1每次溢出+1,检测到过零信号后清零)
EXT_ tU08 DISP_LINE; //显示列计数器(0~179)
EXT_ tU08 DISP_LINE_ADJ; //显示列计数器 角度校正值(0~179) (用于校正盘面角度)
//指针定位
EXT_ tU08 H_LINE; //时针定位(0~179)
EXT_ tU08 M_LINE; //分针定位(0~179)
EXT_ tU08 S_LINE; //秒针定位(0~179)
EXT_ tU08 ZB_LINE; //钟摆定位(65~115)
//IO口输出临时缓冲区
EXT_ FLAG_union PORTA_TEMP; //PORTA 口输出临时缓冲区
EXT_ FLAG_union PORTB_TEMP; //PORTB 口输出临时缓冲区
EXT_ FLAG_union PORTC_TEMP; //PORTC 口输出临时缓冲区
#define PORTA_TMP PORTA_TEMP.allBits
#define PORTB_TMP PORTB_TEMP.allBits
#define PORTC_TMP PORTC_TEMP.allBits
#define LED00_TMP PORTC_TEMP.oneBit.b3
#define LED01_TMP PORTB_TEMP.oneBit.b1
#define LED06_TMP PORTB_TEMP.oneBit.b6
#define LED02_TMP PORTB_TEMP.oneBit.b2
#define LED03_TMP PORTB_TEMP.oneBit.b3
#define LED04_TMP PORTB_TEMP.oneBit.b4
#define LED05_TMP PORTB_TEMP.oneBit.b5
#define LED07_TMP PORTB_TEMP.oneBit.b7
#define LED08_TMP PORTA_TEMP.oneBit.b2
#define LED09_TMP PORTA_TEMP.oneBit.b3
#define LED10_TMP PORTA_TEMP.oneBit.b4
#define LED11_TMP PORTA_TEMP.oneBit.b5
#define LED12_TMP PORTC_TEMP.oneBit.b0
#define LED13_TMP PORTC_TEMP.oneBit.b1
//--------------------------------------------------------
//EEPROM地址分配
//--------------------------------------------------------
#define EEPROM_EN_ADR 0 //EEPROM格式化标志(0XA5=已经格式化,否则=未格式化)
#define DISP_LINE_ADJ_ADR 1 //显示列计数器 角度校正值(0~179) (用于校正盘面角度)
#define TIMER_H_ADR 2 //闹钟"时"(0~23)
#define TIMER_M_ADR 3 //闹钟"分"(0~59)
#define SP_M_ADR 4 //闹铃时间设置值(0~99分)(说明:0=关闭闹钟)
//EEPROM数据更新标志
EXT_ FLAG_union EEP_NEW_FLAGS; //EEPROM数据更新标志寄存器 联合
#define EEPROM_NEW_FLAGS EEP_NEW_FLAGS.allBits //EEPROM数据更新标志寄存器
#define EEPROM_EN_FLAG EEP_NEW_FLAGS.oneBit.b0 //EEPROM格式化标志(0XA5=已经格式化,否则=未格式化)
#define DISP_LINE_ADJ_FLAG EEP_NEW_FLAGS.oneBit.b1 //显示列计数器 角度校正值(0~179) (用于校正盘面角度)
#define TIMER_H_FLAG EEP_NEW_FLAGS.oneBit.b2 //闹钟"时"(0~23)
#define TIMER_M_FLAG EEP_NEW_FLAGS.oneBit.b3 //闹钟"分"(0~59)
#define SP_M_FLAG EEP_NEW_FLAGS.oneBit.b4 //闹铃时间设置值(0~99分)(说明:0=关闭闹钟)
EXT_ bit EEPROM_ERR_FLAG; //EPPROM写失败标志
EXT_ tU08 EEPROM_ERR_JSQ; //EPPROM写失败计数器
//--------------------------------------------------------
//插入文件包
//--------------------------------------------------------
#include "main.h" //主程序 头文件
#include "display.h" //显示处理 头文件
#include "filter.h" //滤波处理 头文件
#include "temperature.h" //温度处理 头文件
#include "Serial.h" //串行通讯 头文件
#include "Interruption.h" //中断服务 头文件
#include "eeprom.h" //内部eeprom与FLASH操作 头文件
//--------------------------------------------------------
//
// THE END
//
// 版权所有:程序匠人(引用者请保留原作者姓名)
//
//--------------------------------------------------------
文章评论(0条评论)
登录后参与讨论