16c554 的头文件
//------------------------------------------------------------------------------
#ifndef AT16C554H
#define AT16C554H //------------------------------------------------------------------------------ #include "timer.h"
#include "AT78E58BP.H"
#include "System.h"
#include "Asyn_422.H"
#include <intrins.h>
#include <string.h>
//------------------------------------------------------------------------------
// 常量定义
//------------------------------------------------------------------------------
#define PortNumber 4
#define SERIAL_STU_BUSY 0x01 // 串行口忙标志位,1为忙,0为空闲
#define SERIAL_STU_FREE 0x00
//------------------------------------------------------------------------------
// 波特率定义
//------------------------------------------------------------------------------
#define CY18432M
#ifdef CY18432M
#define B50 0x0900 // DLM 为高八位,DLL 为低八位
#define B300 0x0180
#define B600 0x00c0
#define B1200 0x0060
#define B2400 0x0030
#define B4800 0x0018
#define B9600 0x000c
#define B19200 0x0006
#define B38400 0x0003
#define B57600 0x0002
#define B115200 0x0001
#else
#define B200 0x0900 // DLM 为高八位,DLL 为低八位
#define B1200 0x0180
#define B2400 0x00c0
#define B4800 0x0060
#define B9600 0x0030
#define B19200 0x0018
#define B38400 0x000c
#define B76800 0x0006
#define B153600 0x0003
#define B230400 0x0002
#define B460800 0x0001
#endif
//------------------------------------------------------------------------------
// 16C554 内部寄存器定义
//------------------------------------------------------------------------------
#define RHR 0X00 // 接受数据保持寄存器, 只读
#define THR 0X00 // 发送数据保持寄存器, 只写
#define IER 0X01 // 中断允许寄存器, 只写
#define FCR 0X02 // FIFO 控制寄存器, 只写
#define ISR 0X02 // 中断状态寄存器, 只读
#define LCR 0X03 // 线控制寄存器, 只写
#define MCR 0X04 // MODEM 控制寄存器, 只写
#define LSR 0X05 // 线状态寄存器, 只读
#define MSR 0X06 // MODEM 状态寄存器, 只读
#define SPR 0X07 // 中间结果暂存寄存器, 可读写
#define DLL 0X00 // 波特率发生分频因子低八位,LCR bit7 为1, 可读写
#define DLM 0X01 // 波特率发生分频因子高八位,LCR bit7 为1, 可读写 #define FIFO_EN 0X01 // FIFO 使能命令字
#define FIFO_TRI_LEVEL_1 0X00 // FIFO 触发级别为1个字节
#define FIFO_TRI_LEVEL_4 0X40 // FIFO 触发级别为4个字节
#define FIFO_TRI_LEVEL_8 0X80 // FIFO 触发级别为8个字节
#define FIFO_TRI_LEVEL_14 0XC0 // FIFO 触发级别为14个字节
#define FIFO_DMA_MODE 0X08 // FIFO DMA 模式选择命令字
#define FIFO_CLEAR_RCVR 0X02 // 清除接受FIFO 中的内容数据
#define FIFO_CLEAR_XMIT 0X04 // 清除发送FIFO 中的内容数据 #define IER_MODEM_INT 0X08 // MODEM 状态中断屏蔽位
#define IER_RECEIVELINE_INT 0X04 // 接受线状态中断屏蔽位
#define IER_TRANSMITHOLD_INT 0X02 // 发送保持寄存器中断屏蔽位
#define IER_RECEIVEHOLD_INT 0X01 // 接受保持寄存器中断屏蔽位 #define LCR_WORD_LEN5 0X00 // 数据位长度为5
#define LCR_WORD_LEN6 0X01 // 数据位长度为6
#define LCR_WORD_LEN7 0X02 // 数据位长度为7
#define LCR_WORD_LEN8 0X03 // 数据位长度为8
#define LCR_STOP_LEN1 0X00 // 停止位长度为1
#define LCR_STOP_LEN2 0X04 // 停止位长度为2 注意: 当数据位为5时停止位为1.5位
#define LCR_PARITY_EN 0X08 // 校验位使能控制位
#define LCR_PARITY_EVEN 0X10 // EVEN偶校验设置位,默任情况下为奇校验ODD
#define LCR_PARITY_SET 0X20 // 奇偶校验强制设置位
#define LCR_OUT_BREAK 0X40 // TX输出BREAK信号
#define LCR_DIV_EN 0X80 // 允许发送波特率
#define LCR_DIV_Dis 0X00 // 禁止发送波特率
#define MCR_INTX_EN 0X08 // 中断引脚输出允许控制命令字
#define MCR_INTX_Dis 0X00 // 中断引脚输出禁止控制命令字 //------------------------------------------------------------------------------
// 16C554 中断事件定义
//------------------------------------------------------------------------------
#define EVENT_LSR 0X06 // LSR 状态寄存器事件
#define EVENT_LSR_RECEIVE 0X01 // 数据接受保存到保存寄存器或FIFO中
#define EVENT_LSR_OVERRUN 0X02 // 接受移位积存器中的数据发生覆盖错误事件
#define EVENT_LSR_PARITY 0X04 // 接受数据校验错误事件
#define EVENT_LSR_FRAMING 0X08 // 接受数据发生帧错误
#define EVENT_LSR_BREAK 0X10 // 接受到一个BREAK 事件
#define EVENT_LSR_TRANHOLDEMPTY 0X20 // 发送保持寄存器或FIFO 空事件允许装载数据
#define EVENT_LSR_TRANSMITEMPTY 0x40 // 发送器空事件
#define EVENT_LSR_FIFOERROR 0X80 // FIFO 中有错误数据
#define EVENT_RXRDY 0X04 // 数据接受就绪中断事件
#define EVENT_RXRDY_TIMEOUT 0X0C // 接受数据超时中断事件
#define EVENT_TXRDY 0X02 // 数据发送就绪中断事件
#define EVENT_MSR 0X00 // MODEM 状态中断事件
#define FIFO_SIZE 16 //-------------------------------------------------------------------------------------
// 16C554 各端口RAM映射
//-------------------------------------------------------------------------------------
#define STARTADDR_SERIAL1 0X0000 // 串行口通道1起始地址
#define STARTADDR_SERIAL2 0X0008 // 串行口通道2起始地址
#define STARTADDR_SERIAL3 0X0010 // 串行口通道3起始地址
#define STARTADDR_SERIAL4 0X0018 // 串行口通道4起始地址 //-------------------------------------------------------------------------------------
// 其它常量
//-------------------------------------------------------------------------------------
#define Init_16c554_Count 10
#define FREE_RESET 0
#define RESET 1
//-------------------------------------------------------------------------------------
// 多串口相关的数据结构
//-------------------------------------------------------------------------------------
typedef struct st_CommHandle
{
Uint RAMAddress_Map;
Uchar CommReceiveBuffer[CommMaxReceiveBuffer]; //串口接收缓冲区
Uchar CommSendBuffer[CommMaxSendBuffer]; //串口发送缓冲区
Uchar CommReceive_Head; //串口接收缓冲区头指针
Uchar CommReceive_Trail; //串口接收缓冲区尾指针
Uchar CommSend_Head; //串口发送缓冲区头指针
Uchar CommSend_Trail; //串口发送缓冲区尾指针
Uchar Comm_Stu; //串行口发送器忙标志数组
Uchar Comm_Priority; //串行口接受缓冲区数据处理优先级别数组
};//end struct typedef struct st_CommHandle TCommHandle;
//-------------------------------------------------------------------------------------
// 多串口16C554 驱动程序公用函数
//-------------------------------------------------------------------------------------
extern bool Init_16c554(void);
extern void Port_open(Uchar PortID,Uint Baud);
extern void Port_close(Uchar PortID);
extern int Port_Receive(Uchar PortID,void *Buffer,int Count);
extern int Port_Send(Uchar PortID,void *Buffer,int Count);
//-------------------------------------------------------------------------------------
#endif
//-----
16c554 的头文件的更多相关文章
- 【C】.h头文件的重复包含问题
.h头文件存在的意义就是封装,可以方便多个.c源文件使用,但要防止.h头文件被同一个.c源文件多次包含. 例如, io.h文件 #ifndef _IO_H_ #define _IO_H_ #defin ...
- C/C++头文件区别
在从C迁移到C++时,引用的头文件经常忘记是C的还是C++特有的 1. *.h limits.h ctype.h 2. c* climits cctype [结尾不含.h] 3. 其余的都属于C+ ...
- iOS开发中遇到的错误整理 - 集成第三方框架时,编译后XXX头文件找不到
iOS编译报错-XXX头文件找不到 错误出现的情况: 自己在继承第三方的SDK的时候,明明导入了头文件,但是系统报错,提示头文件找不到 解决方法 既然系统找不到,给他个具体路径,继续找去! 路径就填写 ...
- 使用powershell批量添加Keil和IAR的头文件路径
在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径.当工程结构非常复杂时,文件夹的数量就非常多,特 ...
- C/C++头文件使用 #ifndef #define #endif 的原因
背景 在编译的时候,出现"redefine"的错误,最后检查才发现对应的头文件没有写正确的预编译信息: #ifndef _HeadFileName_H #define _HeadF ...
- Qt - 错误总结 - 在自定义类头文件中添加Q_OBJECT 编译时报错(undefined reference to ‘vtable for xxThread)
错误提示:在添加的QThread子类头文件添加Q_OBJECT时,编译程序,出现"undefined reference to 'vtable for xxThread'"错误提示 ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- 配置apue的头文件apue.h和unp的头文件anp.h
配置apue的头文件apue.h和unp的头文件anp.h 如果要使用gcc -g 来生成可调试文件一定要修改Make.defines.linux文件中的CFLAGS变量 修改为:CFLAGS=-an ...
- c/c++头文件_string
string, cstring, string.h 一.string头文件 主要包含一些字符串转换的函数 // sto* NARROW CONVERSIONS// sto* WIDE CONVERSI ...
随机推荐
- 【iOS开发-59】LOL案例:单组tabView、alertView样式、实现监听,以及用reloadData数据刷新
案例效果: (1)先在storyboard中拖拽出一个tableView,然后下面用代码. --tableView继承自scrollView.所以自然有滚动的特性 --最基本的还是数据转模型.以及对c ...
- 定义查询构建器IFeatureLayerDefinition
在宗地出图,需要实现,只显示某一户人的地块.在ArcMap里,有个定义查询,可只显示过滤后的要素. 在代码中,也比较好实现,使用IFeatureLayerDefinition接口即可. IFeatur ...
- 编程算法 - 从1到n整数中1出现的次数 代码(C)
从1到n整数中1出现的次数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整数n, 求从1到n这n个整数的十进制表示中1出现的次数. ...
- 单选框input:radio
单选框 CreateTime--2017年5月15日11:40:04 Author:Marydon 四.单选框 (一)语法 <input type="radio"/> ...
- LeetCode 110 Balanced Binary Tree(平衡二叉树)(*)
翻译 给定一个二叉树,决定它是否是高度平衡的. (高度是名词不是形容词-- 对于这个问题.一个高度平衡二叉树被定义为: 这棵树的每一个节点的两个子树的深度差不能超过1. 原文 Given a bina ...
- Linux-软件包管理-rpm命令管理-安装-卸载
mount 确认光盘是否挂载 mount /dev/cdrom /mnt/cdrom 将设备名称/dev/cdrom安装到/mnt/cdrom挂载点下面 mount 查看光盘是否已经挂载 (ro表示只 ...
- pycharm 控制台字体背景颜色设定让你美到爆
还在为你控制台字体颜色不入眼而发愁吗? 在某些特殊时刻想要改变下字体的颜色却无从下手而发愁吗? 那你就进来看一看,瞧一瞧,之需看2分钟,花2分钟理解,花3分钟练练手就能让你的控制能字体炫酷起来! 一. ...
- Python多线程1:threading
threading模块提供了高级别的线程接口,基于低级别的_thread模块实现. 模块基本方法 该模块定了的方法例如以下: threading.active_count() 返回当前 ...
- 解决CentOS7 无法启动mysql 的解决办法
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方 ...
- Python Unicode 转换 字符串
estimate_price = "\u00a340\u00a0\u00a0-\u00a060" sold_price = "Sold for \u00a345" ...