极光大侠的个人空间 https://bbs.21ic.com/?1390774 [收藏] [复制] [RSS]

日志

基于消息驱动单片机程序设计思想(二)之消息存取模块设计 ...

已有 376 次阅读2015-2-10 11:36 |个人分类:软件设计|系统分类:单片机

        // 快放假了,手头上也没有太多的工作要做,所以,想写写东西,算是对这一年来在单片机程序设计方面的工作进行下总结吧。
        首先看下面这两个函数(发送消息、接收消息)
        #define        MSG_DEEP        16
        u8 MsgPool[MSG_DEEP];
        u8 inptr = 0,outptr = 0;
//发送消息
        void PutMsg(u8 msg)
        {
                IE0_bit.EA = 0;
                MsgPool[inptr] = msg;
                inptr++; 
                if(inptr == MSG_DEEP)
                        inptr = 0;
                IE0_bit.EA = 1;
       
//接收消息
        u8 GetMsg(void)
        {
                u8 msg;
                IE0_bit.EA = 0;
                if (outptr == inptr)
                {
                        IE0_bit.EA = 1;
                        return NO_MSG;
                }       
                msg = MsgPool[outptr];
                outptr++;
                if(outptr == MSG_DEEP)
                        outptr = 0;
                IE0_bit.EA = 1;
                return msg;
        }
        //无论是发送消息指针,还是接收消息指针,都是始终指向下一个消息。消息池的深度为16个。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)