bi大痣 发表于 2014-4-8 22:39:41

求助,初学fifo,原理都懂了,看不懂程序

初学fifo,原理大体明白了,但是看很多相关程序,还是看不透彻,请问目前该怎么做

gongxd 发表于 2014-4-9 07:04:16

看数据结构 这本书

bi大痣 发表于 2014-4-9 22:02:39

gongxd 发表于 2014-4-9 07:04
看数据结构 这本书

是谁写的啊?

wzd5230 发表于 2014-4-9 22:08:22

fifo = first in first out,只是一个缓冲区(可以是fifo芯片,也可以是ram中开辟的一段buffer),其读取规律是先存入,先取出。just so so

tragedy 发表于 2014-4-10 08:32:38

严蔚敏的,考研那会用的是 大话数据结构 ,觉得讲的比严蔚敏的好太多了,不过也有很多人喷。

shjw 发表于 2014-4-10 09:34:05

我简单的程序都这么用应该很好理解。有BUG的,我程序简单当然是不会出问题的
typedef struct
{
unsigned char cBuff;
unsigned char in,out,count;
}queue1;


void InitQueue(queue1 *pQ)
{
    pQ->in= 0;
    pQ->out = 0;
    pQ->count = 0;
}

unsigned char InQueue1(queue1 *pQ,unsigned char cInData)
{
GIE = 0;/* disable interrupts */
if (pQ->count == MaxSize)
{
    GIE = 1;/* enable interrupts */
    return 0;
}
pQ->cBuff = cInData;
pQ->in %= MaxSize;
pQ->count++;
GIE = 1;/* enable interrupts */
return 1;
}

unsigned char OutQueue1(queue1 *pQ)
{
unsigned char ret;
GIE = 0;/* disable interrupts */
if (pQ->count==0)
{
    GIE = 1;/* enable interrupts */       
    return(0xff);   
}
pQ->count--;
ret = pQ->cBuff;
pQ->out++;
pQ->out %= MaxSize;
GIE = 1;/* enable interrupts */       
return(ret);
}
当然我也没有其他的用法,我的都是小项目{:smile:}

HolyFox 发表于 2014-4-10 09:50:03

上面吃下面拉~~~~~~~~~~{:shutup:}
页: [1]
查看完整版本: 求助,初学fifo,原理都懂了,看不懂程序