?? 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 + -