📄 serial.h
字号:
//================ SERIAL.H ========================
// 时间:2005-03-28...2005-03-31
// 说明:定义操作SERIAL的头文件,对应工程文件SERIAL
// 用T1(T2)定时器,模式1,查询方式
//======================================================
//SERIAL.PRJ专用
#include "Public.h"
#include "Delay_s.h"
#include "w78e52.h"
#ifndef _SERIAL_H_
#define _SERIAL_H_
//本模块的引脚定义,已经根据实际情况更改!
sbit HD_TEST_LED =P4^1; //=0,熄灭, =1,点亮
//引脚的定义已经根据键盘的外壳标注更改 20050721
sbit HD_RS485_1_CTL =P1^4; //=1,发送 =0,接收
sbit HD_RS485_2_CTL =P1^3; //=1,发送 =0,接收
//操作代码宏的定义
//这里需要根据实际的硬件逻辑设置
#define CODE_HD_TEST_LED_ON HD_TEST_LED =1
#define CODE_HD_TEST_LED_OFF HD_TEST_LED =0
#define CODE_RS485_1_RECV_EN HD_RS485_1_CTL =0 //控制RS485_1的接收或者发送
#define CODE_RS485_1_SEND_EN HD_RS485_1_CTL =1
#define CODE_RS485_2_RECV_EN HD_RS485_2_CTL =0 //控制RS485_2的接收或者发送
#define CODE_RS485_2_SEND_EN HD_RS485_2_CTL =1
//常数的定义
#define CONST_SERIAL_PCON_MASK 0x3f //SMOD0=0,SCON.7=SM0
#define CONST_SERIAL_T2CON_SETS 0x34 //SMOD0=0->SCON.7=SM0,RCLK=TCLK=TR2=1
//SM0 SM1 =01 8位可变
// =11 9位可变
//SM1 =0 RB8 =0即可使RI=1
// =1 RB8 =1方可使RI=1
#define CONST_SERIAL_SCON_SETS 0x50 //8位数据方式,接收数据SM2=0,允许接收RI=1, 发送地址TB8=0,没有地址自动识别
#define CONST_SERIAL_SCON_SETS_B11 0xd0 //9位数据方式,接收数据SM2=0,允许接收RI=1, 发送地址TB8=0,没有地址自动识别
#define CONST_BAUT_RATE 9600 //参数出错时速率的缺省设置值
#define CONST_SERIAL_RECV_BYTE_DEALY_MAX 10 //接收一个字节的最大等待时间,单位ms,最低速率1200pbs=8ms/byte
#define CONST_SERIAL_SEND_BYTE_DEALY_MAX 10 //发送一个字节的最大等待时间,单位ms,最低速率1200pbs=8ms/byte
#define CONST_SERIAL_RECV_STR_LEN_MAX 32 //接收一个字节串的最大长度
//B01协议的PTZ命令结构
struct _b01_ptz_command_1{
uchar used_7_ever_0: 1; //常量0
uchar unused: 2;
uchar iris_open_close: 2; //00:IRIS STOP 01:IRIS CLOSE10:IRIS OPEN11:保持光圈当前动作
uchar used_2_ever_0: 1; //常量0
uchar focus_near_far: 2; //00:FOCUS STOP 01:FOCUS CLOSE10:FOCUS OPEN11:保持变焦当前动作
};
struct _b01_ptz_command_2{
uchar used_7_ever_0: 1; //常量0
uchar zoomwide_tele: 2; //00:ZOOM STOP 01:ZOOM TELE10:ZOOM WIDE11:保持变倍当前动作
uchar tilt_down_up: 2; //00:TILT STOP 01:TILT UP10:TILT DOWN11:保持上下当前动作
uchar pan_left_right: 2; //00:PAN STOP 01:PAN RIGHT10:PAN LEFT11:保持水平当前动作
uchar cmd_ptz_extend: 1; //PTZ命令时为0,扩展命令时为1
};
struct _b01_focus_zoom_speed{
uchar focus_speed: 4;
uchar zoom_speed: 4;
};
//B01协议的数据报结构
struct _data_buff_of_b01{
uchar head;
uchar recv_addr;
uchar send_addr;
uchar cmd1;
uchar cmd2;
uchar pan_motor_speed;
uchar tilt_motor_speed;
uchar focus_zoom_speed;
uchar data_4;
uchar tail;
uchar check_sum;
};
//以上仅仅作查看使用!
//库函数的定义说明
void serial_init_set_with_11bit(uint bt);
void serial_init_set(uint bt);
bit serial_recv_byte(uchar *rb);
void serial_send_byte(uchar sb);
uchar serial_recv_str(uchar *str, uchar rlen, uchar first_delay);
void serial_send_str(uchar *str, uchar slen);
//uchar serial_get_lrc(uchar *str, uchar slen);
#endif
// End Of SERIAL.PRJ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -