/***********************************************************************************************
* Copyright (c) 2005,深圳威利姆
* All rights reserved.
*
* 文件名称:uart.h
*
* 通信程序头文件定义
*-----------------------------------------------------------------------------------------------
* 当前版本:2.1.2
* 作 者:陈兆红
* 完成日期:2005年10月15日
*************************************************************************************************/
#ifndef __UART_H
#define __UART_H
//---------------------------------------------------------------------------------------------
static uchar cmd,High_Byte,Low_Byte; // 通信使用的命令
static uint Si;
//extern uchar DuiBiDuCardNo[5];
//---------------------------------------------------------------------------------------------
//pd2 as 485 cntr
#define RS485_SEND SET_BIT(DDRD,2); SET_BIT(PORTD,2)
#define RS485_RECEIVE SET_BIT(DDRD,2); CLR_BIT(PORTD,2)
//---------------------------------------------------------------------------------------------
//通信前缀和广播地址
//-----------------------------------------
#define STX 0xA2 /* */
#define ETX 0xA3 /* 结束通讯 */
#define AnsSTX 0xB2 /* */
#define AnsETX 0xB3 /* 结束通讯 */
#define DATA_NULL 0xED
#define StatusComm 0xBB /* */
#define StatusMainLoop 0x00
//---------------------------------------------------------------------------------------------
// 通信命令定义
//------------------------------------------------------------------------------------------
#define STX 0xA2 /* 数据包开始标志 */
#define ETX 0xA3 /* 数据包结束标志 */
//------------------------------------------------------------------------------------------
#define PC_SET_ID 0x21 /* 设置地址:02xx2101xxRRRR03 */
#define PC_SET_TIME 0x23 /* 下载标准时间 :02xx2306xxxxxxxxxxxxRRRR03 */
#define PC_Num_TimeSeg 0x22 /* 下载开门时间 , 默认为32段 */
#define PC_TimeSeg 0x24 /* 下载开门时间 , 默认为32段 */
#define PC_DOWN_REPAIR_CARDNO 0x25 /* 下载维修卡号,目前用来调整对比度 */
#define PC_UP_REPAIR 0x26 /* 上传维修卡卡号 ,not used */
#define PC_DOWN_TIME_NUM 0x2A /* 设置刷卡时段数量时间 */
#define PC_DOWN_TIME_1_8 0x2B /* 设置刷卡的时间段 1~8 */
#define PC_UP_TIME_1_8 0x2C /* 上传刷卡的时间段 1~8 */
#define PC_DOWN_BAI_NUM 0x2E /* 设置白名单数量,同时擦除白名单区域 */
#define PC_DOWN_BAI_CARDNO 0x2F /* 下载白名单的卡号 */
#define PC_READ_BAI_CARDNO 0x30 /* 读白名单的卡号 */
#define PC_SET_CARD_TIME 0x31 /* 设置读卡间隔时间 */
#define PC_UP_PERIOD 0x32 /* 上传刷卡间隔时间,not used */
#define PC_UP_TIME 0x33 /* 上传系统时间 */
#define PC_UP_DOOR_DELAY 0x35 /* 上传门继电器延时时间 ,not used */
#define PC_UP_COUNT 0x37 /* 上传考勤记录数量 */
#define PC_UP_DATA 0x38 /* 上传考勤记录 ,每10 条一组 */
#define PC_DEL_DATA 0x39 /* 删除所有考勤记录 */
#define PC_Set_Baud 0x3A /* 设置系统通信的波特率 */
#define PC_KAOQIN_ONLY 0x3C /* 设置为仅仅作考勤机标志 */
#define PC_DOWN_SENTENCE 0x3D /* 下载用户的欢迎信息 ,或公司名称 */
#define PC_SET_HEI_NUM 0x3E /* 下载黑名单数量,同时擦除黑名单区域 */
#define PC_SET_HEI_CARDNO 0x3F /* 下载黑名单卡号 */
#define PC_READ_HEI_CARDNO 0x40 /* 下载黑名单用户卡号(5字节,均为卡号,和下载用户号相比,只是少了姓名的编码;按从小到大顺序下载)*/
#define PC_DOWN_SERIAL_NO 0x41 /* 下载产品序列号 */
#define PC_UP_SERIAL_NO 0x42 /* 上传产品序列号 */
#define PC_GetTimeSegNum 0x43 /* 下载开门时间 , 默认为32段 */
#define PC_GetTimeSeg 0x44 /* 下载开门时间 , 默认为32段 */
#define PC_END_UART 0x49 /* 结束通信 */
//==================================================================================================
//---------------------------------------------------------------------------------------------
// 通信命令定义结束
//---------------------------------------------------------------------------------------------
//#define RXB8 1
//#define TXB8 0
//#define OVR 3
//#define FE 4
//#define UDRE 5
//#define RXC 7
//---------------------------------------------------------------------------------------------
// 通信错误代码定义
//---------------------------------------------------------------------------------------------
#define FRAMING_ERROR ( 1<<FE )
#define DATA_OVERRUN ( 1<<OVR )
#define DATA_REGISTER_EMPTY ( 1<<UDRE )
#define RX_COMPLETE ( 1<<RXC )
//---------------------------------------------------------------------------------------------
// 外部函数声明
//---------------------------------------------------------------------------------------------
extern void lcd_clr1();
extern void GetCurRecLen();
extern void SaveCurRecLen();
extern void Read_Card_No();
extern void Read_hei_card();
//extern uchar RcvLongByte();
extern uchar RcvByte(uchar);
extern void disp_connect();
extern void lcd_clr();
extern void DelaypMs(uint);
extern void DelaypUs(uint);
extern void Disp_gs();
extern void DispCurTime();
extern void ClrLine(uchar,uchar);
extern void Disp_Controller_ID();
extern void SetTime(uchar *);
extern void Dsp_Time();
extern void Disp_Welcom();
extern void GetTime();
extern void read_flash(ulong addr,uchar chip_cs,uchar n,uchar *p);
extern void Sector_Erase(ulong address,uchar chipcs);
extern void AAI_Write(uchar,ulong,uchar *,uchar);
//---------------------------------------------------------------------------------------------
//函数声明
//---------------------------------------------------------------------------------------------
uchar Byte2To1Byte(uchar,uchar);
uchar HighOfByte(uchar uByte);
uchar LowOfByte(uchar uByte);
void EnableUART(uint Baud);
void DisableUART();
void Uart_Send_RxBuf(uchar uCommand,uchar uLen);
void Uart_Send( uchar *data, uchar num );
void DisWatchDogTimer();
void AnswerAddrToPC();
void Uart_OK(uchar);
void Uart_Error(uchar,uchar);
void info_pro(); // 该程序在该文件的串口中断程序中使用到
//---------------------------------------------------------------------------------------------
// 错误代码定义
//---------------------------------------------------------------------------------------------
#define ERR_CRC 0x9B
#define ERR_ETX 0x9C
#define ERR_FLOW 0x9D
#define ERR_LEN 0x9E
#define ERR_W_BAI 0x84
#define ERR_W_HEI 0x85
#define ERR_TimeSeg 0x83
//=============================================================================================
#endif
//=============================================================================================