⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.h

📁 是KC51下的已经测试通过的X5045的c程序!
💻 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 + -