📄 queue.lis
字号:
.module queue.c
.area text(rom, con, rel)
0000 .dbfile D:\桌面\mp3\queue\queue.c
0000 .dbfunc e InitQueue _InitQueue fV
0000 .dbstruct 0 9 .1
0000 .dbfield 0 front c
0000 .dbfield 1 rear c
0000 .dbfield 2 count c
0000 .dbfield 3 data pc
0000 .dbfield 5 queuesize c
0000 .dbfield 6 errorcode c
0000 .dbfield 7 status c
0000 .dbfield 8 memo c
0000 .dbend
0000 ; Q -> R16,R17
.even
0000 _InitQueue::
0000 .dbline -1
0000 .dbline 53
0000 ; /*********************************************************************************************************
0000 ; ** QUEUE队列头文件
0000 ; ** (c) Copyright 2006-2008, limaokui
0000 ; ** All Rights Reserved
0000 ; **
0000 ; ** V1.0.0
0000 ; **
0000 ; **
0000 ; **--------------文件信息--------------------------------------------------------------------------------
0000 ; **文 件 名:queue.h
0000 ; **创 建 人: 李茂奎
0000 ; **最后修改日期: 2006年8月29日
0000 ; **描 述:
0000 ; **
0000 ; **--------------历史版本信息----------------------------------------------------------------------------
0000 ; ** 创建人: 李茂奎
0000 ; ** 版 本: V1.00
0000 ; ** 日 期: 2006年8月29日
0000 ; ** 描 述: 原始版本
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; ** 修改人: 李茂奎
0000 ; ** 版 本:
0000 ; ** 日 期:
0000 ; ** 描 述:
0000 ; **
0000 ; **--------------当前版本修订------------------------------------------------------------------------------
0000 ; ** 修改人: 李茂奎
0000 ; ** 日 期: 2006年8月29日
0000 ; ** 描 述:
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; *********************************************************************************************************
0000 ; **使用说明:在定义队列时请定义一个静态数组,并将此数组传递给队列的data,并将数据长度传递给queuesize
0000 ; #define TWI_SEND_DATA_BUFFER_SIZE 100
0000 ; static uint8 Twi_SendData[TWI_SEND_DATA_BUFFER_SIZE];
0000 ; CirQueue Twi_SendBuffer={0,0,0,Twi_SendData,TWI_SEND_DATA_BUFFER_SIZE,QUEUE_OK};
0000 ;
0000 ; *********************************************************************************************************/
0000 ; #include "config.h"
0000 ; /*********************************************************************************************************
0000 ; ** 函数名称:InitQueue
0000 ; ** 功能描述:初始化队列
0000 ; ** 输 入:
0000 ; ** 输 出:
0000 ; ** 全局变量:
0000 ; ** 调用模块:
0000 ; ** 说明:
0000 ; ** 注意:
0000 ; ** 日 期: 2006年8月29日
0000 ; ********************************************************************************************************/
0000 ; void InitQueue(CirQueue * Q)
0000 ; {
0000 .dbline 55
0000 ; //CLI();
0000 ; Q->front=Q->rear=0;
0000 2224 clr R2
0002 F801 movw R30,R16
0004 2182 std z+1,R2
0006 F801 movw R30,R16
0008 2082 std z+0,R2
000A .dbline 56
000A ; Q->count=0;
000A 2282 std z+2,R2
000C .dbline 57
000C ; Q->errorcode= QUEUE_OK;
000C F801 movw R30,R16
000E 2682 std z+6,R2
0010 .dbline 58
0010 ; Q->memo=0;
0010 F801 movw R30,R16
0012 2086 std z+8,R2
0014 .dbline 59
0014 ; Q->status=TWI_DATA_FREE;
0014 F801 movw R30,R16
0016 2782 std z+7,R2
0018 .dbline -2
0018 L7:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r Q 16 pS[.1]
001A .dbend
001A .dbfunc e EnQueue _EnQueue fV
001A ; x -> R22
001A ; Q -> R20,R21
.even
001A _EnQueue::
001A 0E940000 xcall push_gset2
001E 622F mov R22,R18
0020 A801 movw R20,R16
0022 .dbline -1
0022 .dbline 105
0022 ; //SEI();
0022 ; }
0022 ; /*********************************************************************************************************
0022 ; ** 函数名称:EmptyQueue(CirQueue *Q)
0022 ; ** 功能描述:判断队列是否为空
0022 ; ** 输 入:
0022 ; ** 输 出:
0022 ; ** 全局变量:
0022 ; ** 调用模块:
0022 ; ** 说明:
0022 ; ** 注意:
0022 ; ** 日 期: 2006年8月29日
0022 ; ********************************************************************************************************
0022 ; uint8 EmptyQueue(CirQueue * Q)
0022 ; {
0022 ; return Q->count==0;
0022 ; }
0022 ; /*********************************************************************************************************
0022 ; ** 函数名称:FullQueue(CirQueue *Q)
0022 ; ** 功能描述:判断队列是否为满
0022 ; ** 输 入:
0022 ; ** 输 出:
0022 ; ** 全局变量:
0022 ; ** 调用模块:
0022 ; ** 说明:
0022 ; ** 注意:
0022 ; ** 日 期: 2006年8月29日
0022 ; ********************************************************************************************************
0022 ;
0022 ; uint8 FullQueue(CirQueue * Q)
0022 ; {
0022 ; return (Q->count == Q->queuesize);
0022 ; }
0022 ; /*********************************************************************************************************
0022 ; ** 函数名称:EnQueue
0022 ; ** 功能描述:入队
0022 ; ** 输 入:
0022 ; ** 输 出:
0022 ; ** 全局变量:
0022 ; ** 调用模块:
0022 ; ** 说明:
0022 ; ** 注意:
0022 ; ** 日 期: 2006年8月29日
0022 ; ********************************************************************************************************/
0022 ; void EnQueue(CirQueue * Q,uint8 x)
0022 ; {
0022 .dbline 106
0022 ; if(FullQueue(Q))
0022 FA01 movw R30,R20
0024 2580 ldd R2,z+5
0026 FA01 movw R30,R20
0028 3280 ldd R3,z+2
002A 3214 cp R3,R2
002C 41F4 brne L9
002E .dbline 107
002E ; {
002E .dbline 108
002E ; Q->errorcode=QUEUE_OVERFLOW;
002E 81E0 ldi R24,1
0030 FA01 movw R30,R20
0032 8683 std z+6,R24
0034 .dbline 109
0034 ; Q->count=Q->queuesize;
0034 FA01 movw R30,R20
0036 2580 ldd R2,z+5
0038 FA01 movw R30,R20
003A 2282 std z+2,R2
003C .dbline 110
003C ; return;
003C 1EC0 xjmp L8
003E L9:
003E .dbline 113
003E ; }
003E ; //CLI();
003E ; Q->count++;
003E CA01 movw R24,R20
0040 0296 adiw R24,2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -