⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_useserialbuff.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module RD_UseSerialBuff.c
                        .area text(rom, con, rel)
 0000                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
                        .area data(ram, con, rel)
 0000                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0000           _UARTRxBuffHead:
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0002           _UARTRxBuffTail:
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0004           _UARTRxBuffCounter:
 0004                   .blkb 2
                        .area idata
 0004 0000              .word 0
                        .area data(ram, con, rel)
 0006                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0006           _UARTTxBuffHead:
 0006                   .blkb 2
                        .area idata
 0006 0000              .word 0
                        .area data(ram, con, rel)
 0008                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0008           _UARTTxBuffTail:
 0008                   .blkb 2
                        .area idata
 0008 0000              .word 0
                        .area data(ram, con, rel)
 000A                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 000A           _UARTTxBuffCounter:
 000A                   .blkb 2
                        .area idata
 000A 0000              .word 0
                        .area data(ram, con, rel)
 000C                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 000C           _g_bIfSerialTransmitCompleted::
 000C                   .blkb 1
                        .area idata
 000C 01                .byte 1
                        .area data(ram, con, rel)
 000D                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
                        .area text(rom, con, rel)
 0000                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseSerialBuff.c
 0000                   .dbfunc e UARTgetDataFromRxBuff _UARTgetDataFromRxBuff fc
 0000           ;           Data -> R16,R17
                        .even
 0000           _UARTgetDataFromRxBuff::
 0000                   .dbline -1
 0000                   .dbline 139
 0000           ; /***********************************************************
 0000           ; *   函数库说明:串行通讯缓冲区处理函数库                   *
 0000           ; *   版本:      v1.00                                      *
 0000           ; *   作者:      王卓然                                     *
 0000           ; *   创建日期:  2006年4月24日                              *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [支 持 库]                                              *
 0000           ; *   支持库名称:RD_MacroAndConst.h                         *
 0000           ; *   需要版本:  v0.01 &abv                                 *
 0000           ; *   函数库说明:系统常用宏定义库                           *
 0000           ; *                                                          *
 0000           ; *   支持库名称:RD_UseSerialBuff.h                         *
 0000           ; *   需要版本:  -----                                      *
 0000           ; *   声明库说明:串行通讯缓冲区处理声明库                   *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本更新]                                              *
 0000           ; *   修改:      王卓然                                     *
 0000           ; *   修改日期:  2006年5月20日                              *
 0000           ; *   版本:      v0.31                                      *
 0000           ; *                                                          *
 0000           ; *   修改:      王卓然                                     *
 0000           ; *   修改日期:  2007年3月1日                               *
 0000           ; *   版本:      v0.40                                      *
 0000           ; *                                                          *
 0000           ; *   修改:      王卓然                                     *
 0000           ; *   修改日期:  2007年3月2日                               *
 0000           ; *   版本:      v1.00                                      *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本历史]                                              *
 0000           ; *       v0.30  该版本提供了最基本的环形队列缓冲区操作函数。*
 0000           ; *       v0.31  增加了调用该函数时候的宏说明,可以选择需要  *
 0000           ; *              提供的缓冲区功能。                          *
 0000           ; *       v0.40  增加了串口发送进程。增加了原子操作。        *
 0000           ; *       v1.00  针对新规范进行了修改,增加自动收发进程。    *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [使用说明]                                              *
 0000           ; *           1、通过SERIAL_RX_BUFF_SIZE来设定接收缓冲区的大 *
 0000           ; *              小;通过SERIAL_TX_BUFF_SIZE来设定发送缓冲区 *
 0000           ; *              的大小。                                    *
 0000           ; *           2、通过定义_USE_SERIAL_RX_BUFF来选择添加一个接 *
 0000           ; *              收缓冲区;通过定义_USE_SERIAL_TX_BUFF来添加 *
 0000           ; *              一个发送缓冲区。                            *
 0000           ; *           3、在取数的时候,有时候要考虑屏蔽中断,否则会  *
 0000           ; *              出现不可预知的后果。                        *
 0000           ; *           4、可以通过宏_USE_SERIAL_TX_TRANSMITTER_PROC在 *
 0000           ; *              使用发送缓冲时,使用自动发送进程。并需要定  *
 0000           ; *              义宏UDR_PORT来指定发送端口、也需要将宏      *
 0000           ; *              SERIAL_INSERT_USART_TX_ISR_CODE插入到发送完 *
 0000           ; *              成中断处理程序中。                          *
 0000           ; *           5、使用宏SERIAL_ENABLE_WRITE定义额外的发送使能 *
 0000           ; *              代码。例如485总线的发送使能等。             *
 0000           ; *           6、使用宏SERIAL_DISABLE_WRITE定义额外的发送使  *
 0000           ; *              能关闭代码。例如485总线发送使能的关闭。     *
 0000           ; ***********************************************************/
 0000           ; 
 0000           ; /********************
 0000           ; * 头 文 件 配 置 区 *
 0000           ; ********************/
 0000           ; # include "LIB_Config.h"
 0000           ; # include "RD_MacroAndConst.h"
 0000           ; # include "RD_UseSerialBuff.h"
 0000           ; 
 0000           ; /********************
 0000           ; *   系 统 宏 定 义  *
 0000           ; ********************/
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   常 数 宏 定 义  *
 0000           ; *------------------*/
 0000           ; #ifndef SERIAL_RX_BUFF_SIZE
 0000           ;     # define SERIAL_RX_BUFF_SIZE 32
 0000           ; #endif
 0000           ; #ifndef SERIAL_TX_BUFF_SIZE
 0000           ;     # define SERIAL_TX_BUFF_SIZE 32
 0000           ; #endif
 0000           ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
 0000           ;     #ifndef UDR_PORT
 0000           ;         # error Need for UDR_PORT!
 0000           ;     #endif
 0000           ; 
 0000           ;     #ifndef SERIAL_ENABLE_WRITE
 0000           ;         # define SERIAL_ENABLE_WRITE
 0000           ;     #endif
 0000           ; 
 0000           ;     #ifndef SERIAL_DISABLE_WRITE
 0000           ;         # define SERIAL_DISABLE_WRITE
 0000           ;     #endif
 0000           ; #endif
 0000           ; /********************
 0000           ; *   函 数 声 明 区  *
 0000           ; ********************/
 0000           ; #ifdef _USE_SERIAL_RX_BUFF
 0000           ; BOOL UARTaddDataToRxBuff(uint8 Data);
 0000           ; BOOL UARTgetDataFromRxBuff(uint8 *Data);
 0000           ; #endif
 0000           ; 
 0000           ; #ifdef _USE_SERIAL_TX_BUFF
 0000           ; BOOL UARTaddDataToTxBuff(uint8 Data);
 0000           ; BOOL UARTgetDataFromTxBuff(uint8 *Data);
 0000           ;     #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
 0000           ; BOOL PROC_Serial_Transmitter(void);
 0000           ;     #endif
 0000           ; #endif
 0000           ; 
 0000           ; /********************
 0000           ; *   模块变量定义区  *
 0000           ; ********************/
 0000           ; #ifdef _USE_SERIAL_RX_BUFF
 0000           ; static uint8  UARTRxBuff[SERIAL_RX_BUFF_SIZE];
 0000           ; static unsigned int  UARTRxBuffHead = 0;
 0000           ; static unsigned int  UARTRxBuffTail = 0;
 0000           ; static unsigned int  UARTRxBuffCounter = 0;
 0000           ; #endif
 0000           ; 
 0000           ; #ifdef _USE_SERIAL_TX_BUFF
 0000           ; static uint8  UARTTxBuff[SERIAL_TX_BUFF_SIZE];
 0000           ; static unsigned int  UARTTxBuffHead = 0;
 0000           ; static unsigned int  UARTTxBuffTail = 0;
 0000           ; static unsigned int  UARTTxBuffCounter = 0;
 0000           ; #endif
 0000           ;  
 0000           ; /********************
 0000           ; *   全局变量定义区  *
 0000           ; ********************/
 0000           ; #ifdef _USE_SERIAL_TX_BUFF
 0000           ;     #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
 0000           ; BOOL g_bIfSerialTransmitCompleted = TRUE;
 0000           ;     #endif
 0000           ; #endif
 0000           ; 
 0000           ; /***********************************************************
 0000           ; *   函数说明:接收缓冲区取值函数                           *
 0000           ; *   输入:    存储取出数据地址的指针                       *
 0000           ; *   输出:    取值是否成功                                 *
 0000           ; *   调用函数:无                                           *
 0000           ; ***********************************************************/
 0000           ; #ifdef _USE_SERIAL_RX_BUFF
 0000           ; BOOL UARTgetDataFromRxBuff(uint8  *Data)
 0000           ; {
 0000                   .dbline 140
 0000           ;     SAFE_CODE_PERFORMANCE
 0000 F894              cli
 0002                   .dbline 140
 0002 20900200          lds R2,_UARTRxBuffTail
 0006 30900300          lds R3,_UARTRxBuffTail+1
 000A 40900000          lds R4,_UARTRxBuffHead
 000E 50900100          lds R5,_UARTRxBuffHead+1
 0012 4214              cp R4,R2
 0014 5304              cpc R5,R3
 0016 59F4              brne L2
 0018           X0:
 0018 20900400          lds R2,_UARTRxBuffCounter
 001C 30900500          lds R3,_UARTRxBuffCounter+1
 0020 2220              tst R2
 0022 29F4              brne L2
 0024 3320              tst R3
 0026 19F4              brne L2
 0028           X1:
 0028                   .dbline 140
 0028                   .dbline 140
 0028 7894              sei
 002A                   .dbline 140
 002A 0027              clr R16
 002C 2BC0              xjmp L1
 002E           L2:
 002E                   .dbline 140
 002E 20900000          lds R2,_UARTRxBuffHead
 0032 30900100          lds R3,_UARTRxBuffHead+1
 0036 C101              movw R24,R2
 0038 0196              adiw R24,1
 003A 90930100          sts _UARTRxBuffHead+1,R25
 003E 80930000          sts _UARTRxBuffHead,R24
 0042 80E0              ldi R24,<_UARTRxBuff
 0044 90E0              ldi R25,>_UARTRxBuff
 0046 F101              movw R30,R2
 0048 E80F              add R30,R24
 004A F91F              adc R31,R25
 004C 2080              ldd R2,z+0
 004E F801              movw R30,R16
 0050 2082              std z+0,R2
 0052                   .dbline 140
 0052 80910400          lds R24,_UARTRxBuffCounter
 0056 90910500          lds R25,_UARTRxBuffCounter+1
 005A 0197              sbiw R24,1
 005C 90930500          sts _UARTRxBuffCounter+1,R25
 0060 80930400          sts _UARTRxBuffCounter,R24
 0064                   .dbline 140
 0064 80910000          lds R24,_UARTRxBuffHead
 0068 90910100          lds R25,_UARTRxBuffHead+1
 006C 8032              cpi R24,32
 006E E0E0              ldi R30,0
 0070 9E07              cpc R25,R30
 0072 31F4              brne L4
 0074           X2:
 0074                   .dbline 140
 0074                   .dbline 140
 0074 2224              clr R2
 0076 3324              clr R3
 0078 30920100          sts _UARTRxBuffHead+1,R3
 007C 20920000          sts _UARTRxBuffHead,R2
 0080                   .dbline 140
 0080           L4:
 0080                   .dbline 140
 0080                   .dbline 140
 0080 7894              sei
 0082                   .dbline 157
 0082           ;     (
 0082           ;         if ((UARTRxBuffHead == UARTRxBuffTail) 
 0082           ;          && (UARTRxBuffCounter == 0))
 0082           ;         {
 0082           ;             SEI();
 0082           ;             return FALSE;
 0082           ;         }
 0082           ;         (*Data) = UARTRxBuff[UARTRxBuffHead++];
 0082           ;     
 0082           ;         UARTRxBuffCounter--;
 0082           ;     
 0082           ;         if (UARTRxBuffHead == SERIAL_RX_BUFF_SIZE)
 0082           ;         {
 0082           ;             UARTRxBuffHead = 0;
 0082           ;         }
 0082           ;     )         
 0082           ;     return TRUE;
 0082 01E0              ldi R16,1
 0084                   .dbline -2
 0084           L1:
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbsym r Data 16 pc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -