📄 link.h
字号:
//一些地址定义
//#define DPRAM_BAS_ADDR 0x8000 //栈数据的首地址
#define DPRAM_TRANS_LIST_ADDR 0x100
#define DPRAM_DATA_ADDR 0x500
#define DPRAM_BASE_ADDR 0x8000
//一些常用标志的定义
#define uchar unsigned char
#define uint unsigned int
#define TRUE_485 0xaa
#define FALSE_485 0x55
//一些载取位的定义
#define INOUT_BIT 0x01
#define REGION_FLAG_BIT 0x80
#define STATION_SPEED_BIT 0x40
#define STATION_ROUT_NUM_BIT 0x38
#define STATION_WORD_LEN_BIT 0x06
#define IO_IN 0x00
#define IO_OUT 0x01
#define LINK_ERR 0x00
#define PARAM_COM 0x01
#define EXA_COM 0x02
#define EXIST_NEXT_REGION 0x00
#define LAST_REGION 0x80
//一些键的定义
//sbit HW_WATCHDOG_TRIGGER = P3^5;sbit HW_WATCHDOG_TRIGGER = P3^5;
#define RESERVED 0X0
#define CONFIRM 0X02
/********************************************************/
//波特率定义
#define RESERVED 0X0
//系统状态定义
#define RESET_STATE 0x01
#define WAIT_PRM_STATE 0x02
#define PARAM_STATE 0x03
#define WORK_STATE 0x04
#define EX_STATE 0x05
/*#define OPERATION_STATE 0x01
#define STOP_STATE 0x02
#define CLEAR_STATE 0x03
#define FREEZE_STATE 0x04
#define SYNC_STATE 0x05
#define CONFIRM_STATE 0x06
#define DATA_EX_STATE 0x07
#define DIAG_STATE 0x08
#define PRM_STATE_485 0x09
#define FIND_STATE 0x55
#define LOAD_CH_STATE 0x0c
#define LONG_FRAME_H_STATE 0x0d
#define LONG_FRAME_END_STATE 0x0e
#define LONG_FRAME_MID_STATE 0x0f
#define SA_FRAME_STATE 0x10
#define EX_FC_STATE 0x11
#define UNLOAD_CH_STATE 0x12
#define LOAD_MODEL_STATE 0x13
#define UNLOAD_MODEL_STATE 0x14
#define ASK_CONFIRM_STATE 0x15
/********************************************************/
struct LINK_DATA_BUF
{
uchar interface_flag; //接口标志
uchar* p_prm_tol_ptr; //参数化数据指针
uchar* p_out_tol_ptr; //输出数据指针
uchar* p_in_tol_ptr; //输入数据指针
uchar* p_diag_tol_ptr; //诊断信息指针
};
typedef struct DPRAM485 //dpram 数据结构
{
uchar station_num; //sys从站的总数
uchar pc_com; //link 给Sys_master命令
uchar pc_com_sig; //link 给Sys_master命令旗语
uchar mcu_com; //sys_master给link的命令
uchar mcu_com_sig; //上行命令旗语
uchar uc_hand_shake; //握手标志
uchar uc_link485_life_counter; //sys_master 的存活标志
uchar uc_link_life_counter; //link的存活标志
uchar pc_s_sig_list [124]; //pc的互斥标志
uchar mcu_s_sig_list [124]; //mcu的互斥标志
struct TRANS_LIST //从站数据传输列表
{
uchar station_addr; //站地址
uint base_addr; //站数据的基地址
uchar prm_len; //参数化数据的长度
uchar out_len; //输出数据的长度
uchar in_len; //输入数据的长度
uchar diag_len; //诊断数据的长度
}trans_list[124];
uchar datum [2960]; //数据区
};
/************************************************************/
struct SLA_DATA_CONSTRUCT //主站及从站数据结构
{
uchar station_addr; //从站类型
/******从站数据结构*******/
uchar* prm_ptr; //配置数据起始地址
uchar* out_ptr; //从站输出数据的起始地址
uchar* in_ptr; //从站输入数据的起始地址
uchar* diag_ptr; //从站诊断数据的起始地址
uchar prm_len; //配置数据长度
uchar out_len; //从站输出字节数
uchar in_len; //从站输入字节数
uchar diag_len; //从站输出字节数
};
void update_data(struct LINK_DATA_BUF *p_link_data_buf);
void update_sys_command(void);//命令处理
void update_prm_data(struct LINK_DATA_BUF *p_link_data_buf);//更新参数化区
void update_in_data(void);//更新输入数据区
void update_out_data(void); //更新输出数据区
void update_diag_data(void);
void shake_hand(struct LINK_DATA_BUF *p_link_data_buf);
void cal_dpram_addr(struct LINK_DATA_BUF *p_link_data_buf);
void init_master_station(void); //初始化主站
void clear_dpram(void);
uint byte_reverse(uint convert_word);
void delay(uint delay_count);
void system_state_deal(uchar *p_link_data_buf); //处理系统命令(即系统的状态机处理)
void write_command(uchar uc_link_command);
uchar juge_command();
uchar link485_life_juge(void);
void EE_wren_cmd(void);
void EE_wrdi_cmd(void);
void EE_wrsr_cmd(uchar uc_reset_time);
uchar EE_rdsr_cmd (void);
void EE_byte_write(uchar uc_EE_data,uint ui_EE_address);
uchar EE_byte_read(uint ui_EE_address);
void EE_rst_wdog (void) ;
void EE_wip_poll(void);
void EE_out_byte(uchar uc_EE_data) ;
void dpram_interface_prog_init(void);
uchar EE_input_byte(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -