📄 ring.lst
字号:
C51 COMPILER V6.23a RING 05/11/2004 18:03:27 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE RING
OBJECT MODULE PLACED IN ring.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ring.c LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*********************************************************
2 ** FILE:
3 ** ring.c
4 ** DESCRIPTION:
5 ** Realize the main function of ring buffer operation.
6 ** NOTES:
7 ** Copyright(c) 2002 Luo Cheng , All rights reserved.
8 ** HISTORY:
9 ** Version Date Author
10 ** 1.0 2002/10/17 Luo Cheng
11 **
12 *********************************************************/
13
14 #include "types.h"
15 #include "ring.h"
16 #include <string.h>
17
18 /*********************************************************
19 NAME:
20 void ring_init(ring_struc *ring,Uint32 *pmem,Uint16 max_element_number,Uint8 max_block_number)
21 PURPOSE:
22 Initialize the structure of ring;
23 PARAMETERS:
24 ring: The pointer for a ring structure;
25 pmem: The pointer of a memory that will be used by ring;
26 max_element_number: The max element number in a block;
27 max_block_number: The max block number of ring;
28 RETURN:
29 None;
30 *********************************************************/
31 void
32 ring_init(ring_struc *ring,void *pmem,Uint16 max_element_number,Uint8 max_block_number)
33 {
34 1 ring->pbuffer=pmem;
35 1 ring->read=ring->write=ring->count=0;
36 1 ring->element_number=max_element_number;
37 1 ring->block_number=max_block_number;
38 1 }
39 /*********************************************************
40 NAME:
41 Bool ring_read(ring_struc *ring, void *pmem);
42 PURPOSE:
43 Read a block from ring;
44 PARAMETERS:
45 ring: The pointer for a ring structure;
46 pmem: The pointer of a memory that will be used to store the data;
47 RETURN:
48 1: TRUE;
49 0: FALSE;
50 *********************************************************/
51 Bool
52 ring_read(ring_struc *ring,void *pmem)
53 {
54 1 if(ring->count == 0)
55 1 return FALSE;
C51 COMPILER V6.23a RING 05/11/2004 18:03:27 PAGE 2
56 1 memcpy(pmem,ring->pbuffer+ring->read,ring->element_number);
57 1 ring->read += ring->element_number;
58 1 if(ring->read > ring->block_number * ring->element_number)
59 1 ring->read = 0;
60 1 ring->count-=1;
61 1 return TRUE;
62 1 }
63
64 /*********************************************************
65 NAME:
66 Bool ring_write(ring_struc *ring,void *pmem);
67 PURPOSE:
68 Write data to the ring;
69 PARAMETERS:
70 ring: The pointer for a ring structure;
71 pmem: The pointer of a memory that stored data;
72 RETURN:
73 1: TRUE;
74 0: FALSE;
75 *********************************************************/
76 Bool
77 ring_write(ring_struc *ring,void *pmem)
78 {
79 1 if(ring->count == ring->block_number)
80 1 return FALSE;
81 1 memcpy(ring->pbuffer+ring->write*ring->element_number,pmem,ring->element_number);
82 1 ring->write += ring->element_number;
83 1 if(ring->write > ring->block_number * ring->element_number)
84 1 ring->write = 0;
85 1 ring->count+=1;
86 1 return TRUE;
87 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 756 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 21
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -