📄 control.c
字号:
#include <reg52.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include "subddc.h"
// 0 1 2 3 4 5 6
// delay_time0,dleay_time1,set_temper,temper_repair,start_bit_temper_repair,defrost_delay_time0,defrost_delay_time1,
// 0 1 2
// defrost_time0,defrost_time1,defrost_temper,
// 多长时间内收不到数据,错误指示灯亮(10秒)
#define NORECE_TIME_MAX 10
#define TEMPER_MIN 102
#define TEMPER_MAX 214
#define HUMIDITY_MIN 15
#define HUMIDITY_MAX 100
#define TRAN_WAIT 15
// 三次发送的总时间不能超过100MS
#define TRAN_ALL_TIME 100
#define TRAN_AGAIN_MAX 30
// 接收到数据进行回送时,延迟的时间不超过10MS
#define TRAN_DATA 3
#define INPUT_COUNT_MAX 7
// 其它的输出延迟 0.1s
#define OUTPUT_COUNT_MAX 100
// 压缩机输出延迟 15s
#define COMPRESSOR_DELAY_MAX 150
#define TEMPER_OFFSET 2
//
#define START_RUN_MAX 2
// 水泵和风扇延迟5S后判断两个设备是否确认开启
#define START_CHECK_MAX 5
// 以秒为单位
#define STOP_DELAY_MAX 15
// 压缩机延迟5S后 判断压缩机开启标志
#define YSJBH_DELAY_MAX 5
#define TEMPER_HIGH_MAX 60
#define TEMPER_LOW_MIN 1
#define delay_time0 ram_wr24c02[0]
#define delay_time1 ram_wr24c02[1]
#define set_temper ram_wr24c02[2]
#define temper_repair ram_wr24c02[3]
#define start_temper ram_wr24c02[4]
#define defrost_delay_time0 ram_wr24c02[5]
#define defrost_delay_time1 ram_wr24c02[6]
#define defrost_time0 ram_wr24c02[7]
#define defrost_time1 ram_wr24c02[8]
#define defrost_temper ram_wr24c02[9]
#define last_day ram_wr24c02[10]
//--------------------------------------------
unsigned char code temper_table[]={
// -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
103,106,108,111,114,117,119,122,125,128,130,133,136,139,141,144,147,150,152,155,158,
// 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
161,163,166,169,172,174,177,180,183,185,188,191,194,196,199,202,205,207,210,213
};
unsigned char code humidity_table[]={
0x00,0x00,
} ;
// this is write and read 24c02 and 8563 sub
extern void Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
extern void Write24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
// this is for communication checksum
extern unsigned char crc8(unsigned char idata *ptr,unsigned char len);
extern unsigned int read1543(unsigned char byte);
// this is for key_scan and key_deal
unsigned char bdata status_ram0,status_ram1;
unsigned char bdata protect_ram0,protect_ram1;
// define IO port
sbit work_bit=status_ram0^0; // 下位机正处于工作状态
sbit lj_bit=status_ram1^0; // 冷机的标志位
sbit sb_bit=status_ram1^1; // 水泵的标志位
sbit f1_bit=status_ram1^2; // 阀1的标志位
sbit f2_bit=status_ram1^3; // 阀2的标志位
sbit heat_bit=status_ram1^4; // 加热标志
sbit defrost_bit=status_ram1^5; // 除霜标志
sbit fan_bit=status_ram1^6; // 风扇标志
// define protect port
sbit qsbh_bit=protect_ram0^0;
sbit gybh_bit=protect_ram0^1;
sbit dybh_bit=protect_ram0^2;
sbit yybh_bit=protect_ram0^3;
sbit qxbh_bit=protect_ram0^4;
sbit ysjbh_bit=protect_ram0^5;
sbit fjbh_bit=protect_ram0^6;
sbit sbbh_bit=protect_ram0^7;
bit sec_bit; // 此标志位专为通讯而设置
bit write_bit_24c02;
bit rece_bit_success; // 下位机接收的数据正确
bit rece_bit_fail ; // 下位机接受的数据是错误
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -