📄 modbus.h
字号:
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include <modbus.h>
//*****************************类型定义******************************************
typedef unsigned char uchar;
typedef signed char schar;
typedef unsigned int uint;
typedef signed int sint;
typedef unsigned long ulong;
typedef signed long slong;
typedef float fb;
typedef double db;
//******************************主程序循环事件***********************************
#define SYSTEM_EVENT 0x01
#define MAIN_EVENT 0x02
#define DISPLAY_EVENT 0x03
#define KEY_EVENT 0x04
#define UART_EVENT 0x05
#define ALARM_EVENT 0x06
#define HANDLE_EVENT 0x07
//****************************LCD循环事件******************************************
#define MUNE_LCD 0x01
#define CHANNEL_LCD 0x02
#define ALARM_LCD 0x03
#define LANG_LCD 0x04
#define CHECK_LCD 0x05
#define SYSTEM_LCD 0x06
#define LOCK_LCD 0x07
#define INPUT_TYPE 0x08
#define INPUT_UNIT 0x09
#define PROG_DOWN 0x0a
#define PROG_UP 0x0b
#define SIGNAL_HANDLE 0x0c
#define ALARM_TYPE 0x10
#define ALARM_UP 0x11
#define UP_RETURN 0x12
#define ALARM_DOWN 0x13
#define DOWN_RETURN 0x14
#define MANY_CALI 0x20
#define ONE_CALI 0x21
#define TWO_CALI 0x22
#define THREE_CALI 0x23
#define FOUR_CALI 0x24
#define FIVE_CALI 0x25
#define SAX_CALI 0x26
#define SEVEN_CALI 0x27
#define EIGHT_CALI 0x28
#define NINE_CALI 0x29
#define PASSWORD 0x30
#define DIVCE_ADDR 0x31
#define UART_BAUD 0x32
#define CHANGE_TIME 0x33
#define UART_PROC 0x34
#define SHORT_ALARM 0x35
#define DOT_LCD 0x0d
#define OPEN_LOCK 0x50
#define TIMER_HIGHT 0xfc // 定时器1MS
#define TIMER_LOW 0x17
char xdata LcmPort _at_ 0x2000; // 液晶使能
char xdata HandlePort _at_ 0x4000; // 采集使能
char xdata ExternPort _at_ 0x6000; // 外部输入使能
char xdata LedPort _at_ 0x8000; // LED输出使能
char xdata LcdPort _at_ 0xc000; // 都不使能对液晶操作
char xdata Cs_Port _at_ 0xf800; // LCD全使能
char xdata Cs1_Port _at_ 0xe800; // CS1 使能
char xdata Cs2_Port _at_ 0xf000; // CS2 使能
#define LcmEnable LcmPort
#define HandleEnable HandlePort
#define ExternEnable ExternPort
#define LedEnable LedPort
#define LcdEnable LcdPort
#define Cs_Enable Cs_Port
#define Cs1_Enable Cs1_Port
#define Cs2_Enable Cs2_Port
//****************************LCD状态定义*********************************************
#define DisplayOn 0x3f // 显示开
#define DisplayOff 0x3e // 显示关
#define YsetAdress 0x40 // Y地址设定
#define XsetAdress 0xb8 // X地址设定
#define LineAdress 0xc0 // 行地址设定
#define ReadBusy 0x80 // 读数据忙
#define ReadDispOff 0x20 // 读显示关
#define ReadReset 0x10 // 读复位
#define ReadStatus 0x80 // 读状态位
#define WriteData 0x10 // 写数据
#define ReadData 0x90 // 读数据
//****************************LCD的操作********************************************
#define LCD_CS2_BIT 0x01 // CS2 使能
#define LCD_CS1_BIT 0x02 // CS1 使能
#define LCD_RW_BIT 0x80 // R/W 使能
#define LCD_DI_BIT 0x10 // D/I 使能
#define READ_STATUS 0x80 // 读状态
#define READ_DATA 0x90 // 读显示数据
#define WRITE_DATA 0x10 // 写显示数据
#define WRITE_CMD 0x00 // 写指令
#define LCD_READ_STATUS LcmEnable = READ_STATUS // 读状态
#define LCD_READ_DATA LcmEnable = READ_DATA // 读显示数据
#define LCD_WRITE_DATA LcmEnable = WRITE_DATA // 写显示数据
#define LCD_WRITE_CMD LcmEnable = WRITE_CMD // 写指令
#define SET_LCD_DATA LcmEnable|=LCD_DI_BIT //选择数据端口
#define SET_LCD_CMD LcmEnable&=~LCD_DI_BIT //选择指令端口
#define SET_LCD_READ LcmEnable|=LCD_RW_BIT //读模式
#define SET_LCD_WRITE LcmEnable&=~LCD_RW_BIT //写模式
#define SET_LCD_CS2 LcmEnable|=LCD_CS2_BIT //右屏选择使能
#define CLEAR_LCD_CS2 LcmEnable&=~LCD_CS2_BIT //右屏选择禁止
#define SET_LCD_CS1 LcmEnable|=LCD_CS1_BIT //左屏选择使能
#define CLEAR_LCD_CS1 LcmEnable&=~LCD_CS1_BIT //左屏选择禁止
#define DISABLE_LCD LcmEnable&=~(LCD_CS2_BIT|LCD_CS1_BIT)
#define HADLE_CLK 0x08
#define HANDLE_CHANGE 0x04
#define SEND 0x10
#define AL_L 0x20
#define AL_H 0x40
#define GZ_A 0x80
#define ADC 0x01
#define ALARM_L HandleEnable |=AL_L
#define NOALARM_L HandleEnable &=~AL_L
#define ALARM_H HandleEnable |=AL_H
#define NOALARM_H HandleEnable &=~AL_H
#define ALARM_A HandleEnable |=GZ_A
#define NOALARM_A HandleEnable &=~GZ_A
#define SEND_485 HandleEnable |=SEND
#define RECEIVE_485 HandleEnable &=~SEND
#define ADC_DATA_START HandleEnable &=~ADC
#define ADC_DATA_STOP HandleEnable |=ADC
#define CMD 0
#define DATA 1
#define ALL_DATA 480
#define FIRST_DATA 30
//************************************按键处理*************************************
#define MUTE 1 // 消音键
#define DOT 2 // 小数位
#define LEFT 3 // 左移
#define RIGHT 4 // 右移
#define UP 5 // 上移
#define DOWN 6 // 下移
#define SET 7 // 设置
#define FLASH_ON 8 // 消闪
#define FLASH_MUTE 9 // 消音
#define FLASH_LED 10 // 消灯
#define SET_ENTER 11 // 进入菜单
#define NO 0 // 无键按下
#define LCD_TIME_OUT 2000 //忙超时
sbit SDA = P3^5; // 对24C65操作
sbit SCL = P3^4;
//**********************************时间变量***********************
bit count_10ms;
bit count_1s;
uchar xdata counter0;
uchar xdata counter1;
//**********************************串口处理变量************************
bit common;
uchar xdata sendPosi;
uchar xdata sendCount;
uint xdata checkoutError; // ==2 偶校验错
uchar xdata receCount; //接收到的字节个数
uchar xdata receTimeOut; //接收超时
uchar xdata sendBuf[FIRST_DATA];
uchar xdata receBuf[FIRST_DATA];
uchar xdata xjb_buf[480]; //16路循检表的全部数据
uchar xdata localAddr ; //单片机控制板的地址
//**************************************************ADC VAR
unsigned char adc_flag;
unsigned char counter;
unsigned char adc_data_L;
unsigned char adc_data_H;
unsigned int max_data[2];
//**************************************************LCD VAR
bit lcd_lock;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -