📄 gm8125.h
字号:
/********************************************************************************
* 文件:GM8125.H
* 功能:串口一扩五芯片GM8125头文件
* 作者:宋智宁
* 日期:2005.3.7
* 备注:晶振fosc = 11.0592MHz,暂不支持波特率115200bps
* 中断接收函数见中断函数库uart.c/uart51.c
*********************************************************************************/
/********************************************************************************
* 单通道模式:MS=1, CHANNEL=STADD2~0/SRADD2~0 (001~101), 母口与子通道直接相连
* 多通道模式:MS=0, CHANNEL=STADD2~0/SRADD2~0 (001~101), 母口波特率=子口波特率*6
* 写命令字模式:MS=0, STADD2~0=000
* 读命令字模式:MS=1, STADD2~0=000, SRADD2~0=000
* 命令字格式:
* --------------------------------------
* | * | * | * | * | FL | BR2 | BR1 | BR0 |
* --------------------------------------
* FL--帧格式(1--11bit/frame, 0--10bit/frame)
* BR2~BR0--多通道模式波特率设置
* 000----子串口1200bps, 母串口7200bps
* 001----子串口2400bps, 母串口14400bps
* 010----子串口4800bps, 母串口28800bps
* 011----子串口9600bps, 母串口57600bps
* 100----子串口19200bps, 母串口115200bps
*
* 注意:以上为GM8125晶振为12MHz时算的值
* 计算公式为: 子串口波特率=1200*(2^x)*f/12
*********************************************************************************/
//--常量定义--------------------------------------
#define MAX_BUF_LEN 12 //每通道8字节的接收缓冲区
//--数据端口和控制端口定义-------------------------
#ifdef C51_MX //P89C669
extern unsigned char far UartCtrl _at_ 0x380000;
extern unsigned char far UartState _at_ 0x280000;
#else //AT89S52
extern unsigned char xdata UartCtrl _at_ 0x3800;
extern unsigned char xdata UartState _at_ 0x2800;
#endif
//--接收缓冲区结构定义-----------------------------
typedef struct{
uint8 Ch[5][MAX_BUF_LEN]; //各通道接收缓冲区
uint8 Len[5]; //有效数据长度
}GM8125BUF;
//--外部变量声明-----------------------------------
extern GM8125BUF SerBuf;
/******************************************************************************
* 名称:DelayXms(uint16 x)
* 功能:延时X毫秒子程序
* 入口参数:uint16 x--x ms
* 出口参数:无
* 说明:CPU--669(6时钟周期)
* 晶振--11.0592MHz
******************************************************************************/
extern void DelayXms(uint16 x);
/******************************************************************************
* 名称:GM8125_Init(uint8 frame, uint16 baud)
* 功能:GM8125初始化子程序
* 入口参数:uint8 frame--帧格式(0--10bit/f,1--11bit/f)
* uint16 baud--母串口波特率(多通道模式)
* 出口参数:无
* 说明:串口初始化,用定时器1/波特率发生器, 上电时调用
* 复位后GM8125的帧格式为11bit, 母串口波特率为7200bps
* 晶振fosc = 11.0592MHz,暂不支持波特率115200bps
******************************************************************************/
extern void GM8125_Init(uint8 frame, uint16 baud);
/******************************************************************************
* 名称:GM8125_ChgBaud(uint8 frame, uint16 baud)
* 功能:改变GM8125母串口波特率和帧格式子程序
* 入口参数:uint8 frame--帧格式(0--10bit/f,1--11bit/f)
* uint16 baud--母串口波特率(多通道模式)
* 出口参数:无
* 说明:改变GM8125后,同时改变主机的波特率(多通道模式)
* 最多写3次控制字,若失败则返回-1
* 晶振fosc = 11.0592MHz,暂不支持波特率115200bps
******************************************************************************/
extern int8 GM8125_ChgBaud(uint8 frame, uint16 baud);
/******************************************************************************
* 名称:GM8125_Send(uint8 mode, uint8 channel, uint8 buf[], uint8 len)
* 功能:GM8125数据发送子程序
* 入口参数:uint8 mode--工作模式(0--单通道模式, 1--多通道模式)
* uint8 channel--通道号(1~5)
* uint8 buf[]--数据指针
* uint8 len--数据长度
* 出口参数:无
* 说明:
******************************************************************************/
extern void GM8125_Send(uint8 mode, uint8 channel, uint8 buf[], uint8 len);
/******************************************************************************
* 名称:GM8125_Rev(GM8125BUF *buffer, uint8 len)
* 功能:GM8125数据接收子程序
* 入口参数:GM8125BUF *buffer--接收缓冲区的结构指针
* uint8 len--数据长度
* 出口参数:int8 res--1表示正常接收, -1表示缓冲区溢出
* 说明:用等待接收方式
******************************************************************************/
extern int8 GM8125_Rev(GM8125BUF *buffer, uint8 len);
/******************************************************************************
* 名称:GM8125_Byte_Rev(uint8 dat)
* 功能:GM8125数据接收处理子程序(供中断服务程序调用)
* 入口参数:uint8 dat--接收的数据
* 出口参数:无
* 说明:供中断服务程序调用
* 使用全局变量:GM8125BUF SerBuf--串口接收缓冲区的结构
******************************************************************************/
extern void GM8125_Byte_Rev(uint8 dat);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -