|
相关连接: [匠人DIY旋转时钟 系列文章 (连载中…)]
//-------------------------------------------------------- // 项目: // 模块:公共头文件 // 说明:常量/变量/IO口/定义 // 本工程中所有模块文件都枰帽疚募?lt;BR>// 设计:程序匠人(版权所有,引用者请保留原作者姓名) //-------------------------------------------------------- /* 版本说明: common.H 2005-07-23
*/ //--------------------------------------------------------
//-------------------------------------------------------- //插入文件包 //-------------------------------------------------------- #i nclude <pic.h> //--------------------------------------------------------
#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写失败计数器
//-------------------------------------------------------- //插入文件包 //-------------------------------------------------------- #i nclude "main.h" //主程序 头文件 #i nclude "display.h" //显示处理 头文件 #i nclude "filter.h" //滤波处理 头文件 #i nclude "temperature.h" //温度处理 头文件 #i nclude "Serial.h" //串行通讯 头文件 #i nclude "Interruption.h" //中断服务 头文件 #i nclude "eeprom.h" //内部eeprom与FLASH操作 头文件
//-------------------------------------------------------- // // THE END // // 版权所有:程序匠人(引用者请保留原作者姓名) // //--------------------------------------------------------
|