📄 message.h
字号:
/************************************************************************************/
/* G7000 V3 消息列表管理 */
/* MCU 型号: Philips P89C668 */
/* 时钟频率: 11.0592 MHz 6 CLOCK */
/* 开发环境: Keil C51 V7.06a */
/* 开发日期: 2004.02.25 */
/* 程序编写: BaoFang 鲍方 */
/* 系统版本: V3.00 */
/************************************************************************************/
#ifdef uchar
#define READYDEF_uchar 1 /*宏uchar已定义*/
#else
#define uchar unsigned char
#endif
//注意这种队列结构使得CAN_ZMAX+1个数组存储CAN_ZMAX个队列数据元
//因为头尾指针相等有两种可能,所以不允许存满!
#define MsgList_ZMAX CAN_ZMAX+1
//定义消息的结构
typedef struct
{
uchar ucNodeAdd; //消息的节点地址
uchar ucTurnN; //消息节点的进入时段
uchar ucTurnOld; //消息节点的退出时段
} MsgStruct;
//定义消息列表的结构
typedef struct
{
uchar ucListN; //当前列表中消息数目。
uchar ucListFirstP; //当前列表中第一个消息索引。
uchar ucListLastP; //当前列表中最后一个消息索引。
MsgStruct List[MsgList_ZMAX]; //当前消息列表的数组
} MsgListStruct;
extern uchar MsgListN; //消息列表的消息数,替代MsgList.ucListN,方便外部程序的引用。
//为防止同时调用Msg而设置的信号量!
extern bit MsgIsUse; //0:无;1:使用中。
/*
************************************************************************************************************************
**函数原型: void List_Init();
**参数说明: 初始化清空当前列表。
**返回值:
**
**参数说明:
************************************************************************************************************************
*/
extern void MsgListInit();
/*
************************************************************************************************************************
**函数原型: uchar MsgListAdd(uchar NodeAddress,uchar NodeTurn,uchar NodeTurnOld);
**参数说明: 加入一个消息。(FIFO)
**返回值:
** 返回0xFF表示队列满!
返回0表示成功!
**
**参数说明: uchar NodeAddress 消息的节点地址
uchar NodeTurn 消息节点的进入时段
uchar NodeTurnOld 消息节点的退出时段
注意!!这个是可重入的函数
内部利用了信号量来防止同时操作队列
************************************************************************************************************************
*/
extern uchar MsgListAdd(uchar NodeAddress,uchar NodeTurn,uchar NodeTurnOld); //reentrant ;
/*
************************************************************************************************************************
**函数原型: uchar MsgListGet(MsgStruct *MsgGet);
**参数说明: 取出一条消息。(FIFO)
**返回值:
** 返回0xFF表示失败,消息空。
返回0表示成功。
**
**参数说明: MsgStruct *MsgGet 取出的消息指针
************************************************************************************************************************
*/
extern uchar MsgListGet(MsgStruct *MsgGet);
#ifndef READYDEF_uchar
#undef uchar
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -